Ⅳ · 研究与可视化 — 4.1

框架之外:数据、研究与展示如何组合

NautilusTrader 或 LEAN 是交易引擎,不等于全部系统。数据、研究、展示与运维是可按需求组合的外围能力。

先把引擎放回系统中的位置

第二章描述的是交易引擎内部如何运行。实际工作中还会有数据落地、研究查询、图表展示、日志与运行监控等能力,但它们不天然属于某一个引擎,也不需要在第一天全部建设。

不是一套固定产品,而是可组合的职责边界外部数据源券商 · 场所 · MT5 导出数据约定与数据目录时间、品种、价格、元数据、质量校验Parquet 可作为其中一种存储格式事件与状态约定行情 · 订单 · 持仓 · 标注外部执行边界券商 · 场所 · 账户研究与验证DuckDB · Jupyter · Plotly批量查询、规则检查、统计与报告交易运行时NautilusTrader / LEAN回测、策略、风控、执行与订单事件展示与运行观察API · KLineCharts · 日志与告警标注、订单事件、快照与人工检查固定输入 / 输出对照实线表示常见的数据或事件路径;虚线表示研究规则与运行规则可用固定样本做一致性检查。是否引入服务端数据库、实时推送或网页界面,应由实际的数据量、用户数量和运行方式决定。
这张图刻意不把组件画成一条必须按顺序建设的路线。它说明边界和可交换关系,具体组合留给后续需求与交付约束决定。

这不是一张预设的产品架构图。它只说明四类职责之间常见的数据关系:一套经过校验的数据与事件约定,可以被研究工具、交易引擎和展示层分别消费;具体是否需要服务端数据库、实时推送或浏览器界面,取决于后续场景。

四层各自回答什么问题

可能的组件 首先回答的问题
数据 数据源适配、Parquet、数据目录、质量校验 数据从哪里来,时间、价格和品种口径是否可追溯?
研究 DuckDB、Jupyter、Plotly 某个假设如何被检验,结论能否被复查?
交易运行时 NautilusTrader、LEAN、策略与执行适配器 数据如何驱动策略,订单如何发送并形成状态事件?
展示与运维 API、事件流、KLineCharts、日志与告警 运行中哪些状态需要被人或其他系统读取?

其中 Parquet 是文件格式,DuckDB 是查询引擎,KLineCharts 是浏览器渲染库。把名字和层次分开,讨论“是否采用”时才不会把数据格式、计算引擎和前端图表当成同一种技术选择。

研究结果与运行结果如何校验

研究阶段常使用批量查询与向量化计算,运行时则常按 bar、tick 或订单事件增量推进。两侧不必强制共用同一个文件或同一段实现,但只要它们声称表达的是同一个规则,就应保留一组固定输入与期望输出进行对照。

固定行情片段 + 固定参数

        ├─ 研究实现 → 标注 / 信号 / 统计中间结果
        └─ 运行实现 → 标注 / 信号 / 事件中间结果

                   比对定义一致的输出

一致性检查验证的是规则表达,不要求把 notebook 写法原封不动搬进策略运行时。对于简单指标可以复用计算核心;对于批量研究与事件驱动实现不同的情形,应保留可复现的对照样本。