[#73] Re-measure the acquired balance sheet: dead loans stay with the corpse #74

Merged
robertismo merged 1 commit from 73-acq-books into master 2026-09-29 21:41:15 +00:00
Owner

Acquisition re-measures the balance sheet (issue #73)

You were right. The engine transferred acquired loans at their stale book value, dead ones included, and the acquirer then amortized the dead bank's deferred write-offs through its own income statement turn after turn — a $1 purchase inheriting someone else's loss stream.

Fix (73a5dad): at acquisition, the position is re-measured from the acquirer's perspective:

  • Dead loans at zero recovery carry no value — their stale principal stays with the corpse (logged: "Bank 4's dead loans (3,191 of stale principal) stay with the corpse").
  • The bargain purchase gain is computed on the re-measured net (live loans, cash, bond positions, standing offers), so both sides of the ledger move together and the accounting identity holds exactly.
  • The acquirer's income statement never sees a write-off from a loan that was already dead when it arrived.
  • Recovery stream caveat: if a future config enables recovery_rate > 0, dead loans still transfer (their recovery entitlement is real value); at the default 0 recovery they are worthless and dropped.

Total economics unchanged — the dead loan's remaining value was already embedded in the insolvent bank's equity, so dropping it lowers the bargain by exactly the write-offs the acquirer would have bled later. The books just tell the truth now: one net gain at acquisition, no foreign losses afterward.

Verification: new regression TestAcquisitionDropsDeadLoans (acquirer's books hold only the live loan, no inherited write-offs over 8 post-acquisition turns, accounting identity exact every turn); the #45 acquisition-accounting test still passes; full go test . and go vet ./... green; spectate smoke: 0 [ai errors, 0 divergences, and the corpse line appears in real games.

## Acquisition re-measures the balance sheet (issue #73) You were right. The engine transferred acquired loans at their stale book value, dead ones included, and the acquirer then amortized the dead bank's deferred write-offs through its own income statement turn after turn — a $1 purchase inheriting someone else's loss stream. **Fix (`73a5dad`):** at acquisition, the position is re-measured from the acquirer's perspective: - Dead loans at zero recovery carry no value — their stale principal stays with the corpse (logged: "Bank 4's dead loans (3,191 of stale principal) stay with the corpse"). - The bargain purchase gain is computed on the re-measured net (live loans, cash, bond positions, standing offers), so both sides of the ledger move together and the accounting identity holds exactly. - The acquirer's income statement never sees a write-off from a loan that was already dead when it arrived. - Recovery stream caveat: if a future config enables `recovery_rate > 0`, dead loans still transfer (their recovery entitlement is real value); at the default 0 recovery they are worthless and dropped. **Total economics unchanged** — the dead loan's remaining value was already embedded in the insolvent bank's equity, so dropping it lowers the bargain by exactly the write-offs the acquirer would have bled later. The books just tell the truth now: one net gain at acquisition, no foreign losses afterward. **Verification:** new regression `TestAcquisitionDropsDeadLoans` (acquirer's books hold only the live loan, no inherited write-offs over 8 post-acquisition turns, accounting identity exact every turn); the #45 acquisition-accounting test still passes; full `go test .` and `go vet ./...` green; spectate smoke: 0 `[ai` errors, 0 divergences, and the corpse line appears in real games.
[#73] Acquisition re-measures the books: dead loans stay with the corpse
All checks were successful
build / build (push) Successful in 24s
73a5dad03a
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Winnie/bankwars!74
No description provided.