diff --git a/crates/fidc-core/src/engine.rs b/crates/fidc-core/src/engine.rs index 0a17167..97410bd 100644 --- a/crates/fidc-core/src/engine.rs +++ b/crates/fidc-core/src/engine.rs @@ -4211,6 +4211,34 @@ mod tests { } } + #[derive(Debug)] + struct AuctionBuyWhenDecisionDateStrategy { + decision_date: NaiveDate, + } + + impl Strategy for AuctionBuyWhenDecisionDateStrategy { + fn name(&self) -> &str { + "auction_buy_when_decision_date" + } + + fn open_auction( + &mut self, + ctx: &StrategyContext<'_>, + ) -> Result { + if ctx.decision_date == self.decision_date && ctx.portfolio.position(SYMBOL).is_none() { + return Ok(StrategyDecision { + order_intents: vec![OrderIntent::Shares { + symbol: SYMBOL.to_string(), + quantity: 100, + reason: "auction_test_buy".to_string(), + }], + ..StrategyDecision::default() + }); + } + Ok(StrategyDecision::default()) + } + } + #[derive(Debug)] struct ScheduledBuyStrategy { rule: ScheduleRule, @@ -4915,7 +4943,7 @@ mod tests { let result = BacktestEngine::new( dataset, - BuyWhenDecisionDateStrategy { + AuctionBuyWhenDecisionDateStrategy { decision_date: second, }, broker,