Skip to content

Model structural overhang vs. bleed-off (fix net-benefit triviality)#2

Merged
privatejoel merged 1 commit into
mainfrom
model/overhang-bleed-off
Jun 3, 2026
Merged

Model structural overhang vs. bleed-off (fix net-benefit triviality)#2
privatejoel merged 1 commit into
mainfrom
model/overhang-bleed-off

Conversation

@privatejoel

Copy link
Copy Markdown
Owner

Why

Resolves the critique that surfaced in review: "above-target" ≠ "liquidate." Under steady demand you don't dump inventory — you pause replenishment and let it bleed off. The previous rule compared an annual carry against a one-time clearance loss, so it fired on virtually everything. This makes the act/hold decision honest and per-pool.

Model change

  • Patience window (clearWindowMonths, default 2). Above-target stock that sells through within the window at current demand is Bleeding Off (no clearance). Only what's left is a Structural Overhang — the actionable base for carrying-cost and clearance math.
  • Carry / clearance / recapture now compute on the overhang, not gross excess → the rule stops trivially firing.
  • Recalibrated demand so the slow segments (EV, luxury) carry genuinely soft run-rates and form a real months-long overhang — the EV-glut / slow-luxury story now holds for the right reason. Fast pools (e.g. Tucson) correctly read Bleeding Off.
  • New statuses Overhang / Bleeding Off; dashboard gains a bleed-off window slider, a months-to-clear reality check per row, and net-benefit gating on the per-row action.

Docs

  • METHODOLOGY.md §3/§5 rewritten for the two-step rule; §7 baseline refreshed.
  • New §11 — OEM-owned vs. dealer-floorplanned capital (reconciles the OEM and Retail layers).
  • New §12 — the liquidation channel ladder (incentive / fleet / auction) with haircut ranges and the residual-value side effect.
  • README.md — approach, key results, structure, and defensibility updated.

Baseline (every figure reproduces from the data)

Capital deployed $2.80B
Above target (gross) $603M (22%)
Structural overhang $320M (11%)
Carry on overhang $58M/yr
Clearance loss $19M · Recaptured $301M · Net $38M
Stockout gap $216M (fully covered)

Verification

  • tsc --noEmit clean · vite build succeeds
  • A harness eval'ing the actual HYUNDAI_INVENTORY + model formulas reproduces the documented baseline exactly (MATCH ✓).

🤖 Generated with Claude Code

Addresses the core critique that "above-target" is not the same as
"liquidate" — under steady demand you pause replenishment and let stock
bleed off; you only clear inventory that won't self-resolve.

Model:
- New `clearWindowMonths` patience window. Above-target stock that sells
  through within it is "Bleeding Off" (no clearance); only the remainder
  is a "Structural Overhang" and the actionable base for carry/clear.
- Carry-vs-clear and recapture now compute on the overhang, not gross
  excess, so the rule stops trivially firing on everything.
- Recalibrated demand so the slow segments (EV, luxury) carry genuinely
  soft run-rates → a real months-long overhang, telling the EV-glut /
  slow-luxury story for the right reason. Fast pools (Tucson) read
  "Bleeding Off". Every documented figure reproduces from the data.
- New statuses Overhang / Bleeding Off; dashboard gains a bleed-off
  window slider, a months-to-clear reality check, and per-row gating.

Docs (METHODOLOGY.md):
- §3/§5 rewritten for the two-step rule; §7 baseline refreshed.
- New §11 (OEM-owned vs dealer-floorplanned capital) and §12 (the
  liquidation channel ladder: incentive / fleet / auction + residual hit).

Baseline now: $2.80B deployed, $603M above target, of which only $320M is
structural overhang; $58M/yr carry, $19M clearance, $301M recaptured,
$38M net, $216M stockout gap fully covered.

Verified: tsc --noEmit clean; vite build; data reproduces docs exactly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@privatejoel privatejoel merged commit df423c5 into main Jun 3, 2026
1 check passed
@privatejoel privatejoel deleted the model/overhang-bleed-off branch June 3, 2026 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant