扩展研究输出

标准账户与成交字段保持统一,自定义指标、曲线和表格放在独立命名空间,随报告一起导出。

在策略中记录

def strategy(ctx):
    closes = ctx.history("ALPHA", bars=20)
    if len(closes) == 20:
        ctx.record(mean_close=float(closes.mean()))

运行后从 result.outputs["strategy"].series["mean_close"] 读取。未记录的时点为 None,不会自动前填;同一时点的同名重复写入失败。记录器只能在当前回调使用。

运行后添加指标与表格

from doribt import Metric, ResearchOutput, Table

result = result.analyze(
    "diagnostics",
    lambda r: ResearchOutput(
        metrics={"fill_count": Metric(len(r.fills), unit="count", description="成交笔数")},
        tables={"notes": Table(columns=["说明"], rows=[{"说明": "人工研究示例"}])},
    ),
)

analyze 接收本次结果并返回 ResearchOutput。已有输出可使用 with_outputs(namespace, output) 直接附加;两者返回新结果,不修改标准账本。

添加预计算曲线

from doribt import ResearchOutput, Series

result = result.with_outputs(
    "signal",
    ResearchOutput(
        series={"allocation": Series(sessions=result.sessions, values=[0.8] * len(result.sessions))}
    ),
)

曲线须对齐完整结果时间轴,稀疏值用 None。表格行与声明列一致,值为 JSON 标量;数值不接受 NaN/Infinity。重复命名空间会失败,不能覆盖已有标准字段。

任何导出都会写 research.json,并纳入统一校验和。扩展不会改变执行指纹;其内容由导出文件哈希标识。完整约定见研究输出参考。