Skip to main content

Overview

Step 8 is the final step in the annual processing cycle. It rolls account balances forward, applies yearly evolution to employee data (age, service, compensation), and captures the complete year’s results.
This step transforms in-progress allocations into opening balances for the next year and advances the simulation forward in time.

Core Responsibilities

Balance Rollover

Move allocated/diversified amounts to opening balances

Yearly Evolution

Age employees by 1 year, grow compensation, increment service

Remove Paid-Out Participants

Clean up fully distributed accounts

Capture Results

Store year-end snapshots and KPIs

Processing Phases

Phase 1: Roll Balances Forward

For active employees (not terminated), consolidate the year’s activity:
Example: Result: Employee starts next year with 2,000 opening shares.
Terminated employees do NOT roll balances—their accounts are frozen and distributions are handled via pending_distributions in Step 7.

Phase 2: Identify Fully Paid-Out Participants

Participants who have received all scheduled distributions are marked for removal:
Cleanup: At the end of Step 8, fully paid-out employees are removed from the active list to improve performance in future years.
Example:
  • Employee terminated in 2020
  • 5-year distribution schedule completed in 2025
  • Remaining payout: $0.00
  • Result: Removed from active list after 2025
Removing fully paid-out participants keeps the simulation efficient. They’re preserved in historical snapshots but don’t participate in future processing.

Phase 3: Capture Annual Results

Create a comprehensive year-end snapshot:
Included Metrics:
  • ✅ Share price at year-end
  • ✅ Total shares allocated this year
  • ✅ Total cash allocated
  • ✅ Forfeitures captured
  • ✅ Distributions paid
  • ✅ Active participant count
  • ✅ All compliance events (audit trail)

Phase 4: Apply Yearly Evolution

For remaining active employees, advance time by one year:
Example:
  • Beginning: Age 35
  • End: Age 36
This affects eligibility for diversification (age 55+) and RMD (age 73+).
Timing: Yearly evolution happens at year-end (Step 8), not at the beginning (Step 1).This means that all processing for year N uses the employee data from the beginning of year N, and evolution is applied only after all steps complete.

Phase 5: TrustCashLedger Reconciliation

Emit a complete reconciliation of the TrustCashLedger (no investment earnings in v0.3):
Formula:
After emitting the summary, reset any year-accumulators for next year.

Data Flow

Inputs

Outputs


Compliance Events

Per employee:

Edge Cases

Do NOT roll balances or evolve:
  • Balances frozen at termination
  • Age/service/comp don’t increment
  • Distributions handled via pending_distributions
Only active employees are evolved.
Employees who terminated during year:
  • Participated in Steps 1-7 with beginning-of-year data
  • Do NOT evolve in Step 8
  • Marked as terminated for future years
In rare cases, corrections might create negative balances:
Floor at zero to prevent negative opening balances.
If no compensation growth assumption:
Compensation stays flat year-over-year.

Impact on Next Year

Step 8 sets the stage for the next year’s simulation:
What was allocated_shares this year becomes opening_shares next year:Year 2025 End:
  • opening_shares: 2,000
  • allocated_shares: 0
Year 2026 Start:
  • opening_shares: 2,000 ← from 2025 rollover
  • allocated_shares: 0 ← fresh accumulator

Performance Optimization

Purpose: Reduce active employee list size over timeImpact:
  • Fewer employees to iterate in Steps 1-8
  • Faster projections in later years
  • No loss of data (preserved in snapshots)
Threshold: 0.01 shares or $0.01 cash
Clear year-specific accumulators to prepare for next year:
  • allocated_shares = 0
  • allocated_cash = 0
  • OIA tracking variables reset
Prevents carryover of stale data.
All employees evolved in single loop for efficiency:
Vectorization opportunities if using NumPy/Pandas.

Step 1: Initialization

Uses evolved data from Step 8 of previous year

Step 7: Repurchase

Generates distribution data captured in Step 8

Simulation Core

How Step 8 fits into the annual cycle

TrustCashLedger

Ledger reconciliation details

Summary

Step 8 is the year-end finalization step that:
  • ✅ Rolls share/cash balances forward for active employees
  • ✅ Identifies and removes fully paid-out participants
  • ✅ Captures comprehensive year-end results and KPIs
  • ✅ Applies yearly evolution (age +1, service +1, comp growth)
  • ✅ Reconciles OIA ledger with sources/uses/earnings
  • ✅ Reconciles TrustCashLedger movements (no earnings in v0.3)
  • ✅ Resets accumulators for next year
  • ✅ Emits evolution events for audit trail
Key Insight: Step 8 is the bridge between years. It transforms the current year’s processing results into the starting state for the next year, ensuring continuity and accuracy across multi-year projections.
After Step 8 completes, the engine is ready to loop back to Step 1 for the next year, repeating the 8-step cycle until the projection period ends.