工程化 · 面向时间序列

指标计算确定性回放 做成可演进的组件

Deelf 是一个个人工程作品集站点,聚焦两个通用方向的工程实现: 可组合的指标计算内核,与可复现的事件回放引擎。 不是一次性脚本,而是边界清晰、可测试、可持续演进的模块。

· 组件化设计 | · 可复现构建 | · 可观测与可测试
// abstract.series
O(n)
增量计算
100%
可复现
~0.2ms
单点更新
清晰的输入输出契约 依赖声明与调度 可控的仿真时钟 同输入同输出 计算与流程解耦
WORK · A

Deelf Indicator Engine

面向时间序列的指标计算内核:统一接口、可组合、可观测。 把零散的计算脚本抽象成一套可被编排、缓存与测试的管线。

  • 统一契约:固定的输入类型 / 输出结构,便于流水线编排
  • 依赖与调度:以声明式方式组合,避免重复计算与状态串扰
  • 增量与缓存:新点到来仅触发必要计算,适合长序列场景
  • 上下文隔离:多路并行数据各自持有状态,互不污染
  • 插件式扩展:新指标以模块方式接入,不改动内核
timeseries pipeline incremental cache observability
indicator.pipeline.py v1 · stable
# 以声明式组合一个指标管线,框架负责调度与缓存
from deelf.indicators import pipeline, ma, ema, bollinger

pipe = pipeline(
    inputs = ["close"],
    nodes  = [
        ma(window=20, name="ma20"),
        ema(span=12,  name="ema12"),
        bollinger(on="ma20", k=2.0),
    ],
    cache  = "lru",
)

for tick in stream:
    out = pipe.step(tick)       # 增量,O(依赖深度)
    sink.emit(out)
WORK · B

Deelf Replay Engine

确定性的事件回放引擎:可控时钟、可复现、与计算内核解耦。 让历史数据流在一个可观察、可调试的环境里稳定地再现一次。

  • 事件驱动:严格按时间顺序推进,不引入隐式副作用
  • 可控时钟:支持加速、暂停、单步等节奏,便于调试
  • 状态机主循环:节点清晰,边界明确,测试友好
  • 可复现:相同输入 → 相同输出,回归与对拍成本极低
  • 松耦合集成:计算模块通过清晰边界接入,不绑死实现
event-driven simulated-clock FSM deterministic decoupling
Source
持久化序列
Clock
可控仿真时钟
Dispatcher
事件分发
FSM
状态机主循环
Compute
外部计算内核
Sink
输出 / 观察点
Deterministic Output
同输入 · 同输出 · 可对拍
Engineering Principles

两件作品共享的工程原则

不是功能清单,而是我在设计与实现这两套内核时反复坚持的几条边界。

清晰边界

模块之间通过契约通信,不共享可变状态;替换实现无需改调用方。

可复现

同样输入得到同样输出;禁止隐式时钟与随机源,调试与回归成本都是常数级。

增量优先

为长序列与高频更新而设计,避免一次全量重算;状态可中途落盘与恢复。

可观测

内置指标、trace 与事件日志;异常可定位到最小复现片段,而不是整段流水线。

可测试

算子级单测 + 场景级对拍。既能跑最小 case,也能在长序列上稳定复现问题。

可演进

接口向前兼容,新能力以扩展而非侵入方式加入;老用法无需大规模迁移。

Integration

两件作品如何协作

回放引擎推进事件;计算内核接收事件、输出结果。两者通过接口组合,而不是相互穿透。

01

数据准备

把原始时间序列整理成统一的事件流,并声明字段契约。

02

回放驱动

Replay 引擎以可控时钟按顺序推进,支持加速、暂停、单步。

03

计算消费

Indicator 内核监听事件,按依赖图增量更新并缓存中间结果。

04

观察与对拍

输出经 Sink 落到日志 / 快照;两次相同输入可直接做等价对比。

感兴趣,想要深入交流?

本站点仅作个人工程作品的展示与记录,不提供任何对外服务。 若你对指标计算内核或确定性回放这两个方向有工程向的讨论兴趣,欢迎通过邮件联系。