| src/finbot/__init__.py |
(no function) |
|
100% |
0 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/__init__.py |
(no function) |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._create_metadata |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.create_run |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.create_walk_forward_run |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.save |
|
100% |
6 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.load |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore.load_many |
|
86% |
7 |
1 |
0 |
|
75% |
4 |
1 |
|
82% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_config |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_config |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_backtest_result |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_backtest_result |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_period |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_period |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_fold |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_fold |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_metadata |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_metadata |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_backtest |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_backtest |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._serialize_walk_forward |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize_walk_forward |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
ExperimentStore._deserialize |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/backtest/artifacts.py |
(no function) |
|
100% |
41 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/comparison.py |
compare_experiments |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/comparison.py |
compare_walk_forward_experiments |
|
100% |
12 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/comparison.py |
(no function) |
|
100% |
35 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/experiment.py |
ExperimentConfig.__post_init__ |
|
93% |
14 |
1 |
0 |
|
93% |
14 |
1 |
|
93% |
| src/finbot/backtest/experiment.py |
ExperimentPeriod.duration |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/experiment.py |
ExperimentPeriod.__post_init__ |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/experiment.py |
WalkForwardSplit.__post_init__ |
|
100% |
4 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/backtest/experiment.py |
WalkForwardResult.__post_init__ |
|
50% |
2 |
1 |
0 |
|
50% |
2 |
1 |
|
50% |
| src/finbot/backtest/experiment.py |
(no function) |
|
100% |
53 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.gross_pnl |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.fees |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.net_pnl |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.pnl |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.return_pct |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.duration |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
Trade.serialize |
|
100% |
0 |
0 |
15 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
trades_from_fills |
|
100% |
15 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/backtest/models.py |
EquityPoint.serialize |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
EquityPoint.deserialize |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
SignalRejection.serialize |
|
100% |
0 |
0 |
6 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
SignalRejection.deserialize |
|
0% |
1 |
1 |
0 |
|
100% |
0 |
0 |
|
0% |
| src/finbot/backtest/models.py |
BacktestResult.pnl |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.total_return |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.max_drawdown |
|
100% |
11 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.trades |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.trade_count |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.winning_trades |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.losing_trades |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.win_rate |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.profit_factor |
|
100% |
7 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.returns |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.average_trade |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.median_trade |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.best_trade |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.worst_trade |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.average_trade_duration |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.cagr |
|
100% |
11 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.calmar_ratio |
|
89% |
9 |
1 |
0 |
|
83% |
6 |
1 |
|
87% |
| src/finbot/backtest/models.py |
BacktestResult.total_fees |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.total_slippage |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.turnover |
|
89% |
9 |
1 |
0 |
|
83% |
6 |
1 |
|
87% |
| src/finbot/backtest/models.py |
BacktestResult.exposure |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.excess_return |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult._risk_free_rate_per_period |
|
67% |
3 |
1 |
0 |
|
50% |
2 |
1 |
|
60% |
| src/finbot/backtest/models.py |
BacktestResult.annualized_volatility |
|
100% |
7 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.sharpe_ratio |
|
100% |
12 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/backtest/models.py |
BacktestResult.sortino_ratio |
|
100% |
16 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/backtest/models.py |
(no function) |
|
100% |
103 |
0 |
2 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
ExperimentRunner.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
ExperimentRunner.run |
|
100% |
9 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
BacktestRunner.run |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
WalkForwardRunner.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
WalkForwardRunner.run_fold |
|
100% |
9 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
WalkForwardRunner.run |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/runner.py |
(no function) |
|
100% |
20 |
0 |
3 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/backtest/walk_forward.py |
generate_walk_forward_splits |
|
100% |
23 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/backtest/walk_forward.py |
ParameterEvaluation.__post_init__ |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/walk_forward.py |
select_best_parameters |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/backtest/walk_forward.py |
(no function) |
|
100% |
16 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/__init__.py |
(no function) |
|
100% |
0 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_format_comparison |
|
100% |
7 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_format_comparison.format_row |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
add_arguments |
|
100% |
12 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
add_compare_arguments |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
run_compare |
|
100% |
11 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_parse_datetime |
|
100% |
4 |
0 |
0 |
|
50% |
2 |
1 |
|
83% |
| src/finbot/cli/backtest.py |
_load_config |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_build_config |
|
100% |
25 |
0 |
0 |
|
100% |
20 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_create_market_data_provider |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
_log_result |
|
89% |
27 |
3 |
0 |
|
75% |
4 |
1 |
|
87% |
| src/finbot/cli/backtest.py |
run |
|
100% |
10 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/backtest.py |
(no function) |
|
100% |
28 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/main.py |
_test_api |
|
100% |
7 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/main.py |
_add_verbose_argument |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/main.py |
_build_parser |
|
100% |
30 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/main.py |
main |
|
100% |
11 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/main.py |
(no function) |
|
100% |
18 |
0 |
2 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
add_arguments |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
add_walk_forward_arguments |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
run |
|
100% |
6 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
run_walk_forward |
|
100% |
6 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
_load_config |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
_load_walk_forward_config |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/ml_experiment.py |
_load_json_object |
|
86% |
7 |
1 |
0 |
|
50% |
2 |
1 |
|
78% |
| src/finbot/cli/ml_experiment.py |
_git_revision |
|
50% |
8 |
4 |
0 |
|
0% |
2 |
0 |
|
40% |
| src/finbot/cli/ml_experiment.py |
(no function) |
|
100% |
17 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/paper.py |
add_arguments |
|
100% |
6 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/cli/paper.py |
run_until_signal |
|
100% |
27 |
0 |
0 |
|
100% |
12 |
0 |
|
100% |
| src/finbot/cli/paper.py |
run_until_signal.handle_signal |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/cli/paper.py |
run |
|
96% |
25 |
1 |
0 |
|
80% |
10 |
2 |
|
91% |
| src/finbot/cli/paper.py |
(no function) |
|
100% |
25 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/config.py |
_load_bool_env |
|
89% |
9 |
1 |
0 |
|
83% |
6 |
1 |
|
87% |
| src/finbot/config.py |
load_settings |
|
100% |
10 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/config.py |
(no function) |
|
100% |
12 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/__init__.py |
(no function) |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/backtest_engine.py |
BacktestEngine.__init__ |
|
100% |
7 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/engine/backtest_engine.py |
BacktestEngine.run |
|
91% |
46 |
4 |
0 |
|
88% |
24 |
3 |
|
90% |
| src/finbot/engine/backtest_engine.py |
BacktestEngine._signal_to_order |
|
86% |
7 |
1 |
0 |
|
75% |
4 |
1 |
|
82% |
| src/finbot/engine/backtest_engine.py |
(no function) |
|
100% |
19 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/orchestrator.py |
TradingOrchestrator.__init__ |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/orchestrator.py |
TradingOrchestrator.generate_signals |
|
100% |
9 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/engine/orchestrator.py |
TradingOrchestrator.process_bar |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/engine/orchestrator.py |
TradingOrchestrator.process_signal |
|
100% |
23 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/engine/orchestrator.py |
(no function) |
|
100% |
27 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/paper.py |
PaperTradingCoordinator.__init__ |
|
100% |
8 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/engine/paper.py |
PaperTradingCoordinator.run_once |
|
100% |
20 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/engine/paper.py |
PaperTradingCoordinator._client_order_id |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/engine/paper.py |
(no function) |
|
100% |
14 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/__init__.py |
(no function) |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.__init__ |
|
100% |
15 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.trading_enabled |
|
0% |
1 |
1 |
0 |
|
100% |
0 |
0 |
|
0% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.dry_run |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._get_state_store |
|
67% |
3 |
1 |
0 |
|
50% |
2 |
1 |
|
60% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._map_order_response |
|
78% |
18 |
4 |
0 |
|
100% |
0 |
0 |
|
78% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._request |
|
97% |
30 |
1 |
0 |
|
83% |
12 |
2 |
|
93% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._response_error_message |
|
55% |
11 |
5 |
0 |
|
33% |
6 |
2 |
|
47% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._submit_dry_run_order |
|
100% |
5 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.submit_order |
|
88% |
41 |
5 |
0 |
|
80% |
10 |
2 |
|
86% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.get_order |
|
73% |
15 |
4 |
0 |
|
67% |
6 |
2 |
|
71% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.get_order_by_client_order_id |
|
45% |
11 |
6 |
0 |
|
0% |
2 |
0 |
|
38% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._cancel_dry_run_order |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.cancel_order |
|
86% |
7 |
1 |
0 |
|
75% |
4 |
1 |
|
82% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._map_fill_activity |
|
70% |
23 |
7 |
0 |
|
75% |
4 |
1 |
|
70% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.get_fills |
|
81% |
26 |
5 |
0 |
|
75% |
12 |
3 |
|
79% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._ensure_matching_order |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._recover_persisted_order |
|
53% |
15 |
7 |
0 |
|
33% |
6 |
2 |
|
48% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._map_position_response |
|
60% |
10 |
4 |
0 |
|
100% |
0 |
0 |
|
60% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.get_positions |
|
69% |
13 |
4 |
0 |
|
67% |
6 |
2 |
|
68% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._rate_limit_delay |
|
69% |
13 |
4 |
0 |
|
100% |
4 |
0 |
|
76% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker._retry_delay |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/execution/alpaca.py |
AlpacaPaperBroker.get_portfolio_snapshot |
|
80% |
15 |
3 |
0 |
|
75% |
4 |
1 |
|
79% |
| src/finbot/execution/alpaca.py |
(no function) |
|
100% |
52 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
Broker.submit_order |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
Broker.get_order |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
Broker.cancel_order |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
PortfolioBroker.get_portfolio_snapshot |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
BacktestBroker.portfolio |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
BacktestBroker.fee_rate |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
BacktestBroker.slippage_rate |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
BacktestBroker.execute |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker.__init__ |
|
100% |
14 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker._new_order_id |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker._new_fill_id |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker._set_order_status |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker.submit_order |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker.cancel_order |
|
83% |
6 |
1 |
0 |
|
75% |
4 |
1 |
|
80% |
| src/finbot/execution/broker.py |
SimulatedBroker.execute |
|
100% |
22 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/execution/broker.py |
SimulatedBroker.get_order |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/broker.py |
(no function) |
|
100% |
20 |
0 |
22 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/errors.py |
BrokerAPIError.__init__ |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/errors.py |
ReconciliationError.__init__ |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/errors.py |
(no function) |
|
100% |
12 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/models.py |
Order.__post_init__ |
|
100% |
8 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/execution/models.py |
OrderState.__post_init__ |
|
50% |
2 |
1 |
0 |
|
50% |
2 |
1 |
|
50% |
| src/finbot/execution/models.py |
Fill.__post_init__ |
|
91% |
22 |
2 |
0 |
|
91% |
22 |
2 |
|
91% |
| src/finbot/execution/models.py |
Fill.serialize |
|
100% |
6 |
0 |
0 |
|
50% |
4 |
2 |
|
80% |
| src/finbot/execution/models.py |
Fill.deserialize |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/models.py |
BrokerPosition.__post_init__ |
|
50% |
8 |
4 |
0 |
|
50% |
8 |
4 |
|
50% |
| src/finbot/execution/models.py |
(no function) |
|
100% |
54 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ReconciliationBroker.get_order |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ReconciliationBroker.get_order_by_client_order_id |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ReconciliationBroker.get_positions |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ExecutionReconciler.__init__ |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ExecutionReconciler.reconcile |
|
100% |
31 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ExecutionReconciler._lookup |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/execution/reconciliation.py |
ExecutionReconciler._validate_match |
|
75% |
4 |
1 |
0 |
|
75% |
4 |
1 |
|
75% |
| src/finbot/execution/reconciliation.py |
(no function) |
|
100% |
21 |
0 |
7 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.__init__ |
|
100% |
7 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.started |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.stopped |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.kill_switch_active |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.kill_switch_reason |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.start |
|
100% |
10 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.shutdown |
|
100% |
6 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.submit_order |
|
100% |
10 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
PaperTradingRuntime.activate_kill_switch |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/execution/runtime.py |
(no function) |
|
100% |
21 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.__init__ |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore._connect |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore._initialize |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.reserve |
|
100% |
12 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.update |
|
71% |
14 |
4 |
0 |
|
50% |
4 |
2 |
|
67% |
| src/finbot/execution/state.py |
ExecutionStateStore.get_by_client_order_id |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.get_by_broker_order_id |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.list_reconcilable |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore._from_row |
|
67% |
3 |
1 |
0 |
|
50% |
2 |
1 |
|
60% |
| src/finbot/execution/state.py |
ExecutionStateStore.list_positions |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
ExecutionStateStore.replace_positions |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/execution/state.py |
(no function) |
|
100% |
29 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/__init__.py |
(no function) |
|
100% |
5 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
Feature.name |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
Feature.calculate |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
Feature.configuration |
|
89% |
9 |
1 |
0 |
|
83% |
6 |
1 |
|
87% |
| src/finbot/features/core.py |
FeatureSchema.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
FeatureDatasetMetadata.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
FeatureDataset.dataset_id |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
FeatureDataset.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
FeaturePipeline.__init__ |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/features/core.py |
FeaturePipeline.generate |
|
100% |
19 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/features/core.py |
FeaturePipeline._source_fingerprint |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/core.py |
FeaturePipeline._validate_value |
|
100% |
8 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/features/core.py |
(no function) |
|
100% |
49 |
0 |
2 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
_validate_window |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
ReturnFeature.__post_init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
ReturnFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
ReturnFeature.calculate |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
SimpleMovingAverageFeature.__post_init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
SimpleMovingAverageFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
SimpleMovingAverageFeature.calculate |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
SmaRatioFeature.__post_init__ |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
SmaRatioFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
SmaRatioFeature.calculate |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
RollingVolatilityFeature.__post_init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
RollingVolatilityFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
RollingVolatilityFeature.calculate |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
VolumeChangeFeature.__post_init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
VolumeChangeFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
VolumeChangeFeature.calculate |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/features/market.py |
IntrabarRangeFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
IntrabarRangeFeature.calculate |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
MomentumFeature.__post_init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
MomentumFeature.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
MomentumFeature.calculate |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/market.py |
initial_feature_set |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/market.py |
(no function) |
|
100% |
55 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/persistence.py |
FeatureDatasetStore.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/persistence.py |
FeatureDatasetStore.save |
|
100% |
9 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/persistence.py |
FeatureDatasetStore.load |
|
85% |
13 |
2 |
0 |
|
100% |
4 |
0 |
|
88% |
| src/finbot/features/persistence.py |
FeatureDatasetStore._parse_payload |
|
95% |
19 |
1 |
0 |
|
92% |
12 |
1 |
|
94% |
| src/finbot/features/persistence.py |
FeatureDatasetStore._parse_metadata |
|
67% |
12 |
4 |
0 |
|
50% |
8 |
4 |
|
60% |
| src/finbot/features/persistence.py |
FeatureDatasetStore._parse_schema_entry |
|
67% |
9 |
3 |
0 |
|
50% |
6 |
3 |
|
60% |
| src/finbot/features/persistence.py |
FeatureDatasetStore._parse_row |
|
67% |
18 |
6 |
0 |
|
60% |
10 |
4 |
|
64% |
| src/finbot/features/persistence.py |
(no function) |
|
100% |
19 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
ForwardReturnTarget.__post_init__ |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/features/supervised.py |
ForwardReturnTarget.name |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
ForwardReturnTarget.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
SupervisedDatasetMetadata.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
SupervisedDataset.dataset_id |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
SupervisedDataset.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
SupervisedDatasetBuilder.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
SupervisedDatasetBuilder.build |
|
89% |
35 |
4 |
0 |
|
78% |
18 |
4 |
|
85% |
| src/finbot/features/supervised.py |
build_supervised_dataset |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/features/supervised.py |
(no function) |
|
100% |
42 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/__init__.py |
(no function) |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/alpaca.py |
AlpacaMarketDataProvider.__init__ |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/alpaca.py |
AlpacaMarketDataProvider.get_latest_bar |
|
100% |
5 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/alpaca.py |
AlpacaMarketDataProvider.get_bars |
|
100% |
36 |
0 |
0 |
|
100% |
12 |
0 |
|
100% |
| src/finbot/market/alpaca.py |
AlpacaMarketDataProvider._parse_bar |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/alpaca.py |
(no function) |
|
100% |
16 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache.contains |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache.save |
|
88% |
32 |
4 |
0 |
|
83% |
6 |
1 |
|
87% |
| src/finbot/market/cache.py |
HistoricalDataCache.load |
|
100% |
32 |
0 |
0 |
|
100% |
12 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache.get_bars |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache.get_metadata |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache._dataset_dir |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache._json_bytes |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache._serialize_bars |
|
100% |
5 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache._deserialize_bars |
|
92% |
13 |
1 |
0 |
|
83% |
6 |
1 |
|
89% |
| src/finbot/market/cache.py |
HistoricalDataCache._normalize_bars |
|
95% |
21 |
1 |
0 |
|
86% |
14 |
2 |
|
91% |
| src/finbot/market/cache.py |
HistoricalDataCache._read_json_object |
|
100% |
7 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/market/cache.py |
HistoricalDataCache._validate_manifest |
|
100% |
12 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/market/cache.py |
(no function) |
|
100% |
36 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/data_provider.py |
MarketDataProvider.get_latest_bar |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/data_provider.py |
MarketDataProvider.get_latest_bars |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/data_provider.py |
MarketDataProvider.get_bars |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/data_provider.py |
(no function) |
|
100% |
5 |
0 |
11 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/dataset.py |
DatasetMetadata.__post_init__ |
|
100% |
28 |
0 |
0 |
|
100% |
18 |
0 |
|
100% |
| src/finbot/market/dataset.py |
DatasetMetadata.dataset_id |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/dataset.py |
DatasetMetadata.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/dataset.py |
DatasetMetadata.from_dict |
|
97% |
31 |
1 |
0 |
|
93% |
14 |
1 |
|
96% |
| src/finbot/market/dataset.py |
(no function) |
|
100% |
21 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/market/models.py |
Bar.__post_init__ |
|
100% |
16 |
0 |
0 |
|
100% |
16 |
0 |
|
100% |
| src/finbot/market/models.py |
(no function) |
|
100% |
13 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/__init__.py |
(no function) |
|
100% |
5 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore.execute |
|
100% |
9 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore.load |
|
75% |
36 |
9 |
0 |
|
68% |
22 |
7 |
|
72% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._begin |
|
100% |
7 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._complete |
|
100% |
9 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._metadata |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._write_metadata |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._write_json |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._write_predictions |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._write_trades |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
MLExperimentStore._read_object |
|
57% |
7 |
3 |
0 |
|
50% |
2 |
1 |
|
56% |
| src/finbot/ml/artifacts.py |
write_backtest_trades |
|
88% |
8 |
1 |
0 |
|
75% |
4 |
1 |
|
83% |
| src/finbot/ml/artifacts.py |
run_and_store |
|
0% |
1 |
1 |
0 |
|
100% |
0 |
0 |
|
0% |
| src/finbot/ml/artifacts.py |
_write_text_atomic |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
_sha256 |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/artifacts.py |
compare_ml_experiments |
|
81% |
16 |
3 |
0 |
|
70% |
10 |
3 |
|
77% |
| src/finbot/ml/artifacts.py |
(no function) |
|
100% |
54 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
MLExperimentConfig.__post_init__ |
|
76% |
33 |
8 |
0 |
|
71% |
28 |
8 |
|
74% |
| src/finbot/ml/experiment.py |
MLExperimentConfig.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
MLExperimentConfig.from_dict |
|
75% |
12 |
3 |
0 |
|
50% |
2 |
1 |
|
71% |
| src/finbot/ml/experiment.py |
ClassificationMetrics.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
StrategyMetrics.from_result |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
StrategyMetrics.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
MLExperimentRunner.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
MLExperimentRunner.run |
|
94% |
32 |
2 |
0 |
|
75% |
8 |
2 |
|
90% |
| src/finbot/ml/experiment.py |
run_ml_backtest |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
_slice_supervised |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
_features_for_supervised |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
_features_in_period |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
bars_in_period |
|
75% |
4 |
1 |
0 |
|
50% |
2 |
1 |
|
67% |
| src/finbot/ml/experiment.py |
_classification_metrics |
|
92% |
13 |
1 |
0 |
|
75% |
4 |
1 |
|
88% |
| src/finbot/ml/experiment.py |
_period_to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
_period_from_dict |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/experiment.py |
_object |
|
67% |
3 |
1 |
0 |
|
50% |
2 |
1 |
|
60% |
| src/finbot/ml/experiment.py |
(no function) |
|
100% |
84 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardConfig.__post_init__ |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardConfig.splits |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardConfig.to_dict |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardConfig.from_dict |
|
95% |
20 |
1 |
0 |
|
50% |
2 |
1 |
|
91% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardResult.__post_init__ |
|
100% |
7 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardResult.oos_predictions |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardRunner.__init__ |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
MLWalkForwardRunner.run |
|
100% |
21 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
_validate_test_periods |
|
100% |
5 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
_days_value |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
_datetime_value |
|
83% |
6 |
1 |
0 |
|
75% |
4 |
1 |
|
80% |
| src/finbot/ml/walk_forward.py |
_whole_days |
|
67% |
3 |
1 |
0 |
|
50% |
2 |
1 |
|
60% |
| src/finbot/ml/walk_forward.py |
_period_to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward.py |
(no function) |
|
100% |
48 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
WalkForwardRunner.run |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore.execute |
|
100% |
10 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore.load |
|
90% |
30 |
3 |
0 |
|
79% |
14 |
3 |
|
86% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore._begin |
|
100% |
9 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore._complete |
|
100% |
15 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore._metadata |
|
100% |
5 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore._validate_folds |
|
83% |
12 |
2 |
0 |
|
80% |
10 |
2 |
|
82% |
| src/finbot/ml/walk_forward_artifacts.py |
MLWalkForwardStore._validate_predictions |
|
80% |
20 |
4 |
0 |
|
67% |
12 |
4 |
|
75% |
| src/finbot/ml/walk_forward_artifacts.py |
_required_artifacts |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_fold_path |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_split_to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_period_to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_write_fold_predictions |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_write_oos_predictions |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
_read_csv |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/ml/walk_forward_artifacts.py |
(no function) |
|
100% |
43 |
0 |
7 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/__init__.py |
(no function) |
|
100% |
3 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
TrainingConfiguration.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
ModelMetadata.model_id |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
ModelMetadata.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Prediction.__post_init__ |
|
100% |
17 |
0 |
0 |
|
100% |
16 |
0 |
|
100% |
| src/finbot/models/core.py |
Prediction.to_dict |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Model.metadata |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Model.train |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Model.fit |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Model.predict_proba |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
Model.save |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/core.py |
(no function) |
|
100% |
48 |
0 |
3 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.__init__ |
|
100% |
12 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.metadata |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.train |
|
95% |
20 |
1 |
0 |
|
90% |
10 |
1 |
|
93% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.predict_proba |
|
100% |
12 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.save |
|
100% |
9 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel.load |
|
69% |
13 |
4 |
0 |
|
100% |
0 |
0 |
|
69% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._validate_schema |
|
71% |
7 |
2 |
0 |
|
67% |
6 |
2 |
|
69% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._validate_values |
|
91% |
11 |
1 |
0 |
|
88% |
8 |
1 |
|
89% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._sigmoid |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._parse_artifact |
|
78% |
41 |
9 |
0 |
|
59% |
22 |
9 |
|
71% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._hyperparameters |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/models/logistic.py |
LogisticRegressionModel._parse_finite_numbers |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/models/logistic.py |
load_model |
|
55% |
11 |
5 |
0 |
|
75% |
4 |
1 |
|
60% |
| src/finbot/models/logistic.py |
(no function) |
|
100% |
30 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/portfolio/__init__.py |
(no function) |
|
100% |
2 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Position.market_value |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Position.unrealized_pnl |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Portfolio.apply_fill |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Portfolio._apply_buy_fill |
|
100% |
14 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Portfolio._apply_sell_fill |
|
100% |
16 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Portfolio.positions_value |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
Portfolio.total_value |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/portfolio/portfolio.py |
(no function) |
|
100% |
22 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/__init__.py |
(no function) |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
RiskLimits.__post_init__ |
|
100% |
13 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/risk/models.py |
RiskLimits._validate_fraction |
|
100% |
4 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/risk/models.py |
RiskLimits._validate_positive |
|
100% |
4 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/risk/models.py |
RiskDecision.__post_init__ |
|
86% |
7 |
1 |
0 |
|
88% |
8 |
1 |
|
87% |
| src/finbot/risk/models.py |
RiskDecision.accept |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
RiskDecision.reject |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
SizingDecision.__post_init__ |
|
100% |
8 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/risk/models.py |
SizingDecision.accepted |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
SizingDecision.accept |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
SizingDecision.reject |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/models.py |
(no function) |
|
100% |
36 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/position_sizer.py |
PositionSizer.size |
|
93% |
14 |
1 |
0 |
|
88% |
8 |
1 |
|
91% |
| src/finbot/risk/position_sizer.py |
PositionSizer._validate_inputs |
|
100% |
10 |
0 |
0 |
|
100% |
10 |
0 |
|
100% |
| src/finbot/risk/position_sizer.py |
(no function) |
|
100% |
7 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/risk_manager.py |
RiskManager.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/risk/risk_manager.py |
RiskManager.assess |
|
100% |
8 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/risk/risk_manager.py |
RiskManager._assess_long |
|
93% |
29 |
2 |
0 |
|
92% |
12 |
1 |
|
93% |
| src/finbot/risk/risk_manager.py |
RiskManager._assess_short |
|
100% |
10 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/risk/risk_manager.py |
RiskManager._validate_market_prices |
|
88% |
8 |
1 |
0 |
|
83% |
6 |
1 |
|
86% |
| src/finbot/risk/risk_manager.py |
(no function) |
|
100% |
11 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/__init__.py |
(no function) |
|
100% |
4 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/core.py |
Signal.__post_init__ |
|
100% |
7 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/strategy/core.py |
Strategy.on_bar |
|
100% |
0 |
0 |
1 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/core.py |
(no function) |
|
100% |
18 |
0 |
2 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ProbabilityThresholdPolicy.__post_init__ |
|
100% |
7 |
0 |
0 |
|
100% |
6 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ProbabilityThresholdPolicy.to_signal |
|
100% |
18 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ProbabilityThresholdPolicy._validate_probability |
|
100% |
2 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ModelStrategy.__init__ |
|
100% |
8 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ModelStrategy.from_artifact |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ModelStrategy.predictions |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ModelStrategy.prime |
|
100% |
5 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
ModelStrategy.on_bar |
|
100% |
20 |
0 |
0 |
|
90% |
10 |
1 |
|
97% |
| src/finbot/strategy/ml.py |
PredictionStrategy.__init__ |
|
100% |
6 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
PredictionStrategy.on_bar |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/strategy/ml.py |
(no function) |
|
100% |
28 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
RandomStrategy.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
RandomStrategy.on_bar |
|
100% |
6 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
BuyOnceStrategy.__init__ |
|
100% |
1 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
BuyOnceStrategy.on_bar |
|
100% |
4 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
SmaCrossoverStrategy.__init__ |
|
100% |
8 |
0 |
0 |
|
100% |
4 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
SmaCrossoverStrategy.prime |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
SmaCrossoverStrategy._get_direction |
|
80% |
5 |
1 |
0 |
|
75% |
4 |
1 |
|
78% |
| src/finbot/strategy/strategies.py |
SmaCrossoverStrategy.on_bar |
|
100% |
17 |
0 |
0 |
|
100% |
8 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
_create_buy_once |
|
100% |
3 |
0 |
0 |
|
100% |
2 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
create_strategy |
|
100% |
5 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |
| src/finbot/strategy/strategies.py |
(no function) |
|
100% |
22 |
0 |
0 |
|
100% |
0 |
0 |
|
100% |