Coverage report: 74%

Files Functions Classes

coverage.py v7.10.7, created at 2025-10-04 20:38 +0000

File function statements missing excluded branches partial coverage
src/stable_yield_lab/__init__.py (no function) 17 0 0 0 0 100%
src/stable_yield_lab/analytics/__init__.py (no function) 2 0 0 0 0 100%
src/stable_yield_lab/analytics/attribution.py _ensure_datetime_index 6 2 0 4 2 60%
src/stable_yield_lab/analytics/attribution.py _infer_periods_per_year 8 8 0 4 0 0%
src/stable_yield_lab/analytics/attribution.py _prepare_weight_schedule 19 5 0 10 5 66%
src/stable_yield_lab/analytics/attribution.py compute_attribution 83 13 0 24 8 79%
src/stable_yield_lab/analytics/attribution.py load_weight_schedule 8 8 0 4 0 0%
src/stable_yield_lab/analytics/attribution.py (no function) 16 0 0 0 0 100%
src/stable_yield_lab/analytics/metrics.py _coerce_float 4 2 0 0 0 50%
src/stable_yield_lab/analytics/metrics.py weighted_mean 22 2 0 12 2 88%
src/stable_yield_lab/analytics/metrics.py net_apy 14 2 0 6 2 80%
src/stable_yield_lab/analytics/metrics.py add_net_apy_column 5 1 0 2 1 71%
src/stable_yield_lab/analytics/metrics.py hhi 16 3 0 8 1 75%
src/stable_yield_lab/analytics/metrics.py hhi._group_hhi 6 0 0 2 0 100%
src/stable_yield_lab/analytics/metrics.py Metrics.weighted_mean 1 0 0 0 0 100%
src/stable_yield_lab/analytics/metrics.py Metrics.portfolio_apr 7 7 0 4 0 0%
src/stable_yield_lab/analytics/metrics.py Metrics.groupby_chain 5 1 0 2 1 71%
src/stable_yield_lab/analytics/metrics.py Metrics.top_n 4 1 0 2 1 67%
src/stable_yield_lab/analytics/metrics.py Metrics.net_apy 1 1 0 0 0 0%
src/stable_yield_lab/analytics/metrics.py Metrics.add_net_apy_column 1 0 0 0 0 100%
src/stable_yield_lab/analytics/metrics.py Metrics.hhi 1 0 0 0 0 100%
src/stable_yield_lab/analytics/metrics.py (no function) 28 1 0 2 1 93%
src/stable_yield_lab/analytics/performance.py cumulative_return 3 0 0 2 0 100%
src/stable_yield_lab/analytics/performance.py nav_series 13 0 0 6 0 100%
src/stable_yield_lab/analytics/performance.py nav_trajectories 4 1 0 2 1 67%
src/stable_yield_lab/analytics/performance.py yield_trajectories 3 1 0 2 1 60%
src/stable_yield_lab/analytics/performance.py _normalise_weights 5 1 0 2 1 71%
src/stable_yield_lab/analytics/performance.py _prepare_calendar 12 5 0 10 4 50%
src/stable_yield_lab/analytics/performance.py _infer_periods_per_year 9 3 0 6 3 60%
src/stable_yield_lab/analytics/performance.py _simulate_rebalanced_portfolio 34 3 0 10 2 89%
src/stable_yield_lab/analytics/performance.py run_rebalance_scenarios 38 6 0 16 5 80%
src/stable_yield_lab/analytics/performance.py (no function) 28 0 0 0 0 100%
src/stable_yield_lab/analytics/portfolio.py _normalise_weights 9 3 0 6 3 60%
src/stable_yield_lab/analytics/portfolio.py allocate_mean_variance 12 0 0 2 1 93%
src/stable_yield_lab/analytics/portfolio.py expected_apy 4 0 0 0 0 100%
src/stable_yield_lab/analytics/portfolio.py tvl_weighted_risk 6 0 0 0 0 100%
src/stable_yield_lab/analytics/portfolio.py tracking_error 20 3 0 12 3 81%
src/stable_yield_lab/analytics/portfolio.py apy_performance_summary 30 9 0 10 3 70%
src/stable_yield_lab/analytics/portfolio.py (no function) 11 0 0 0 0 100%
src/stable_yield_lab/analytics/risk.py _require_riskfolio 2 0 2 0 0 100%
src/stable_yield_lab/analytics/risk.py _call_assets_stats 4 0 0 0 0 100%
src/stable_yield_lab/analytics/risk.py summary_statistics 12 1 0 8 3 80%
src/stable_yield_lab/analytics/risk.py efficient_frontier 11 1 0 2 1 85%
src/stable_yield_lab/analytics/risk.py risk_contributions 6 6 0 0 0 0%
src/stable_yield_lab/analytics/risk.py (no function) 8 0 0 0 0 100%
src/stable_yield_lab/attribution.py (no function) 2 2 0 0 0 0%
src/stable_yield_lab/core/__init__.py (no function) 5 0 0 0 0 100%
src/stable_yield_lab/core/constants.py (no function) 3 0 0 0 0 100%
src/stable_yield_lab/core/models.py Pool.to_dict 3 0 0 0 0 100%
src/stable_yield_lab/core/models.py PoolReturn.to_dict 1 0 0 0 0 100%
src/stable_yield_lab/core/models.py (no function) 25 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py PoolRepository.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py PoolRepository.add 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py PoolRepository.extend 1 1 0 0 0 0%
src/stable_yield_lab/core/repositories.py PoolRepository.filter 14 1 0 12 1 92%
src/stable_yield_lab/core/repositories.py PoolRepository.to_dataframe 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py PoolRepository.__len__ 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py PoolRepository.__iter__ 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py ReturnRepository.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py ReturnRepository.extend 1 0 0 0 0 100%
src/stable_yield_lab/core/repositories.py ReturnRepository.to_timeseries 5 1 0 2 1 71%
src/stable_yield_lab/core/repositories.py (no function) 17 0 0 0 0 100%
src/stable_yield_lab/metrics.py (no function) 2 2 0 0 0 0%
src/stable_yield_lab/performance.py (no function) 2 2 0 0 0 0%
src/stable_yield_lab/pipeline/__init__.py HistoricalSource.fetch 1 0 0 2 1 67%
src/stable_yield_lab/pipeline/__init__.py _iter_instances 3 0 0 4 1 86%
src/stable_yield_lab/pipeline/__init__.py Pipeline.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/pipeline/__init__.py Pipeline.run 10 0 0 4 0 100%
src/stable_yield_lab/pipeline/__init__.py Pipeline.run_history 9 0 0 2 0 100%
src/stable_yield_lab/pipeline/__init__.py (no function) 19 0 0 0 0 100%
src/stable_yield_lab/portfolio.py (no function) 2 2 0 0 0 0%
src/stable_yield_lab/rebalance.py _normalise_rows 16 16 0 10 0 0%
src/stable_yield_lab/rebalance.py _prepare_targets 19 19 0 8 0 0%
src/stable_yield_lab/rebalance.py run_rebalance 38 38 0 10 0 0%
src/stable_yield_lab/rebalance.py (no function) 13 13 0 0 0 0%
src/stable_yield_lab/reporting/__init__.py _ensure_outdir 3 0 0 0 0 100%
src/stable_yield_lab/reporting/__init__.py _risk_metrics 21 2 0 12 4 82%
src/stable_yield_lab/reporting/__init__.py _weighted_portfolio_returns 13 3 0 6 3 68%
src/stable_yield_lab/reporting/__init__.py _infer_periods_per_year 10 10 0 6 0 0%
src/stable_yield_lab/reporting/__init__.py _annualized_return 13 13 0 8 0 0%
src/stable_yield_lab/reporting/__init__.py _tvl_weighted_average 6 3 0 2 1 50%
src/stable_yield_lab/reporting/__init__.py cross_section_report 130 10 0 48 11 87%
src/stable_yield_lab/reporting/__init__.py cross_section_report._agg 4 1 0 2 1 67%
src/stable_yield_lab/reporting/__init__.py cross_section_report._metrics_for 4 0 0 2 0 100%
src/stable_yield_lab/reporting/__init__.py (no function) 14 0 0 0 0 100%
src/stable_yield_lab/risk_metrics.py (no function) 2 2 0 0 0 0%
src/stable_yield_lab/risk_scoring.py calculate_risk_score 8 0 0 0 0 100%
src/stable_yield_lab/risk_scoring.py score_pool 8 0 0 0 0 100%
src/stable_yield_lab/risk_scoring.py (no function) 7 0 2 0 0 100%
src/stable_yield_lab/sources/__init__.py DataSource.fetch 1 0 0 2 1 67%
src/stable_yield_lab/sources/__init__.py (no function) 11 0 0 0 0 100%
src/stable_yield_lab/sources/base.py HistoricalCSVSource.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/sources/base.py HistoricalCSVSource.fetch 8 1 0 2 1 80%
src/stable_yield_lab/sources/base.py (no function) 7 0 0 0 0 100%
src/stable_yield_lab/sources/beefy.py BeefySource.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/sources/beefy.py BeefySource._get_json 10 5 2 2 0 42%
src/stable_yield_lab/sources/beefy.py BeefySource.fetch 18 2 3 6 2 83%
src/stable_yield_lab/sources/beefy.py (no function) 18 0 0 0 0 100%
src/stable_yield_lab/sources/csv.py CSVSource.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/sources/csv.py CSVSource.fetch 6 0 0 2 0 100%
src/stable_yield_lab/sources/csv.py (no function) 8 0 0 0 0 100%
src/stable_yield_lab/sources/defillama.py DefiLlamaSource.__init__ 2 0 0 0 0 100%
src/stable_yield_lab/sources/defillama.py DefiLlamaSource._load 8 5 2 2 0 30%
src/stable_yield_lab/sources/defillama.py DefiLlamaSource.fetch 13 1 3 6 1 89%
src/stable_yield_lab/sources/defillama.py (no function) 15 0 0 0 0 100%
src/stable_yield_lab/sources/morpho.py MorphoSource.__init__ 1 0 0 0 0 100%
src/stable_yield_lab/sources/morpho.py MorphoSource._post_json 2 2 2 0 0 0%
src/stable_yield_lab/sources/morpho.py MorphoSource._load 9 6 0 4 1 31%
src/stable_yield_lab/sources/morpho.py MorphoSource.fetch 11 1 3 4 1 87%
src/stable_yield_lab/sources/morpho.py (no function) 16 0 0 0 0 100%
src/stable_yield_lab/visualization/__init__.py (no function) 2 0 0 0 0 100%
src/stable_yield_lab/visualization/visualizer.py Visualizer._plt 3 0 2 0 0 100%
src/stable_yield_lab/visualization/visualizer.py Visualizer.bar_apr 13 3 0 6 3 68%
src/stable_yield_lab/visualization/visualizer.py Visualizer.scatter_tvl_apy 20 2 0 12 4 81%
src/stable_yield_lab/visualization/visualizer.py Visualizer.scatter_risk_return 21 2 0 14 6 77%
src/stable_yield_lab/visualization/visualizer.py Visualizer.line_yield 16 2 0 10 4 77%
src/stable_yield_lab/visualization/visualizer.py Visualizer.line_nav 13 2 0 6 3 74%
src/stable_yield_lab/visualization/visualizer.py Visualizer.bar_group_chain 12 2 0 6 3 72%
src/stable_yield_lab/visualization/visualizer.py Visualizer.nav_with_benchmarks 23 3 0 8 4 77%
src/stable_yield_lab/visualization/visualizer.py Visualizer.line_chart 17 2 0 10 2 85%
src/stable_yield_lab/visualization/visualizer.py (no function) 24 0 0 0 0 100%
Total   1350 282 21 424 115 74%

No items found using the specified filter.