工程化 · 面向时间序列
把指标计算与 确定性回放 做成可演进的组件
Deelf 是一个个人工程作品集站点,聚焦两个通用方向的工程实现: 可组合的指标计算内核,与可复现的事件回放引擎。 不是一次性脚本,而是边界清晰、可测试、可持续演进的模块。
O(n)
增量计算100%
可复现~0.2ms
单点更新WORK · A
Deelf Indicator Engine
面向时间序列的指标计算内核:统一接口、可组合、可观测。 把零散的计算脚本抽象成一套可被编排、缓存与测试的管线。
- 统一契约:固定的输入类型 / 输出结构,便于流水线编排
- 依赖与调度:以声明式方式组合,避免重复计算与状态串扰
- 增量与缓存:新点到来仅触发必要计算,适合长序列场景
- 上下文隔离:多路并行数据各自持有状态,互不污染
- 插件式扩展:新指标以模块方式接入,不改动内核
timeseries
pipeline
incremental
cache
observability
# 以声明式组合一个指标管线,框架负责调度与缓存 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 落到日志 / 快照;两次相同输入可直接做等价对比。