fix(strategy): require exact feature-date market snapshots

This commit is contained in:
boris
2026-09-13 06:06:17 +08:00
committed by boris
parent cf4498668b
commit 20e73d567b
@@ -1043,7 +1043,6 @@ impl<'a> StockStateSnapshotSource<'a> for IndexedStockStateSnapshotSource<'a> {
}
self.data
.market_by_symbol_id(self.factor_date, symbol_id)
.or_else(|| self.execution_market(symbol_id))
}
fn factor(&self, symbol_id: u32) -> Option<&'a DailyFactorSnapshot> {
@@ -1072,7 +1071,6 @@ impl<'a> StockStateSnapshotSource<'a> for ViewStockStateSnapshotSource<'a, '_> {
}
self.factor
.market(symbol_id)
.or_else(|| self.execution_market(symbol_id))
}
fn factor(&self, symbol_id: u32) -> Option<&'a DailyFactorSnapshot> {
@@ -4743,7 +4741,6 @@ impl PlatformExprStrategy {
symbol: symbol.to_string(),
})
})?;
let feature_market = source.feature_market(symbol_id).unwrap_or(market);
let factor = source.factor(symbol_id).ok_or_else(|| {
BacktestError::Data(crate::data::DataSetError::MissingSnapshot {
kind: "factor",
@@ -4751,6 +4748,13 @@ impl PlatformExprStrategy {
symbol: symbol.to_string(),
})
})?;
let feature_market = source.feature_market(symbol_id).ok_or_else(|| {
BacktestError::Data(crate::data::DataSetError::MissingSnapshot {
kind: "feature_market",
date: factor_date,
symbol: symbol.to_string(),
})
})?;
let intraday_same_day_factor = self.uses_intraday_execution_quotes()
&& factor_date == date
&& !ctx.is_lagged_execution();