项目地址:https://github.com/superalp1985/DCA-Auditable-Trader

Release:https://github.com/superalp1985/DCA-Auditable-Trader/releases/tag/v1.0.0

1. 项目定位

DCA Auditable Trader 是一个基于 vn.py 公共扩展接口构建的交易计算与审计参考实现,采用 Apache License 2.0 开源。

它不负责预测行情,也不提供实盘报单。项目重点是把价格、数量、金额、费率、手续费、保证金、持仓、损益、对账和风险结论放到统一的离散计算边界中,并保存可验证、可重放的证据。

v1.0.0 的能力范围是:

  • 本地纸面交易和确定性回放
  • 订单、成交、持仓、账户和结算审计
  • OBSERVE 模式风险计算
  • 哈希链证据与 SQLite 查询索引
  • Windows GUI、CLI、安装版和便携版
  • 只读 CTP-compatible OBSERVE 兼容验证

本版本不启用 WARN/BLOCK,不提交实盘委托,不声明生产交易资格。

2. 为什么不重新做一个交易框架

vn.py 已经提供事件引擎、主引擎、Gateway、策略应用、回测、算法交易和数据服务。其官方 RiskManager 也覆盖交易流控、下单数量、活动委托和撤单统计等前端规则。

DCA Auditable Trader 不 Fork vn.py,也不全局替换公共对象。它通过标准 BaseAppBaseEngine 和事件订阅接入,把重点放在三个相对独立的问题上:

  1. 权威交易值如何从外部字段转换为确定的整数/有理数;
  2. 在线计算、离线重放和对账如何使用同一个计算内核;
  3. 结果如何形成可检查的证据,而不只是普通日志。

这是一种补充关系,而不是替代关系。

3. DCA 交易算术契约

DCA 是 Discrete Computer Arithmetic。项目中的核心表示可以概括为:

price    = integer_ticks * rational_tick_size
quantity = integer_units * rational_unit_size
money    = integer_minor_units * 10^(-scale)
rate     = integer_numerator / positive_integer_denominator
time     = integer_nanoseconds + explicit_timezone

所有权威计算都必须显式携带:

  • 单位;
  • 合法范围;
  • 舍入模式;
  • 溢出策略;
  • 原始外部值;
  • 规则版本和哈希。

交易和会计计算禁止静默整数回绕。支持拒绝、扩宽,以及规则明确允许时的饱和。二进制浮点值不会被直接当成权威金额;外部浮点字段作为原始事实保留,并通过十进制文本和合约元数据进入离散边界。

一个重要原则是:缺失不等于零

例如缺少开仓成本时,系统不会输出一个貌似完整的已实现损益,而是保留缺失证据并停止给出权威结果。缺少账户币种和精度时,也不会默认按人民币两位小数处理。

4. 数据与证据路径

vn.py-compatible event
        |
        +--> raw external fact retained
        |
        v
strict DCA boundary conversion
        |
        +--> order state machine
        +--> fee reconstruction
        +--> FIFO position/PnL ledger
        +--> account reconciliation
        +--> OBSERVE risk evaluation
        |
        v
canonical JSONL + SHA-256 chain
        |
        +--> rebuildable SQLite index
        +--> deterministic verify/replay

JSONL 哈希链是重放证据,SQLite 是可重建查询索引。启动时如果 SQLite 缺失、陈旧或损坏,可以从完整证据重建;如果完整 JSONL 记录的哈希错误,则失败关闭。只有进程中断造成的最后一行不完整记录允许显式截断修复。

订单状态机覆盖重复事件、字段冲突、迟到事件、交易先于委托、超额成交、部分成交、撤单和重连后的终态重复。交易账本独立计算手续费、FIFO 多空持仓、今昨仓、结算、已实现/未实现损益和缺失开仓状态。

5. 风控为什么默认只做 OBSERVE

风险层支持精确名义金额、敞口、资金、损失、价格偏离、保证金比例、白名单、只平仓和全局暂停等规则。每次判断记录输入、阈值、计算值、缺失数据策略、规则哈希和结论。

但是 v1.0.0 固定为 OBSERVE:规则全部执行并产生证据,却不拦截真实委托。WARN/BLOCK 和实盘提交路径保持关闭。这让项目可以展示计算与审计能力,同时避免把一次模拟验证包装成生产风控资格。

6. 三种部署方式

6.1 完整安装版

DCA-Auditable-Trader-1.0.0-Setup-win-x64.exe

安装版包含冻结宿主、私有 CPython 3.13、运行依赖、GUI、CLI 和卸载程序。用户不需要预装 Python,也不需要手工处理 PySide6、TA-Lib、虚拟环境和 PATH。

如果你在部署 Python 量化宿主时卡在版本、Qt 或原生 wheel 上,可以先用这个版本体验纸面交易、回放和审计流程。它不是完整 VeighNa Trader 的替代品,也不包含券商实盘 Gateway。

6.2 Portable 免安装版

DCA-Auditable-Trader-1.0.0-Portable-win-x64.zip

解压后直接运行,不修改系统 Python。适合测试、演示和隔离环境。

6.3 插件 wheel

vnpy_dca_audit-1.0.0-py3-none-any.whl

适合已有兼容 vn.py/CPython 环境的开发者。插件遵循公共 App/Engine 结构,不要求修改上游源码。

7. 与常见方案的职责差异

方案 主要职责 本项目的差异点
vn.py 核心及应用 交易网关、策略、回测、事件和应用生态 使用公共接口接入,不重复实现生态
vn.py RiskManager 流控、数量、活动委托、撤单等前端限制 增加整数/有理数风险值和完整计算证据
普通日志 记录消息和异常 规范事件、哈希链、确定性重放和差异分类
关系数据库 查询当前和历史状态 SQLite 仅作索引,权威记录可独立验证重建
商业交易终端 行情和交易操作 项目只做公开参考实现,不争夺交易入口

项目不声称是市场上第一个或唯一的审计方案。它的特点是把这些约束集中到一个可运行、可测试、可打包的开源样例中。

8. v1.0.0 验证结果

本次 Reference Release 完成了以下验证:

  • 锁定 CPython 3.13/vn.py 运行时:159 项测试通过;
  • 系统 CPython 3.14:运行 159 项测试,10 项可选 vn.py 集成测试按设计跳过;
  • Windows 11 隔离虚拟机:安装、升级、回滚、修复、GUI、CLI、Portable 和卸载通过;
  • Microsoft Defender:0 检测;
  • Ed25519 SSHSIG:正常清单通过、篡改清单拒绝;
  • OpenCTP 短时 OBSERVE:交易/行情登录、合约、账户、tick 和受控断连恢复通过;
  • OpenCTP 结果:DCA 哈希链有效、SQLite integrity_check=ok、未解释差异 0、报单/撤单路径调用 0。

OpenCTP 结果只代表 CTP-compatible 只读功能路径跑通。第三方原生 DLL、账号和测试原始数据均未进入三个发布成品。

9. 下载与校验

Release 页面:

https://github.com/superalp1985/DCA-Auditable-Trader/releases/tag/v1.0.0

除三个成品外,Release 还提供:

DCA-Auditable-Trader-1.0.0-Candidate.json
DCA-Auditable-Trader-1.0.0-Candidate.json.sig
DCA-Auditable-Trader-1.0.0-SHA256SUMS.txt
release-signing-key.pub

发布公钥指纹:

SHA256:lIsFEyekLzjudR5uulYsMqLIGyjfuu5wYVSw2IelH/A

Windows 成品没有 Public Trust Authenticode 签名,因此可能显示 Unknown publisher。这不应被忽略或包装成已签名发布:请先核对仓库公钥,再验证 SSHSIG 清单和三个成品的 SHA-256。

10. 适用人群与维护方式

项目适合:

  • 卡在 Python/Qt/原生依赖部署,希望先运行一个完整参考宿主的用户;
  • 需要纸面撮合、回放、故障恢复和证据链样例的开发者;
  • 从事交易风控、清算、会计、对账和金融 IT 的工程人员;
  • 希望给现有 vn.py 系统增加 OBSERVE 审计层的用户;
  • 研究有限计算、确定性系统和事件溯源的学习者。

项目不适合直接用于实盘交易,也不提供盈利策略、高频性能承诺或商业支持。v1.0.0 作为完整参考实现发布,后续根据社区反馈按需维护,没有固定路线图和支持 SLA。

参考链接

更多推荐