谷粒粒
读完需要
速读仅需 2 分钟
毕业以来,我的财务一直通过记账的方式进行归集。早期通过 GoodNotes 进行手动记账,好处是可以手动批注。后来迁移到了 Notion,原因是发现需要记录的东西很固定,每次复制旧的内容到新日期,接着修改数值即可。而且,使用 Notion 能够很方便地按类型进行归类和计算,较为方便看到每个月的动态状况。
但是后来,随着投资标的的分散,每次在券商上算账都要耗费不少的心力。需要计算杠杆、货币转换。这让我逐渐厌倦。想知道"投资账户一共有多少资金",需要打开富途和雪盈两个 App 分别计算再合并。随着最近大模型的进一步发展,是时候用 Claude 写个 in-house 的仓位管理工具了。不少人 vibe coding 的第一步,都是搞些什么记账、todo 和番茄闹钟,这回也落回这三大件上了。
做 in-house 的仓位管理,目的是让 AI 能直接碰到持仓数据,进行交互分析和建议。包含四个方面的功能:分析持仓、计算收益、策略回测,以及最终的自动下单。手动记账时代,数据在 Notion 表格里,大模型要获取需要转个弯。现在,券商数据直接接入之后,它才有可能真正帮你干活。
本次文章,就给大家介绍下我用 Codex + Claude 接入富途 API 和雪盈 API 的过程和最终效果。当然,如果你是长桥、老虎或者别的什么,也是类似的道理,只要券商开放了 API,都可以做到。
1
设计目标
动手之前先明确目标和约束,我的目标有四个,逐层递进,分别是获取持仓、收益计算、策略回测以及下单信号。
自动获取持仓。 两个券商的持仓、资金、成交记录,每天自动同步到一个本地账本里,统一折算成人民币。不用再打开两个 App 分头算,一条命令就能回答"我一共有多少钱、钱都在哪些标的上、目前的杠杆情况如何"。
绩效回顾与归因。 能汇总看近 1 个月、半年、一年的区间收益。赚了多少、亏了多少、钱分布在哪些市场和币种里、不同资产的总体占比情况是多少。这个事之前手动基本无法做到,只能分平台看出赚了还是亏了。要对照沪深三百、纳斯达克这类计算超额收益,还需要手动转换,非常麻烦。
策略构建与回测。 有了历史 K 线数据之后,就可以让 AI 帮忙回测:"如果过去一年按某个策略操作,结果会怎样?"这是手动记账完全做不到的事,也是我做这个系统最想达到的目标。因为我在仓满量化那边有很多的点子,需要真实线上数据回测来说明情况。
下单信号。 有了上述的策略,进一步的就是生成交易信号。当然自动下单两个平台也是支持的,但是由于我的持仓不多、交易频次不高,所以暂不考虑自动化交易。能有信号也不错了。
2
券商特点
两家券商开放了什么能力,直接决定了系统怎么设计。富途的 API 近期一直有在迭代,还加入了 skills 功能,看起来有模有样。雪盈则比较保守,在几年前发布后,基本没见怎么迭代。
富途是自营全链路券商,自持牌照、自建行情系统。API 能力很完整,行情、交易、推送都有,实时报价、历史 K 线、盘口深度全覆盖。接入门槛也更高,需要在本地跑一个网关程序。
雪盈是轻资产互联网券商,底层执行和清算依托盈透(Interactive Brokers)。它开放的 API 非常精简,一共就 10 个接口,全部是交易和账户类的:查持仓、查资金、查成交、下单、撤单。没有实时报价,没有 K 线,没有任何行情数据。
设计上的结论很直接:行情走富途,雪盈只负责它自己账户的持仓和交易数据。 雪盈账户里那些标的的市值和现价用富途的行情接口补上。两家的标的代码归一化成统一格式,数据就能对得上。
3
设计分层
券商能给什么搞清楚了,系统就按四部分来设计。先能看,再能算,最后才能动。先确认数据是对的,再让它算收益;行情数据有了,就能接入回测。能回测诊断,就能让资产从数学上期望最大。
仓位统计。 把两家券商的持仓、资金、成交记录同步到本地数据库,统一折算成人民币。每天自动跑一次,重复跑也不会重复记账。这个部分,涉及币种转换、杠杆计算,繁琐且细致,大模型很擅长。最后只需要对一对手工扒下来的数据,就知道有没有问题。
绩效回顾与归因。 在第一层的基础上,按日留存持仓和资金快照,攒出历史净值曲线。然后做区间收益计算、市场分布、币种分布。虽然我们从截面能知道目前账户的盈亏情况,但我更希望知道合并账户的走势情况,以此来做调仓的判断依据。
策略构建与回测。 把持仓标的的历史日 K 线数据批量入库,有了价格数据就可以跑回测。这一层解决的问题是"该怎么做"。当然,对于一些特定标的的回测需求,还可以现用现拉,这就比较省事了。
交易信号与实盘。 程序化下单,带安全护栏。目前只完成了设计和 dry-run 模拟,真实下单还没上。这其实是雪盈的局限,它只要有密钥,就可以发送订单,对于线上来说,我认为风险过高。而富途还需要手动在网关程序上打开才可以进行交易。
4
效果回顾
4.1
仓位
同步完成后,每天都能看到两家券商聚合后的持仓总览,市场分布(港股占多少、美股占多少)和币种分布(港币、美元、日元各占几成)。底部汇总净资产折算人民币。不用再两个 App 来回切了。
4.2
绩效
绩效报告能看到每只标的不同时间区间的收益,还有每只标的的数量、成本、现价、盈亏。
在 Claude 里面,还可以交互获取当前的市场基准参考情况。
4.3
回测
历史 K 线入库之后,可以对持仓标的做策略回测。目前主要用来验证一些简单的想法——"如果某些标的在过去一年按某个规则操作,结果会怎样",帮助建立对策略的直觉。
4.4
实盘
下单模块完成了设计和 dry-run 模拟。
5
踩坑与耗时
5.1
耗时
从项目初始化到绩效报告完成,集中在一天内完成,13 个 commit。Codex 和 Claude 配合编码,我负责设计和验收,AI 出代码。没有 AI 辅助的话,同样的事情估计至少一到两周,而且不会有当前的精细度。
给想自己做的人一个参考:前置条件是你得有券商的 API 权限(富途需要开通 OpenD,雪盈需要申请 OpenAPI),以及对 Python 有基本的使用能力。如果你只接一家券商,特别是富途,那基本丢给大模型来做就行,接入这部分没啥额外工作量。
5.2
踩坑
数据不总是干净的。 有一只日股标的,雪盈的接口返回时把它标成了美股。不做交叉验证的话,这个错误会一路带进净值计算里。我加了一个"原始返回存档"——券商返回的原始 JSON 全部原样存一份。涉及外部数据源,存原始应答是必要的,数字对不上的时候能离线取证。发现这个错误,是因为直接看数据就没对上。
多币种折算的汇率时点问题。 用的是免费汇率源,一天更新一次。和券商 App 对比,总会有零点几个百分点的误差(目前 0.17%),汇率取值时点不同导致的。在我们的低频场景,是完全可以接受的。
富途网关的连接问题。 富途的 SDK 在网关没启动时会无限重试,脚本直接挂死,没有任何报错。不知道这个行为的话,调试时会很懵。调用前先做一次连接检测,连不上就快速退出。
6
展望
API Key 已经迁入系统钥匙串,磁盘上不留明文。还是前面那个问题,雪盈的安全管控较弱,本地需要严控自己的密钥披露情况。接入国内的券商,是我接下来想做的事情。
一天 13 个 commit 搞定前三层,剩下的时间花在想清楚设计上。更多的精力,就请花在策略评估和验证上吧。
7
参考资料
Futu API 文档 ( https://openapi.futunn.com/futu-api-doc/ ) - 富途 OpenAPI 官方文档,涵盖行情、交易、OpenD 网关等全部接口说明 snowballsecurities/snbpy ( https://github.com/snowballsecurities/snbpy ) - 雪盈证券 OpenAPI Python SDK,含接入说明与接口列表 Snbpy 使用文档 ( https://snbpy-doc.readthedocs.io/zh-cn/latest/ ) - 雪盈 OpenAPI 的开户、入金、API 权限申请与调用指南 仓满量化策略文档 ( https://www.quantfull.com/products/quant-bundle ) - 仓满量化整理的 151 交易策略全集

研报速递
发表评论
发表评论: