CLAUDE.md/docs/library.md updated to match the sell.py/parkcash.py/ scan.py changes in the preceding commits. docs/decisions.md gets the full reasoning trail: the Black-Scholes closed form marked superseded, the actual backtest entry (BHP/AL touch-probability table) that both sell.py and library.md already cited but was never written, the discretization-bias caveat on that backtest, the price-impact-cap and demolition-value decisions. docs/roadmap.md pruned back to open items only - finished work is discoverable from CLAUDE.md/library.md/ decisions.md instead of staying listed as a done backlog entry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
47 lines
3.1 KiB
Markdown
47 lines
3.1 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/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.
|