From 1bcedcee0fcc0138931e6284fa173b65e23aedc6 Mon Sep 17 00:00:00 2001 From: boris Date: Tue, 23 Jun 2026 12:30:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3AiQuant=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E4=BD=A3=E9=87=91=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/fidc-core/src/cost.rs | 1 + crates/fidc-core/tests/core_rules.rs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/crates/fidc-core/src/cost.rs b/crates/fidc-core/src/cost.rs index 77acaad..aaeea47 100644 --- a/crates/fidc-core/src/cost.rs +++ b/crates/fidc-core/src/cost.rs @@ -55,6 +55,7 @@ impl Default for ChinaAShareCostModel { impl ChinaAShareCostModel { pub fn aiquant_rqalpha_default() -> Self { Self { + commission_rate: 0.00025, stamp_tax_rate_before_change: 0.0005, stamp_tax_rate_after_change: 0.0005, ..Self::default() diff --git a/crates/fidc-core/tests/core_rules.rs b/crates/fidc-core/tests/core_rules.rs index 7233015..e19217d 100644 --- a/crates/fidc-core/tests/core_rules.rs +++ b/crates/fidc-core/tests/core_rules.rs @@ -66,6 +66,22 @@ fn china_cost_model_applies_minimum_commission_and_stamp_tax() { assert!((sell.stamp_tax - 100.0).abs() < 1e-9); } +#[test] +fn aiquant_rqalpha_cost_model_matches_alv_run_options() { + let model = ChinaAShareCostModel::aiquant_rqalpha_default(); + + let buy = model.calculate(d(2026, 5, 19), OrderSide::Buy, 49_978.84); + assert!((buy.commission - 12.49471).abs() < 1e-9); + assert_eq!(buy.stamp_tax, 0.0); + + let sell = model.calculate(d(2026, 5, 19), OrderSide::Sell, 100_724.72); + assert!((sell.commission - 25.18118).abs() < 1e-9); + assert!((sell.stamp_tax - 50.36236).abs() < 1e-9); + + let small_buy = model.calculate(d(2026, 5, 19), OrderSide::Buy, 1_000.0); + assert!((small_buy.commission - 5.0).abs() < 1e-9); +} + #[test] fn china_cost_model_switches_stamp_tax_rate_after_2023_08_28() { let model = ChinaAShareCostModel::default();