https://github.com/sjbtGiT2054/portfolio-engine
· scanned 2026-06-16 00:14 UTC (2 months, 2 weeks ago)
19 raw signals (0 security + 19 graph)
Last scanned 2 months, 2 weeks ago · v1 · 18 actionable findings from 1 signal source. 1 repeated signal grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 280 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
load_config |
software | healthy | main.py:33 |
main |
software | healthy | main.py:38 |
synthetic_returns |
software | healthy | tests/test_robustness.py:17 |
test_intensity_in_unit_interval_and_psd |
software | healthy | tests/test_robustness.py:26 |
test_shrinks_toward_identity |
software | healthy | tests/test_robustness.py:34 |
test_resampled_weights_shape_and_sums |
software | healthy | tests/test_robustness.py:46 |
test_sensitivity_report_fields |
software | healthy | tests/test_robustness.py:58 |
test_positive_bump_does_not_cut_own_weight |
software | healthy | tests/test_robustness.py:72 |
test_recovers_injected_sign_and_magnitude |
software | healthy | tests/test_macro.py:15 |
test_negative_relationship_recovered |
software | healthy | tests/test_macro.py:31 |
test_pure_noise_flagged_low_confidence |
software | healthy | tests/test_macro.py:40 |
test_too_few_points_low_confidence |
software | healthy | tests/test_macro.py:48 |
test_estimate_sensitivities_shape |
software | healthy | tests/test_macro.py:55 |
test_none_series_skipped |
software | healthy | tests/test_macro.py:69 |
test_tilt_maths |
software | healthy | tests/test_macro.py:80 |
test_confidence_is_magnitude_weighted_blend |
software | healthy | tests/test_macro.py:91 |
test_zero_deviation_no_views |
software | healthy | tests/test_macro.py:101 |
test_bl_view_is_prior_plus_tilt |
software | healthy | tests/test_macro.py:109 |
test_views_feed_black_litterman_cleanly |
software | healthy | tests/test_macro.py:118 |
test_flat_series_gives_flat_baseline |
software | healthy | tests/test_macro.py:133 |
test_upward_trend_extrapolates_up |
software | healthy | tests/test_macro.py:140 |
test_horizon_length |
software | healthy | tests/test_macro.py:147 |
test_get_series_returns_none_on_bad_source |
software | healthy | tests/test_macro.py:155 |
test_catalogue_integrity |
software | healthy | tests/test_macro.py:166 |
frame |
software | healthy | tests/test_holdings_input.py:14 |
test_amounts_only |
software | healthy | tests/test_holdings_input.py:19 |
test_weights_only_summing |
software | healthy | tests/test_holdings_input.py:25 |
test_weights_not_summing_normalised_with_note |
software | healthy | tests/test_holdings_input.py:31 |
test_both_given_amounts_win_with_note |
software | healthy | tests/test_holdings_input.py:38 |
test_true_mix_rejected |
software | healthy | tests/test_holdings_input.py:44 |
test_missing_values_rejected |
software | healthy | tests/test_holdings_input.py:50 |
test_empty_rejected |
software | healthy | tests/test_holdings_input.py:54 |
test_duplicate_tickers_rejected |
software | healthy | tests/test_holdings_input.py:58 |
test_ticker_case_and_whitespace_cleaned |
software | healthy | tests/test_holdings_input.py:63 |
idx |
software | healthy | tests/test_analyzer.py:15 |
test_usd_passthrough |
software | healthy | tests/test_analyzer.py:20 |
test_pence_divides_by_100_then_fx |
software | healthy | tests/test_analyzer.py:26 |
test_gbx_alias_handled |
software | healthy | tests/test_analyzer.py:34 |
test_other_currency_multiplies_fx |
software | healthy | tests/test_analyzer.py:40 |
test_fx_gap_forward_filled |
software | healthy | tests/test_analyzer.py:47 |
test_missing_fx_raises |
software | healthy | tests/test_analyzer.py:53 |
test_single_holding_is_max |
software | healthy | tests/test_analyzer.py:60 |
test_equal_weights |
software | healthy | tests/test_analyzer.py:63 |
test_normalises_unsummed_weights |
software | healthy | tests/test_analyzer.py:67 |
setUp |
software | healthy | tests/test_analyzer.py:103 |
test_point_below_frontier |
software | healthy | tests/test_analyzer.py:77 |
test_point_on_frontier_has_zero_gaps |
software | healthy | tests/test_analyzer.py:84 |
test_vol_beyond_frontier_clamps_with_note |
software | healthy | tests/test_analyzer.py:89 |
test_return_below_minimum_notes_minvol |
software | healthy | tests/test_analyzer.py:94 |
test_full_stat_set |
software | healthy | tests/test_analyzer.py:113 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
config.yaml |
software | healthy | config.yaml |
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
views.yaml |
software | healthy | views.yaml |
DEPLOY.md |
software | healthy | DEPLOY.md |
LICENSE |
software | healthy | LICENSE |
main.py |
software | healthy | main.py |
requirements.txt |
software | healthy | requirements.txt |
DISCLAIMER.md |
software | healthy | DISCLAIMER.md |
test_robustness.py |
software | healthy | tests/test_robustness.py |
test_macro.py |
software | healthy | tests/test_macro.py |
test_holdings_input.py |
software | healthy | tests/test_holdings_input.py |
test_analyzer.py |
software | healthy | tests/test_analyzer.py |
test_user_optimiser.py |
software | healthy | tests/test_user_optimiser.py |
test_black_litterman.py |
software | healthy | tests/test_black_litterman.py |
Investment_Policy_Statement.md |
software | healthy | docs/Investment_Policy_Statement.md |
Rebalance_Log.md |
software | healthy | docs/Rebalance_Log.md |
Macro_Assessment_Template.md |
software | healthy | docs/Macro_Assessment_Template.md |
Macro_Assessment_2026-06.md |
software | healthy | docs/Macro_Assessment_2026-06.md |
README.md |
software | healthy | dashboard/README.md |
app.py |
software | healthy | dashboard/app.py |
requirements.txt |
software | healthy | dashboard/requirements.txt |
optimiser.py |
software | healthy | engine/optimiser.py |
__init__.py |
software | healthy | engine/__init__.py |
robustness.py |
software | healthy | engine/robustness.py |
black_litterman.py |
software | healthy | engine/black_litterman.py |
capm.py |
software | healthy | engine/capm.py |
macro.py |
software | healthy | engine/macro.py |
risk.py |
software | healthy | engine/risk.py |
backtest.py |
software | healthy | engine/backtest.py |
export.py |
software | healthy | engine/export.py |
riskfree.py |
software | healthy | engine/riskfree.py |
charts.py |
software | healthy | engine/charts.py |
analyzer.py |
software | healthy | engine/analyzer.py |
stats.py |
software | healthy | engine/stats.py |
macro_sensitivity.py |
software | healthy | engine/macro_sensitivity.py |
data.py |
software | healthy | engine/data.py |
user_optimiser.py |
software | healthy | engine/user_optimiser.py |
report.py |
software | healthy | engine/report.py |
results.json |
software | healthy | outputs/dashboard/results.json |
CLAUDE.md |
quality | healthy | CLAUDE.md |
| Label | Layer | Status | Path |
|---|---|---|---|
TestLedoitWolf |
software | healthy | tests/test_robustness.py:25 |
TestResampling |
software | healthy | tests/test_robustness.py:45 |
TestSensitivity |
software | healthy | tests/test_robustness.py:57 |
TestSensitivityEstimation |
software | healthy | tests/test_macro.py:14 |
TestViewConstruction |
software | healthy | tests/test_macro.py:79 |
TestBaselinePath |
software | healthy | tests/test_macro.py:132 |
TestGracefulDegradation |
software | healthy | tests/test_macro.py:154 |
TestHoldingsInput |
software | healthy | tests/test_holdings_input.py:18 |
TestCurrencyConversion |
software | healthy | tests/test_analyzer.py:19 |
TestHHI |
software | healthy | tests/test_analyzer.py:59 |
TestFrontierGap |
software | healthy | tests/test_analyzer.py:72 |
TestSingleAssetPortfolio |
software | healthy | tests/test_analyzer.py:100 |
TestValidation |
software | healthy | tests/test_user_optimiser.py:30 |
TestSolutions |
software | healthy | tests/test_user_optimiser.py:50 |
TestTwoTickerEdgeCase |
software | healthy | tests/test_user_optimiser.py:101 |
TestBacktestGates |
software | healthy | tests/test_user_optimiser.py:127 |
TestEquilibrium |
software | healthy | tests/test_black_litterman.py:32 |
TestViews |
software | healthy | tests/test_black_litterman.py:54 |
TestViewsFile |
software | healthy | tests/test_black_litterman.py:96 |
TestMarketWeights |
software | healthy | tests/test_black_litterman.py:116 |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
docs |
software | healthy | docs |
dashboard |
software | healthy | dashboard |
engine |
software | healthy | engine |
outputs |
software | healthy | outputs |
dashboard |
software | healthy | outputs/dashboard |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-r077_m2j |
software | healthy | /tmp/repobility-clone-r077_m2j |
This page is publicly accessible at:
https://repobility.com/scan/73a2dad9-51cb-4fc1-882d-48c5943f2059/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/73a2dad9-51cb-4fc1-882d-48c5943f2059/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.