LedgerLoom Chapter 12 — Fixed assets and depreciation

This chapter introduces fixed assets (capitalization vs expense) and builds a tiny depreciation engine that emits monthly journal entries.

What you build

  • A small capitalization policy (threshold-based) that classifies purchases as:

    • capitalize → record a fixed asset (balance sheet)

    • expense → record a period cost (income statement)

  • A deterministic straight-line depreciation schedule generator

  • A monthly depreciation event stream:

    Dr Expenses:Depreciation

    Cr Assets:FixedAssets:AccumulatedDepreciation

  • A disposal example (remove cost + accumulated depreciation; recognize gain/loss)

  • A simple control reconciliation: subledger net fixed assets equals the G/L net

How to run

make ll-ch12

Artifacts

The Chapter 12 runner writes outputs/ledgerloom/ch12 containing:

  • capitalization_decisions.csv — purchase classification (capitalize vs expense)

  • fixed_assets_register.csv — asset master data (cost, life, disposal)

  • depreciation_schedule.csv — per-asset monthly schedule (amount, accum, NBV)

  • depreciation_events.csv — the monthly depreciation journal events

  • fixed_assets_control_reconciliation.csv — subledger vs G/L net fixed assets

  • Standard LedgerLoom artifacts: postings, trial balance, statements, invariants, manifest

Notes and limitations

This is a teaching implementation:

  • Straight-line only (no MACRS, double-declining, component depreciation)

  • No partial-month conventions (the example treats the in-service month as a full month)

  • Accumulated depreciation is modeled as a contra-asset account under Assets (it naturally carries a negative balance)

These constraints keep the model small, deterministic, and testable.