保留模型评分显式调仓日期
This commit is contained in:
@@ -1905,7 +1905,15 @@ fn signal_rebalance_dates(rebalance: &StrategyRebalanceSpec) -> Option<BTreeSet<
|
|||||||
.unwrap_or("")
|
.unwrap_or("")
|
||||||
.trim()
|
.trim()
|
||||||
.to_ascii_lowercase();
|
.to_ascii_lowercase();
|
||||||
if frequency != "signal_dates" && frequency != "signal-dates" && frequency != "signal dates" {
|
if !matches!(
|
||||||
|
frequency.as_str(),
|
||||||
|
"signal_dates"
|
||||||
|
| "signal-dates"
|
||||||
|
| "signal dates"
|
||||||
|
| "daily_model_score_rank"
|
||||||
|
| "dynamic_model_score_rank"
|
||||||
|
| "model_rank_rotation"
|
||||||
|
) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let dates = rebalance
|
let dates = rebalance
|
||||||
@@ -2416,6 +2424,26 @@ mod tests {
|
|||||||
assert_eq!(cfg.signal_rebalance_dates.len(), 2);
|
assert_eq!(cfg.signal_rebalance_dates.len(), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parses_dynamic_model_score_dates_into_platform_config() {
|
||||||
|
let spec = serde_json::json!({
|
||||||
|
"rebalance": {
|
||||||
|
"frequency": "daily_model_score_rank",
|
||||||
|
"dates": ["2025-11-10", "2025-11-17"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let cfg = platform_expr_config_from_value("", "", &spec).expect("config");
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
cfg.signal_rebalance_dates,
|
||||||
|
BTreeSet::from([
|
||||||
|
NaiveDate::from_ymd_opt(2025, 11, 10).unwrap(),
|
||||||
|
NaiveDate::from_ymd_opt(2025, 11, 17).unwrap(),
|
||||||
|
])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parses_execution_cost_overrides_into_platform_config() {
|
fn parses_execution_cost_overrides_into_platform_config() {
|
||||||
let spec = serde_json::json!({
|
let spec = serde_json::json!({
|
||||||
|
|||||||
Reference in New Issue
Block a user