Every building needs a planet-hazard material bundle on top of its normal BuildingCosts (SEA for low pressure, HSE for high pressure, MGC for low gravity, BL for high gravity, INS for cold, TSH for heat - area-scaled where applicable), confirmed against live in-game build panels on Nike. FIO's own BuildRequirements field is an unreliable superset across hazard types, not a direct per-building list - don't use it directly. - puga/planet.py::environment_extras(): the real threshold table. - tools/buildcost.py: full construction material list for one building, optionally on a given planet. - Wired into whatif.py/buy.py (via simulate(planet=...)) and scan.py's own bcost(), so their capex numbers stop silently omitting this. - docs/mechanics.md: the rule, plus a separate forum-sourced note on the CX order-cancellation penalty. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
50 lines
3.3 KiB
Markdown
50 lines
3.3 KiB
Markdown
# Roadmap
|
|
|
|
Open work only - what's already built/fixed is discoverable from `CLAUDE.md`'s Tools list,
|
|
`docs/library.md`, `docs/decisions.md`, and module docstrings, not repeated here.
|
|
|
|
## Todo
|
|
- [ ] `tools/network.py`/`puga/network.py`'s `combine()` doesn't pass `planet` into `simulate()`
|
|
yet (environment-extra construction materials, `puga/planet.py::environment_extras()`) -
|
|
`whatif.py`/`buy.py`/`scan.py` already do.
|
|
- [ ] `tools/arb.py`: inter-CX arbitrage at real fill size (replaces `prun_cxarb.py`, which
|
|
overstated profit 7-11x on 2/4 top hits).
|
|
- [ ] `tools/haul.py`: fuel cost / profit per trip (route.py has the jump graph).
|
|
- [ ] `tools/portfolio.py`: profit-maximizing set of 1-building opportunities under shared
|
|
housing/capex/permits. Ties into backlog #2 (profit/permit ranking, needs this tool to mean
|
|
anything - permits bind at the whole-base level, not per-recipe).
|
|
- [ ] Docs to fill: `docs/apex.md`, `docs/fio.md`, `docs/playbook.md`.
|
|
|
|
## Backlog: review findings, still open (spot-checked against code)
|
|
1. [ ] `scan.py` payback ignores working capital (input stock/output inventory/consumables) - can
|
|
rival building capex for smelting-type recipes. `buy.py` already computes this number.
|
|
2. [ ] No profit/permit ranking (permits bind at the base level, not per-recipe) - needs
|
|
`tools/portfolio.py`'s cross-recipe/whole-base view.
|
|
3. [ ] `scan.py` doesn't charge degradation (capex/180/day) like `simulate.py` does - small but real
|
|
inconsistency between tools ranking the same thing.
|
|
4. [ ] No input-side flow cap (buying a big share of an input's flow should price-impact like
|
|
selling output does) - documented as absent, not modelled.
|
|
5. [ ] `persistence.py --lag 3` default is too low given `docs/mechanics.md`'s weekly workforce
|
|
distribution - real lag is 3-10 days.
|
|
6. [ ] Possible forward-fill bias if any tool reindexes `daily_prices()` onto a full calendar grid
|
|
(it only emits trade days) - would understate volatility for sparse tickers. Not yet confirmed
|
|
whether `persistence.py`/`undervalued.py` actually do this.
|
|
7. [ ] `undervalued.py`'s backtest (+21.3%/3mo) has no control group - meaningless without the
|
|
universe's unconditional return over the same window.
|
|
8. [ ] `persistence.py` measures past margin variance of a market we were NOT in - can't see the
|
|
dominant real risk (our own entry + the next player's compressing margin).
|
|
9. [ ] `undervalued.py::manufacturing_candidates()` keeps the first recipe seen per output, not
|
|
the cheapest (`seen.setdefault`).
|
|
10. [ ] `scan.py` hab cost ignores combined habs (HBB/HBC/HBM/HBL), which can be cheaper per head.
|
|
11. [ ] `scan.py --trip-cost` still defaults to the flat 9250 placeholder despite the real
|
|
`puga/shipping.py` model existing and already used by `whatif.py`.
|
|
12. [ ] `sell.py`'s `s0` is the day's VWAP, not its high - `--tiers` touch probability is slightly
|
|
pessimistic (same discretization conservatism as `empirical_touch()`, see `docs/decisions.md`).
|
|
13. [ ] `empirical_touch()`'s optional `horizon` (fixed-window right-censoring) exists but isn't
|
|
wired into any tool's default call yet.
|
|
|
|
## Open questions
|
|
- FIO REST and FIO API are separate services/keys (`.env`). FIO_REST_KEY works on rest.fnar.net;
|
|
FIO_API_KEY's host is unknown; PRUNplanner's Api-Key works. `doc.fnar.net/api.json` has no
|
|
securitySchemes.
|