资金费率
费率与用户处理分开
资金费率计算、保存、用户持仓费用处理和统计不是同一动作。费率为正或负时的实际资金方向与扣划公式需要对照实现,不能只按通用产品经验写入。
已核对源码
- provider/FundRateService:build、calculate、getFundingRate、calculateTradeTypeFundRate、saveFundRate 等。
- eventBus/FundRateEventBus:订阅事件后读取启用合约配置,调用费率计算与保存接口。
- eventBus/UserFundRateBus:查询持仓、行情相关价格、用户账户,并出现日志和统计写入调用。
- service/AbstractBootstrap:创建 FundRateEvent 与 UserFundRateEvent 的入口线索。
以上均位于 coinex-contract-match/contract-match-provider/src/main/java/com/exch/contract/match/。
流程核对
配置与价格 / 基差相关输入
→ 费率事件及 FundRateService
→ 保存费率
用户费用事件
→ 读取适用持仓和账户 / 价格
→ 用户费用处理相关逻辑
→ 日志、统计与资金结果核对
图仅区分职责,尚未逐笔验证所有资金写入和事务边界。事件订阅存在不代表处理频率已确认,不能直接写成固定八小时结算。
与定时合约结算区分
ContractBalanceScheduled 另有定时调用 ContractBalanceEngineManager.balanceAction 的代码。该入口不应仅凭“定时结算”名称直接当作资金费率调度,需分别追踪调用链。
验证场景
正、负、零费率,处理前后开平仓,持仓快照变化、重复事件、价格缺失、统计写入失败和重启。将费用、盈亏、手续费与净收益分别核对。