修正AiQuant等权调仓预算
This commit is contained in:
@@ -2884,11 +2884,7 @@ where
|
||||
});
|
||||
let note = format!(
|
||||
"cash_dividend_receivable {} share_cash={:.6} quantity={} payable_date={} cash={:.2}",
|
||||
action.symbol,
|
||||
action.share_cash,
|
||||
quantity_after,
|
||||
payable_date,
|
||||
cash_delta
|
||||
action.symbol, action.share_cash, quantity_after, payable_date, cash_delta
|
||||
);
|
||||
notes.push(note.clone());
|
||||
report.account_events.push(AccountEvent {
|
||||
|
||||
@@ -7967,14 +7967,8 @@ impl Strategy for PlatformExprStrategy {
|
||||
slot_working_symbols.remove(symbol);
|
||||
}
|
||||
|
||||
if !self.config.aiquant_transaction_cost {
|
||||
aiquant_available_cash = projected.cash();
|
||||
}
|
||||
let fixed_buy_cash = if self.config.aiquant_transaction_cost {
|
||||
aiquant_available_cash * trading_ratio / selection_limit as f64
|
||||
} else {
|
||||
aiquant_total_value * trading_ratio / selection_limit as f64
|
||||
};
|
||||
aiquant_available_cash = projected.cash();
|
||||
let fixed_buy_cash = aiquant_total_value * trading_ratio / selection_limit as f64;
|
||||
let target_budget = aiquant_total_value * trading_ratio;
|
||||
let mut rebalance_working_symbols = slot_working_symbols.clone();
|
||||
if self.config.release_slot_on_exit_signal {
|
||||
@@ -18398,7 +18392,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn platform_aiquant_periodic_rebalance_uses_cash_divided_by_top_n_buy_budget() {
|
||||
fn platform_aiquant_periodic_rebalance_uses_total_value_equal_weight_buy_budget() {
|
||||
let prev_date = d(2025, 5, 13);
|
||||
let date = d(2025, 5, 14);
|
||||
let retained_symbols = (1..=17)
|
||||
@@ -18597,7 +18591,7 @@ mod tests {
|
||||
assert!(
|
||||
decision.order_intents.iter().all(|intent| match intent {
|
||||
OrderIntent::Value { value, reason, .. } if reason == "periodic_rebalance_buy" =>
|
||||
(*value - 6_500.0).abs() < 1e-6,
|
||||
(*value - 126_500.0).abs() < 1e-6,
|
||||
_ => true,
|
||||
}),
|
||||
"{:?}",
|
||||
@@ -18755,7 +18749,7 @@ mod tests {
|
||||
reason,
|
||||
} if symbol == "000002.SZ"
|
||||
&& reason == "periodic_rebalance_buy"
|
||||
&& (*value - 5_000.0).abs() < 1e-6
|
||||
&& (*value - 10_000.0).abs() < 1e-6
|
||||
)),
|
||||
"{:?}",
|
||||
decision.order_intents
|
||||
|
||||
Reference in New Issue
Block a user