资金费率

费率与用户处理分开

资金费率计算、保存、用户持仓费用处理和统计不是同一动作。费率为正或负时的实际资金方向与扣划公式需要对照实现,不能只按通用产品经验写入。

已核对源码

  • 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 的代码。该入口不应仅凭“定时结算”名称直接当作资金费率调度,需分别追踪调用链。

验证场景

正、负、零费率,处理前后开平仓,持仓快照变化、重复事件、价格缺失、统计写入失败和重启。将费用、盈亏、手续费与净收益分别核对。