跳转至

按决策时点读取研究输入

语言:简体中文 · English

portfolio_backtester.point_in_time.PointInTimeDataView 为每次策略决策绑定一个 research.clock.v1。读取时仅返回在 information_cutoff_at 之前已发布的记录。行情等需要限制事件日期的数据,还要声明 event_at_col。两个时间列都必须带时区,未知时间会拒绝加载。

from portfolio_backtester.point_in_time import PointInTimeDataView, PointInTimeTable

view = PointInTimeDataView(
    {
        "financials": PointInTimeTable(financials, available_at_col="published_at"),
        "daily_bars": PointInTimeTable(
            bars, available_at_col="available_at", event_at_col="session_close_at"
        ),
    }
)

for decision_clock in decision_clocks:
    visible_financials = view.at(decision_clock).read("financials")
    visible_bars = view.at(decision_clock).read("daily_bars")
    targets = strategy(visible_financials, visible_bars)

上游必须提供真实的可用时间,不能用交易日期或财报期末日期代替发布时间。每个调仓决策分别绑定时钟。跨年任务的单个 Job 时钟不能代替逐次决策时钟。生成的目标仍需记录输入摘要与决策时钟,经过公共执行模拟和正式结果包校验后才能作为执行证据。该视图只约束通过它读取的数据,不验证策略代码是否还从其他路径读取了完整数据集。