f/tests
Greg Pomerantz 2c48d94f69 Tax engine: fix loss-pool corruption, wash double-subtract, progressive keep
- liquidation is now a pure function of state: the daily mark-to-market
  netting no longer consumes the carried loss pools or the open
  wash-sale candidates (unrealized gains/losses were leaking into the
  carryover pools, so equity[t] depended on past unrealized values)
- loss offsetting is now global (chronological, by type) instead of
  per-symbol: a symbol A gain consuming a symbol B loss marks B's event
  consumed, so a later B repurchase cannot subtract the same loss a
  second time (pools could go negative -> over-taxed gains)
- progressive mode: the reinvested after-tax remainder now uses the
  SAME marginal rates the tax is recorded at (was flat d_keep/c_keep,
  so recorded tax and cash flow diverged); the bracket position also
  advances by net short-term gains
- renames: WASh->WASH, lt_rf/st_rf->lt_fed/st_fed (rf is the project's
  risk-free-rate convention); buys pruned to the 30d wash window;
  dropped the per-call sorted() on the constant bracket tables

tests: wash-sale disallowance; liquidation purity (no-trade day with
unrealized gains must not eat the pool); cross-symbol consumption (no
double subtract). All scenarios verified to fail on the pre-fix code.
2026-10-23 10:21:43 -04:00
..
test_app.py Statistics tab: use the BIL daily total return as rf (Fund Lab convention) 2026-09-02 07:03:17 -04:00
test_data.py Fix Yahoo total-distribution double count (1,957 syms) 2026-09-01 16:23:03 -04:00
test_e2e_browser.py Stock & Portfolio Analyzer: full UI rework 2026-08-24 16:05:27 -04:00
test_fundlab.py CEF stage 2b: per-share financial-highlights parser (cef_annual.py) 2026-08-28 07:30:16 -04:00
test_tax.py Tax engine: fix loss-pool corruption, wash double-subtract, progressive keep 2026-10-23 10:21:43 -04:00