Running It Yourself

Everything is a plain script. No service, no database, no build step.

Refresh prices and the income band

``bash python3 scripts/fetch_price_history.py --region eu # 90 days per item, ~1 min python3 scripts/price_bands.py --write # re-value the plan across all of it ``

--only-missing skips items already on disk. price_bands.py without --write just prints the band and the largest exposures.

Rebuild the dashboard

``bash python3 scripts/build_dashboard.py \ --data docs/assets/dashboard_data.json \ --basemap docs/assets/basemap.png \ --empire out/eu_300cp_v2/optimized_empire.json \ --out dashboard/silver_atlas.html python3 scripts/check_dashboard.py # 44 expectations in a real browser ``

The output is one self-contained file - open it directly, no server needed. scripts/serve.py exists if you want one anyway.

Re-solve

``bash python3 scripts/run_optimizer.py --budget 300 --prices inputs/prices_eu_vp.json \ --out out/my_run ``

Expect minutes to hours depending on budget and how tight you set the MIP gap. The 300 CP run was proven optimal.

Regenerate this wiki

``bash python3 scripts/build_wiki.py ``

Every figure in these pages is read from the payload, so they cannot drift. Do not hand-edit - the next run overwrites you.

Other tools

scriptwhat it does
fetch_order_book.pyboth sides of the order ladder, for sellability
compare_runs.pydiff two solves - which nodes changed hands
tax_sensitivity.pyhow the plan responds to your tax rate
report.pyper-node breakdown on the command line
model_probe.pywhere a re-solve can realistically run