Revert "perf: freeze standard rolling lookbacks"
This reverts commit 32e4030442.
This commit is contained in:
@@ -1055,8 +1055,7 @@ pub struct PlatformExprStrategy {
|
||||
stock_filter_quote_usage: StockFilterQuoteUsage,
|
||||
stock_filter_expr_present: bool,
|
||||
selection_quote_usage: StockFilterQuoteUsage,
|
||||
stock_close_lookbacks: [usize; 7],
|
||||
stock_volume_lookbacks: [usize; 5],
|
||||
stock_rolling_requirements: StockRollingRequirements,
|
||||
stock_current_rolling_mean_required: bool,
|
||||
stock_snapshot_field_requirements: StockSnapshotFieldRequirements,
|
||||
stock_extra_factors_required: bool,
|
||||
@@ -1336,28 +1335,6 @@ impl PlatformExprStrategy {
|
||||
let selection_quote_usage =
|
||||
Self::selection_quote_usage_for_config(&config, &normalized_stock_filter_expr);
|
||||
let stock_rolling_requirements = Self::stock_rolling_requirements_for_config(&config);
|
||||
let required_rolling = |field: &'static str, lookback: usize| {
|
||||
stock_rolling_requirements
|
||||
.requires(field, lookback)
|
||||
.then_some(lookback)
|
||||
.unwrap_or(0)
|
||||
};
|
||||
let stock_close_lookbacks = [
|
||||
required_rolling("close", config.stock_short_ma_days),
|
||||
required_rolling("close", config.stock_mid_ma_days),
|
||||
required_rolling("close", config.stock_long_ma_days),
|
||||
required_rolling("close", 5),
|
||||
required_rolling("close", 10),
|
||||
required_rolling("close", 20),
|
||||
required_rolling("close", 30),
|
||||
];
|
||||
let stock_volume_lookbacks = [
|
||||
required_rolling("volume", 5),
|
||||
required_rolling("volume", 10),
|
||||
required_rolling("volume", 20),
|
||||
required_rolling("volume", 60),
|
||||
required_rolling("volume", 100),
|
||||
];
|
||||
let stock_current_rolling_mean_required =
|
||||
Self::stock_current_rolling_mean_required_for_config(&config);
|
||||
let stock_snapshot_field_requirements =
|
||||
@@ -1403,8 +1380,7 @@ impl PlatformExprStrategy {
|
||||
stock_filter_quote_usage,
|
||||
stock_filter_expr_present,
|
||||
selection_quote_usage,
|
||||
stock_close_lookbacks,
|
||||
stock_volume_lookbacks,
|
||||
stock_rolling_requirements,
|
||||
stock_current_rolling_mean_required,
|
||||
stock_snapshot_field_requirements,
|
||||
stock_extra_factors_required,
|
||||
@@ -4130,14 +4106,36 @@ impl PlatformExprStrategy {
|
||||
})
|
||||
})
|
||||
.flatten();
|
||||
let required_rolling = |field: &'static str, lookback: usize| {
|
||||
self.stock_rolling_requirements
|
||||
.requires(field, lookback)
|
||||
.then_some(lookback)
|
||||
.unwrap_or(0)
|
||||
};
|
||||
let close_lookbacks = [
|
||||
required_rolling("close", self.config.stock_short_ma_days),
|
||||
required_rolling("close", self.config.stock_mid_ma_days),
|
||||
required_rolling("close", self.config.stock_long_ma_days),
|
||||
required_rolling("close", 5),
|
||||
required_rolling("close", 10),
|
||||
required_rolling("close", 20),
|
||||
required_rolling("close", 30),
|
||||
];
|
||||
let volume_lookbacks = [
|
||||
required_rolling("volume", 5),
|
||||
required_rolling("volume", 10),
|
||||
required_rolling("volume", 20),
|
||||
required_rolling("volume", 60),
|
||||
required_rolling("volume", 100),
|
||||
];
|
||||
let rolling_means = ctx
|
||||
.data
|
||||
.market_standard_rolling_means_by_symbol_id_with_calendar_index(
|
||||
date,
|
||||
calendar_index,
|
||||
symbol_id,
|
||||
&self.stock_close_lookbacks,
|
||||
&self.stock_volume_lookbacks,
|
||||
&close_lookbacks,
|
||||
&volume_lookbacks,
|
||||
false,
|
||||
);
|
||||
let close_rolling = |index: usize| rolling_means.close[index].unwrap_or(f64::NAN);
|
||||
@@ -14543,10 +14541,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn current_rolling_helpers_do_not_load_factor_maps_or_decision_rollings() {
|
||||
let direct = PlatformExprStrategy::new(PlatformExprStrategyConfig::microcap_rotation());
|
||||
assert_eq!(direct.stock_close_lookbacks, [5, 10, 20, 5, 10, 20, 0]);
|
||||
assert_eq!(direct.stock_volume_lookbacks, [0; 5]);
|
||||
|
||||
let mut cfg = PlatformExprStrategyConfig::microcap_rotation();
|
||||
cfg.stock_filter_expr = concat!(
|
||||
"rolling_mean_current(\"close\", 5) > rolling_mean_current(\"close\", 10)",
|
||||
@@ -14557,8 +14551,10 @@ mod tests {
|
||||
let strategy = PlatformExprStrategy::new(cfg);
|
||||
|
||||
assert!(!strategy.stock_extra_factors_required);
|
||||
assert_eq!(strategy.stock_close_lookbacks, [0; 7]);
|
||||
assert_eq!(strategy.stock_volume_lookbacks, [0; 5]);
|
||||
assert!(!strategy.stock_rolling_requirements.requires("close", 5));
|
||||
assert!(!strategy.stock_rolling_requirements.requires("close", 10));
|
||||
assert!(!strategy.stock_rolling_requirements.requires("volume", 5));
|
||||
assert!(!strategy.stock_rolling_requirements.requires("volume", 100));
|
||||
assert!(strategy.stock_current_rolling_mean_required);
|
||||
|
||||
let mut signal_only = PlatformExprStrategyConfig::microcap_rotation();
|
||||
|
||||
Reference in New Issue
Block a user