diff --git a/crates/fidc-core/src/platform_strategy_spec.rs b/crates/fidc-core/src/platform_strategy_spec.rs index fad5d07..35ffa41 100644 --- a/crates/fidc-core/src/platform_strategy_spec.rs +++ b/crates/fidc-core/src/platform_strategy_spec.rs @@ -146,27 +146,27 @@ pub struct StrategyExecutionSpec { pub struct StrategyEngineConfig { #[serde(default)] pub frequency: Option, - #[serde(default)] + #[serde(default, alias = "template_id")] pub template_id: Option, #[serde(default, alias = "benchmark_symbol")] pub benchmark_symbol: Option, #[serde(default, alias = "signal_symbol")] pub signal_symbol: Option, - #[serde(default)] + #[serde(default, alias = "rank_limit")] pub rank_limit: Option, - #[serde(default)] + #[serde(default, alias = "refresh_rate")] pub refresh_rate: Option, - #[serde(default)] + #[serde(default, alias = "rsi_rate")] pub rsi_rate: Option, - #[serde(default)] + #[serde(default, alias = "dynamic_range")] pub dynamic_range: Option, - #[serde(default)] + #[serde(default, alias = "stock_ma_filter")] pub stock_ma_filter: Option, - #[serde(default)] + #[serde(default, alias = "index_throttle")] pub index_throttle: Option, - #[serde(default)] + #[serde(default, alias = "stop_loss_multiplier")] pub stop_loss_multiplier: Option, - #[serde(default)] + #[serde(default, alias = "take_profit_multiplier")] pub take_profit_multiplier: Option, #[serde(default, alias = "matching_type")] pub matching_type: Option, @@ -174,9 +174,17 @@ pub struct StrategyEngineConfig { pub slippage_model: Option, #[serde(default, alias = "slippage_value")] pub slippage_value: Option, - #[serde(default, alias = "slippage_impact_coefficient")] + #[serde( + default, + alias = "slippage_impact_coefficient", + alias = "slippageImpact" + )] pub slippage_impact_coefficient: Option, - #[serde(default, alias = "slippage_volatility_coefficient")] + #[serde( + default, + alias = "slippage_volatility_coefficient", + alias = "slippageVolatility" + )] pub slippage_volatility_coefficient: Option, #[serde(default, alias = "slippage_max_value", alias = "slippage_max_rate")] pub slippage_max_value: Option, @@ -199,10 +207,24 @@ pub struct StrategyEngineConfig { pub stamp_tax_rate_after_change: Option, #[serde(default, alias = "stamp_tax_change_date")] pub stamp_tax_change_date: Option, - #[serde(default, alias = "volume_limit")] + #[serde( + default, + alias = "volume_limit", + alias = "volumeLimitEnabled", + alias = "volume_limit_enabled" + )] pub volume_limit: Option, - #[serde(default, alias = "liquidity_limit")] + #[serde( + default, + alias = "liquidity_limit", + alias = "liquidityLimitEnabled", + alias = "liquidity_limit_enabled" + )] pub liquidity_limit: Option, + #[serde(default, alias = "inactive_limit")] + pub inactive_limit: Option, + #[serde(default, alias = "same_day_buy_close_mark_at_fill")] + pub same_day_buy_close_mark_at_fill: Option, #[serde(default, alias = "volume_percent")] pub volume_percent: Option, #[serde(default, alias = "risk_policy")] @@ -213,9 +235,9 @@ pub struct StrategyEngineConfig { pub rebalance_cash_mode: Option, #[serde(default, alias = "sell_then_buy_delay_slippage_rate")] pub sell_then_buy_delay_slippage_rate: Option, - #[serde(default)] + #[serde(default, alias = "dividend_reinvestment")] pub dividend_reinvestment: Option, - #[serde(default)] + #[serde(default, alias = "weak_market_shrink_overweight_threshold")] pub weak_market_shrink_overweight_threshold: Option, #[serde( default, @@ -225,9 +247,9 @@ pub struct StrategyEngineConfig { alias = "maxHoldingDays" )] pub max_holding_days: Option, - #[serde(default)] + #[serde(default, alias = "rebalance_schedule")] pub rebalance_schedule: Option, - #[serde(default)] + #[serde(default, alias = "skip_windows")] pub skip_windows: Vec, } @@ -584,54 +606,54 @@ fn normalize_risk_policy_aliases_in_value(value: &mut Value) -> Result<(), Strin #[derive(Debug, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct DynamicRangeConfig { - #[serde(default)] + #[serde(default, alias = "base_index_level")] pub base_index_level: Option, - #[serde(default)] + #[serde(default, alias = "base_cap_floor")] pub base_cap_floor: Option, - #[serde(default)] + #[serde(default, alias = "cap_span")] pub cap_span: Option, #[serde(default)] pub xs: Option, /// Padding ratio to expand the market cap range (e.g., 0.5 means 50% of span) - #[serde(default)] + #[serde(default, alias = "padding_ratio")] pub padding_ratio: Option, /// Minimum padding in billion yuan - #[serde(default)] + #[serde(default, alias = "min_padding")] pub min_padding: Option, /// Maximum padding in billion yuan - #[serde(default)] + #[serde(default, alias = "max_padding")] pub max_padding: Option, } #[derive(Debug, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct MovingAverageFilterConfig { - #[serde(default)] + #[serde(default, alias = "short_days")] pub short_days: Option, - #[serde(default)] + #[serde(default, alias = "mid_days")] pub mid_days: Option, - #[serde(default)] + #[serde(default, alias = "long_days")] pub long_days: Option, - #[serde(default)] + #[serde(default, alias = "volume_short_days", alias = "volumeShort")] pub volume_short_days: Option, - #[serde(default)] + #[serde(default, alias = "volume_long_days", alias = "volumeLong")] pub volume_long_days: Option, - #[serde(default)] + #[serde(default, alias = "rsi_rate")] pub rsi_rate: Option, } #[derive(Debug, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct IndexThrottleConfig { - #[serde(default)] + #[serde(default, alias = "short_days")] pub short_days: Option, - #[serde(default)] + #[serde(default, alias = "long_days")] pub long_days: Option, - #[serde(default)] + #[serde(default, alias = "rsi_rate")] pub rsi_rate: Option, - #[serde(default)] + #[serde(default, alias = "defensive_exposure")] pub defensive_exposure: Option, - #[serde(default)] + #[serde(default, alias = "full_exposure")] pub full_exposure: Option, }