Skip to main content

qs_backtest/
lib.rs

1//! `qs-backtest` — Backtesting engine for the quant-system workspace.
2//!
3//! This crate provides tools for replaying historical market data through the
4//! [`qs_core::TradeEngine`] to evaluate trading strategies and predefined
5//! signal sets.
6//!
7//! # Two modes of operation
8//!
9//! 1. **Strategy-driven** — implement the [`Strategy`] trait; the runner feeds
10//!    market data tick-by-tick and your strategy decides when to act.
11//! 2. **Signal replay** — provide a `Vec<Signal>` with timestamps; the runner
12//!    injects them at the correct moments while replaying price data.
13//!
14//! # Key types
15//!
16//! | Type | Purpose |
17//! |------|---------|
18//! | [`BacktestRunner`] | Orchestrates the backtest loop (both modes) |
19//! | [`BacktestExecutor`] | Tracks simulated fills, positions, and P&L |
20//! | [`BacktestResult`] | Final report — P&L, win rate, drawdown, trade log |
21//! | [`DataFeed`] | Trait for sequential market event sources |
22//! | [`Strategy`] | Trait for strategy-driven backtests |
23
24pub mod artifacts;
25pub mod currency;
26pub mod data_feed;
27pub mod evaluation;
28pub mod executor;
29pub mod future_executor;
30pub mod ledger;
31pub mod mtm;
32pub mod portfolio;
33pub mod profile;
34pub mod report;
35pub mod runner;
36pub mod sizing;
37pub mod strategy;
38
39// ── Convenience re-exports ──────────────────────────────────────────────────
40
41pub use artifacts::{
42    CloseEvent, CompletedPosition, ExecutionMetadata, FutureBacktestArtifacts, NetPnlOutcome,
43    OpenPositionSnapshot, PendingOrderLifecycleEvent, PendingOrderLifecycleState,
44    PendingOrderSnapshot, RecordedFill, RiskBasisStatus, RiskTranche,
45};
46pub use currency::{
47    ConversionError, ConversionLeg, ConversionLegAudit, ConversionPriceSide, ConversionQuoteBook,
48    ConversionResult, ConversionRoute, FxPair, FxPairDirection, QuoteValidationError,
49    RunCurrencyPlan, RunCurrencyPlanError, resolve_conversion_route, resolve_fx_pair,
50};
51pub use data_feed::{DataFeed, MarketEvent, VecFeed};
52pub use evaluation::{
53    BootstrapConfig, BreakdownDimension, EvaluationContext, EvaluationOptions, EvaluationReport,
54    EvaluationSection, GroupFilter, PositionFilter, PositionSide,
55};
56pub use executor::BacktestExecutor;
57pub use future_executor::FutureExecutor;
58pub use mtm::{
59    DEFAULT_MTM_MAX_POINTS, MAX_MTM_MAX_POINTS, MIN_MTM_MAX_POINTS, MtmCurveCollector,
60    MtmOutputPolicy, MtmOutputPolicyError, MtmOutputSummary,
61};
62pub use profile::{
63    ManagementProfile, PositionRef, PositionResolver, ProfileApplicationError, ProfileError,
64    ProfileRegistry, ProfileRegistryError, ProfileValidationError, RawSignal, ResolvedEntry,
65    RuleConfigDef, StoplossMode, TargetResolution, TargetSelection, allocate_target_units,
66    resolve_signal, resolve_unprofiled_entry,
67};
68pub use report::{
69    BacktestResult, CloseReasonStats, DurationStats, MonthlyReturn, PositionSummary, RiskMetrics,
70    StreakStats, SubsetStats, TradeResult,
71};
72pub use runner::{
73    BacktestRunner, FutureQuoteConfig, ReplayCancelled, ReplayProgress, StreamingReplayError,
74};
75pub use strategy::Strategy;