账户结构设计:主账户与子账户的划分逻辑、多交易所账户的归集与对账机制
做市商资金管理,说白了就是一场「多线作战」。你想想看,我们同时跑着三四个交易所,每个交易所里又有十几个交易对,资金散落在各个角落。如果不把账户结构理清楚,月底对账能让你怀疑人生。
我个人习惯,把账户体系分成两层:主账户和子账户。这个结构不是拍脑袋想的,是我在实盘中被坑过好几次之后,才慢慢打磨出来的。
一、主账户与子账户的划分逻辑
主账户是什么?它是你的「资金总指挥部」。所有入金、出金、利润提取,都走主账户。子账户呢?它是你的「前线作战单元」。每个策略、每个交易所、甚至每个交易对,都可以分配一个独立的子账户。
为什么要这么分?我举个例子你就明白了。
假设你在币安、OKX、Bybit 三个交易所都做市。如果没有子账户,所有资金混在一起,你根本分不清哪个交易所赚了、哪个亏了。更麻烦的是,一旦某个策略出问题,你都不知道该停哪个。
具体划分逻辑,我一般遵循三条规则:
- 按交易所划分: 每个交易所一个子账户组。比如「币安组」、「OKX组」。这样方便统计每个交易所的盈亏。
- 按策略划分: 同一个交易所里,不同策略用不同子账户。比如「币安-网格做市」、「币安-价差套利」。这样能单独评估策略表现。
- 按风险等级划分: 高风险策略用单独子账户,设置独立的风控参数。低风险策略可以共用子账户。
嗯,这里要注意:子账户之间要完全隔离。不能出现子账户A的资金被子账户B挪用的情况。我在早期项目中就吃过这个亏——两个子账户共用一个资金池,结果一个策略爆仓,把另一个策略的本金也带走了。从那以后,我强制要求每个子账户必须有独立的资金余额。
二、多交易所账户的归集机制
账户分好了,接下来就是归集。说白了,就是把散落在各个交易所、各个子账户的资金,汇总到一个统一的视图里。
归集的核心,是统一计价单位。你想想看,币安上有 BTC,OKX 上有 ETH,Bybit 上有 USDT。如果不统一计价,你根本算不清总资产是多少。
我个人习惯,用 USDT 作为基准计价单位。所有资产都按实时汇率折算成 USDT。这样每天看一眼总资产,就知道今天是赚了还是亏了。
归集的流程大概是这样的:
- 每个子账户定时上报余额(比如每5秒一次)。
- 主账户收到数据后,按统一汇率折算。
- 汇总到总资产表里。
- 生成归集报告。
这里有个坑:汇率选择。不同交易所的汇率可能不一样,甚至同一交易所的买一价和卖一价也不同。我建议用「中间价」或者「加权均价」,不要用买一价或卖一价,否则归集出来的数字会虚高或虚低。
三、多交易所账户的对账机制
对账,是资金管理里最枯燥、但也最重要的一环。我曾经因为对账没做好,漏掉了一笔 5 万 USDT 的转账,整整找了三天才找到原因。
对账的核心逻辑很简单:你记的账,和交易所记的账,是不是一致的?
具体怎么做?我一般分三步:
- 第一步:余额对账。 拿你本地数据库里的余额,和交易所 API 返回的余额做对比。如果差超过 0.1%,就要报警。
- 第二步:流水对账。 拿你本地记录的每一笔交易、转账、手续费,和交易所的成交记录做逐笔比对。这一步最耗时,但也是发现问题的关键。
- 第三步:损益对账。 把一段时间内的盈亏算出来,和交易所的损益报表做对比。如果对不上,说明前面两步可能漏了什么。
对账的频率,我建议:
| 对账类型 | 频率 | 说明 |
|---|---|---|
| 余额对账 | 每5分钟 | 快速检查,发现异常立即报警 |
| 流水对账 | 每小时 | 逐笔比对,确保每笔交易都记录正确 |
| 损益对账 | 每天 | 汇总统计,确认整体盈亏 |
四、整体架构图
下面这张图,是我自己用的账户结构设计。你可以参考一下:
这张图展示了我用的三层结构:最上层是主账户,中间是各交易所的子账户组,再往下是具体的策略子账户。归集引擎和对账引擎分别负责汇总和校验。
五、避坑指南
最后,分享几个我踩过的坑:
- 子账户命名要规范。 我曾经用「test1」、「test2」这种名字,结果三个月后自己都看不懂哪个是哪个。建议用「交易所_策略_币对」的格式,比如「binance_grid_btcusdt」。
- 对账要留痕。 每次对账的结果,都存到数据库里。万一出了问题,可以回溯查原因。
- 不要完全信任交易所 API。 交易所的 API 偶尔会返回错误数据。我习惯同时拉两个数据源做交叉验证。
- 归集频率不要太高。 每秒钟归集一次,除了浪费带宽,没什么实际意义。5秒一次足够了。
嗯,账户结构设计这块,说白了就是「分而治之」。分得清楚,才能管得明白。希望这些经验对你有帮助。
公众号:蓝海资料掘金营,微信deep3321