Coverage report: 93%

Files Functions Classes

coverage.py v7.16.0, created at 2026-09-04 12:05 +0000

      Statements   Branches   Total
File class   coverage statements missing excluded   coverage branches partial   coverage
src/finbot/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/__init__.py (no class)   100% 3 0 0   100% 0 0   100%
src/finbot/backtest/artifacts.py ExperimentStore   98% 51 1 0   92% 12 1   97%
src/finbot/backtest/artifacts.py (no class)   100% 41 0 0   100% 0 0   100%
src/finbot/backtest/comparison.py ExperimentComparisonRow   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/comparison.py WalkForwardComparisonRow   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/comparison.py (no class)   100% 48 0 0   100% 2 0   100%
src/finbot/backtest/experiment.py ExperimentConfig   93% 14 1 0   93% 14 1   93%
src/finbot/backtest/experiment.py ExperimentMetadata   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/experiment.py ExperimentRun   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/experiment.py ExperimentPeriod   100% 3 0 0   100% 2 0   100%
src/finbot/backtest/experiment.py WalkForwardSplit   100% 4 0 0   100% 4 0   100%
src/finbot/backtest/experiment.py WalkForwardFoldResult   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/experiment.py WalkForwardResult   50% 2 1 0   50% 2 1   50%
src/finbot/backtest/experiment.py WalkForwardExperimentRun   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/experiment.py (no class)   100% 53 0 0   100% 0 0   100%
src/finbot/backtest/models.py Trade   100% 6 0 15   100% 0 0   100%
src/finbot/backtest/models.py EquityPoint   100% 2 0 0   100% 0 0   100%
src/finbot/backtest/models.py SignalRejection   0% 1 1 6   100% 0 0   0%
src/finbot/backtest/models.py BacktestResult   98% 124 3 0   96% 70 3   97%
src/finbot/backtest/models.py (no class)   100% 118 0 2   100% 10 0   100%
src/finbot/backtest/runner.py ExperimentRunner   100% 10 0 0   100% 4 0   100%
src/finbot/backtest/runner.py BacktestRunner   100% 0 0 1   100% 0 0   100%
src/finbot/backtest/runner.py WalkForwardRunner   100% 14 0 0   100% 4 0   100%
src/finbot/backtest/runner.py (no class)   100% 20 0 3   100% 0 0   100%
src/finbot/backtest/walk_forward.py TrainingWindowMode   100% 0 0 0   100% 0 0   100%
src/finbot/backtest/walk_forward.py ParameterEvaluation   100% 2 0 0   100% 2 0   100%
src/finbot/backtest/walk_forward.py (no class)   100% 43 0 0   100% 12 0   100%
src/finbot/cli/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
src/finbot/cli/backtest.py (no class)   98% 135 3 0   94% 32 2   97%
src/finbot/cli/main.py (no class)   100% 70 0 2   100% 4 0   100%
src/finbot/cli/ml_experiment.py (no class)   90% 52 5 0   25% 4 1   86%
src/finbot/cli/paper.py (no class)   99% 87 1 0   92% 24 2   97%
src/finbot/config.py Settings   100% 0 0 0   100% 0 0   100%
src/finbot/config.py (no class)   97% 31 1 0   92% 12 1   95%
src/finbot/engine/__init__.py (no class)   100% 4 0 0   100% 0 0   100%
src/finbot/engine/backtest_engine.py ExecutionPolicy   100% 0 0 0   100% 0 0   100%
src/finbot/engine/backtest_engine.py BacktestEngine   92% 60 5 0   87% 30 4   90%
src/finbot/engine/backtest_engine.py (no class)   100% 19 0 0   100% 0 0   100%
src/finbot/engine/orchestrator.py RejectionStage   100% 0 0 0   100% 0 0   100%
src/finbot/engine/orchestrator.py TradingRejection   100% 0 0 0   100% 0 0   100%
src/finbot/engine/orchestrator.py NoAction   100% 0 0 0   100% 0 0   100%
src/finbot/engine/orchestrator.py TradingOrchestrator   100% 39 0 0   100% 14 0   100%
src/finbot/engine/orchestrator.py (no class)   100% 27 0 0   100% 0 0   100%
src/finbot/engine/paper.py PaperTradingCoordinator   100% 31 0 0   100% 10 0   100%
src/finbot/engine/paper.py (no class)   100% 14 0 0   100% 0 0   100%
src/finbot/execution/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
src/finbot/execution/alpaca.py AlpacaPaperBroker   79% 289 62 0   73% 94 19   77%
src/finbot/execution/alpaca.py (no class)   100% 52 0 0   100% 0 0   100%
src/finbot/execution/broker.py Broker   100% 0 0 3   100% 0 0   100%
src/finbot/execution/broker.py PortfolioBroker   100% 0 0 1   100% 0 0   100%
src/finbot/execution/broker.py BacktestBroker   100% 0 0 4   100% 0 0   100%
src/finbot/execution/broker.py SimulatedBroker   98% 57 1 0   95% 22 1   97%
src/finbot/execution/broker.py (no class)   100% 20 0 22   100% 0 0   100%
src/finbot/execution/errors.py BrokerError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py BrokerConnectionError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py BrokerResponseError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py BrokerAPIError   100% 2 0 0   100% 0 0   100%
src/finbot/execution/errors.py TradingDisabledError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py OrderConflictError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py ReconciliationError   100% 3 0 0   100% 0 0   100%
src/finbot/execution/errors.py RuntimeNotReadyError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py KillSwitchActiveError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py RuntimeStoppedError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/errors.py (no class)   100% 12 0 0   100% 0 0   100%
src/finbot/execution/models.py OrderSide   100% 0 0 0   100% 0 0   100%
src/finbot/execution/models.py OrderType   100% 0 0 0   100% 0 0   100%
src/finbot/execution/models.py OrderStatus   100% 0 0 0   100% 0 0   100%
src/finbot/execution/models.py Order   100% 8 0 0   100% 8 0   100%
src/finbot/execution/models.py OrderState   50% 2 1 0   50% 2 1   50%
src/finbot/execution/models.py Fill   93% 29 2 0   85% 26 4   89%
src/finbot/execution/models.py BrokerPosition   50% 8 4 0   50% 8 4   50%
src/finbot/execution/models.py (no class)   100% 54 0 0   100% 0 0   100%
src/finbot/execution/reconciliation.py ReconciliationBroker   100% 0 0 3   100% 0 0   100%
src/finbot/execution/reconciliation.py ReconciliationReport   100% 0 0 0   100% 0 0   100%
src/finbot/execution/reconciliation.py ExecutionReconciler   98% 42 1 0   92% 12 1   96%
src/finbot/execution/reconciliation.py (no class)   100% 21 0 7   100% 0 0   100%
src/finbot/execution/runtime.py PaperTradingRuntime   100% 42 0 0   100% 14 0   100%
src/finbot/execution/runtime.py (no class)   100% 21 0 0   100% 0 0   100%
src/finbot/execution/state.py ExecutionStateError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/state.py DuplicateClientOrderError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/state.py StoredOrderNotFoundError   100% 0 0 0   100% 0 0   100%
src/finbot/execution/state.py PersistedOrder   100% 0 0 0   100% 0 0   100%
src/finbot/execution/state.py ExecutionStateStore   91% 55 5 0   62% 8 3   87%
src/finbot/execution/state.py (no class)   100% 29 0 0   100% 0 0   100%
src/finbot/features/__init__.py (no class)   100% 5 0 0   100% 0 0   100%
src/finbot/features/core.py Feature   89% 9 1 2   83% 6 1   87%
src/finbot/features/core.py FeatureSchema   100% 1 0 0   100% 0 0   100%
src/finbot/features/core.py FeatureDatasetMetadata   100% 1 0 0   100% 0 0   100%
src/finbot/features/core.py FeatureRow   100% 0 0 0   100% 0 0   100%
src/finbot/features/core.py FeatureDataset   100% 3 0 0   100% 0 0   100%
src/finbot/features/core.py FeaturePipeline   100% 38 0 0   100% 16 0   100%
src/finbot/features/core.py (no class)   100% 49 0 2   100% 0 0   100%
src/finbot/features/market.py ReturnFeature   100% 5 0 0   100% 2 0   100%
src/finbot/features/market.py SimpleMovingAverageFeature   100% 5 0 0   100% 2 0   100%
src/finbot/features/market.py SmaRatioFeature   100% 10 0 0   100% 4 0   100%
src/finbot/features/market.py RollingVolatilityFeature   100% 7 0 0   100% 2 0   100%
src/finbot/features/market.py VolumeChangeFeature   100% 8 0 0   100% 4 0   100%
src/finbot/features/market.py IntrabarRangeFeature   100% 3 0 0   100% 0 0   100%
src/finbot/features/market.py MomentumFeature   100% 5 0 0   100% 2 0   100%
src/finbot/features/market.py (no class)   100% 58 0 0   100% 2 0   100%
src/finbot/features/persistence.py FeatureDatasetStore   80% 81 16 0   70% 40 12   77%
src/finbot/features/persistence.py (no class)   100% 19 0 0   100% 0 0   100%
src/finbot/features/supervised.py ForwardReturnTarget   100% 4 0 0   100% 2 0   100%
src/finbot/features/supervised.py SupervisedDatasetMetadata   100% 1 0 0   100% 0 0   100%
src/finbot/features/supervised.py SupervisedRow   100% 0 0 0   100% 0 0   100%
src/finbot/features/supervised.py SupervisedDataset   100% 3 0 0   100% 0 0   100%
src/finbot/features/supervised.py SupervisedDatasetBuilder   89% 36 4 0   78% 18 4   85%
src/finbot/features/supervised.py (no class)   100% 43 0 0   100% 0 0   100%
src/finbot/market/__init__.py (no class)   100% 4 0 0   100% 0 0   100%
src/finbot/market/alpaca.py AlpacaMarketDataProvider   100% 46 0 0   100% 12 0   100%
src/finbot/market/alpaca.py (no class)   100% 16 0 0   100% 0 0   100%
src/finbot/market/cache.py DatasetCacheError   100% 0 0 0   100% 0 0   100%
src/finbot/market/cache.py DatasetNotFoundError   100% 0 0 0   100% 0 0   100%
src/finbot/market/cache.py DatasetIntegrityError   100% 0 0 0   100% 0 0   100%
src/finbot/market/cache.py HistoricalDataCache   95% 133 6 0   93% 56 4   95%
src/finbot/market/cache.py (no class)   100% 36 0 0   100% 0 0   100%
src/finbot/market/data_provider.py MarketDataProvider   100% 1 0 2   100% 0 0   100%
src/finbot/market/data_provider.py (no class)   100% 5 0 11   100% 0 0   100%
src/finbot/market/dataset.py DatasetMetadata   98% 62 1 0   97% 32 1   98%
src/finbot/market/dataset.py (no class)   100% 21 0 0   100% 0 0   100%
src/finbot/market/models.py Bar   100% 16 0 0   100% 16 0   100%
src/finbot/market/models.py (no class)   100% 13 0 0   100% 0 0   100%
src/finbot/ml/__init__.py (no class)   100% 5 0 0   100% 0 0   100%
src/finbot/ml/artifacts.py MLRunStatus   100% 0 0 0   100% 0 0   100%
src/finbot/ml/artifacts.py MLArtifactError   100% 0 0 0   100% 0 0   100%
src/finbot/ml/artifacts.py StoredMLExperiment   100% 0 0 0   100% 0 0   100%
src/finbot/ml/artifacts.py MLExperimentStore   86% 88 12 0   76% 34 8   84%
src/finbot/ml/artifacts.py (no class)   94% 83 5 0   71% 14 4   91%
src/finbot/ml/experiment.py MLExperimentConfig   76% 46 11 0   70% 30 9   74%
src/finbot/ml/experiment.py ClassificationMetrics   100% 1 0 0   100% 0 0   100%
src/finbot/ml/experiment.py StrategyMetrics   100% 2 0 0   100% 0 0   100%
src/finbot/ml/experiment.py MLExperimentResult   100% 0 0 0   100% 0 0   100%
src/finbot/ml/experiment.py MLExperimentRunner   94% 33 2 0   75% 8 2   90%
src/finbot/ml/experiment.py (no class)   97% 114 3 0   62% 8 3   95%
src/finbot/ml/walk_forward.py MLWalkForwardConfig   97% 30 1 0   75% 4 1   94%
src/finbot/ml/walk_forward.py MLWalkForwardFoldResult   100% 0 0 0   100% 0 0   100%
src/finbot/ml/walk_forward.py MLWalkForwardResult   100% 8 0 0   100% 6 0   100%
src/finbot/ml/walk_forward.py MLWalkForwardRunner   100% 23 0 0   100% 2 0   100%
src/finbot/ml/walk_forward.py (no class)   97% 67 2 0   86% 14 2   95%
src/finbot/ml/walk_forward_artifacts.py StoredMLWalkForwardExperiment   100% 0 0 0   100% 0 0   100%
src/finbot/ml/walk_forward_artifacts.py WalkForwardRunner   100% 0 0 1   100% 0 0   100%
src/finbot/ml/walk_forward_artifacts.py MLWalkForwardStore   91% 101 9 0   80% 44 9   88%
src/finbot/ml/walk_forward_artifacts.py (no class)   100% 64 0 7   100% 8 0   100%
src/finbot/models/__init__.py (no class)   100% 3 0 0   100% 0 0   100%
src/finbot/models/core.py TrainingConfiguration   100% 1 0 0   100% 0 0   100%
src/finbot/models/core.py ModelMetadata   100% 3 0 0   100% 0 0   100%
src/finbot/models/core.py Prediction   100% 18 0 0   100% 16 0   100%
src/finbot/models/core.py Model   100% 2 0 4   100% 0 0   100%
src/finbot/models/core.py (no class)   100% 48 0 3   100% 0 0   100%
src/finbot/models/logistic.py LogisticRegressionModel   88% 136 17 0   79% 62 13   85%
src/finbot/models/logistic.py (no class)   88% 41 5 0   75% 4 1   87%
src/finbot/portfolio/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
src/finbot/portfolio/portfolio.py Position   100% 2 0 0   100% 0 0   100%
src/finbot/portfolio/portfolio.py Portfolio   100% 43 0 0   100% 18 0   100%
src/finbot/portfolio/portfolio.py (no class)   100% 22 0 0   100% 0 0   100%
src/finbot/risk/__init__.py (no class)   100% 4 0 0   100% 0 0   100%
src/finbot/risk/models.py RiskLimits   100% 21 0 0   100% 18 0   100%
src/finbot/risk/models.py RiskDecision   89% 9 1 0   88% 8 1   88%
src/finbot/risk/models.py SizingDecision   100% 11 0 0   100% 8 0   100%
src/finbot/risk/models.py (no class)   100% 36 0 0   100% 0 0   100%
src/finbot/risk/position_sizer.py PositionSizer   96% 24 1 0   94% 18 1   95%
src/finbot/risk/position_sizer.py (no class)   100% 7 0 0   100% 0 0   100%
src/finbot/risk/risk_manager.py RiskManager   95% 56 3 0   93% 30 2   94%
src/finbot/risk/risk_manager.py (no class)   100% 11 0 0   100% 0 0   100%
src/finbot/strategy/__init__.py (no class)   100% 4 0 0   100% 0 0   100%
src/finbot/strategy/core.py SignalDirection   100% 0 0 0   100% 0 0   100%
src/finbot/strategy/core.py Signal   100% 7 0 0   100% 8 0   100%
src/finbot/strategy/core.py Strategy   100% 0 0 1   100% 0 0   100%
src/finbot/strategy/core.py (no class)   100% 18 0 2   100% 0 0   100%
src/finbot/strategy/ml.py ProbabilityThresholdPolicy   100% 27 0 0   100% 16 0   100%
src/finbot/strategy/ml.py ModelStrategy   100% 35 0 0   94% 16 1   98%
src/finbot/strategy/ml.py PredictionStrategy   100% 14 0 0   100% 6 0   100%
src/finbot/strategy/ml.py (no class)   100% 28 0 0   100% 0 0   100%
src/finbot/strategy/strategies.py RandomStrategy   100% 7 0 0   100% 4 0   100%
src/finbot/strategy/strategies.py BuyOnceStrategy   100% 5 0 0   100% 2 0   100%
src/finbot/strategy/strategies.py SmaCrossoverStrategy   97% 33 1 0   94% 18 1   96%
src/finbot/strategy/strategies.py (no class)   100% 30 0 0   100% 2 0   100%
Total     95% 3996 199 104   88% 1104 129   93%

No items found using the specified filter.