修正AiQuant目标市值估值口径

This commit is contained in:
boris
2026-06-16 07:49:10 +08:00
parent 9a411f2403
commit 8e6c912a07
2 changed files with 164 additions and 22 deletions
+15 -13
View File
@@ -2848,8 +2848,15 @@ where
return Ok(());
}
let valuation_price = self.target_value_valuation_price(date, data, symbol, snapshot);
let current_value = valuation_price * current_qty as f64;
let current_value = if self.aiquant_rqalpha_execution_rules {
portfolio
.position(symbol)
.map(|position| position.market_value())
.unwrap_or(0.0)
} else {
let valuation_price = self.target_value_valuation_price(date, data, symbol, snapshot);
valuation_price * current_qty as f64
};
let cash_delta = target_value.max(0.0) - current_value;
if cash_delta.abs() > f64::EPSILON {
@@ -5278,7 +5285,7 @@ mod tests {
}
#[test]
fn aiquant_target_value_valuation_uses_scheduled_tick_last_price() {
fn aiquant_target_value_delta_uses_position_market_value() {
let date = chrono::NaiveDate::from_ymd_opt(2023, 5, 8).expect("valid date");
let symbol = "603101.SH";
let broker = BrokerSimulator::new_with_execution_price(
@@ -5369,12 +5376,6 @@ mod tests {
vec![quote],
)
.expect("valid dataset");
let snapshot = data.market(date, symbol).expect("market snapshot");
assert_eq!(
broker.target_value_valuation_price(date, &data, symbol, snapshot),
5.83
);
let mut portfolio = PortfolioState::new(8_261_416.62);
portfolio.position_mut(symbol).buy(date, 21_200, 5.8817);
let mut report = BrokerExecutionReport::default();
@@ -5396,11 +5397,12 @@ mod tests {
assert_eq!(
portfolio.position(symbol).map(|pos| pos.quantity),
Some(21_400)
Some(21_200)
);
let order = report.order_events.last().expect("target value order");
assert_eq!(order.requested_quantity, 200);
assert_eq!(order.filled_quantity, 200);
if let Some(order) = report.order_events.last() {
assert_eq!(order.requested_quantity, 0);
assert_eq!(order.filled_quantity, 0);
}
}
#[test]