fix(strategy): require exact feature-date market snapshots
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user