Skip to main content

What is a Simulation?

A simulation is a year-by-year projection of all ESOP activities, from company contributions and share releases to diversification elections and repurchase obligations.
The engine processes each year as a discrete unit, applying a strict sequence of operations that mirror real-world ESOP administration.

The Annual Cycle

Each simulation year follows a 9-step process:

Key Processing Steps

Simulation Inputs

Legal framework (rarely changes)
{
  "vesting_schedule": {...},
  "distribution_policy": {...},
  "cash_usage_policy": [...]
}

Simulation Outputs

After running a simulation, you receive:
Year-by-year forecasts for all key metrics:
  • Company contributions
  • Share releases and allocations
  • Repurchase obligations
  • Trust cash flows
  • Loan balances
Individual account details for every participant, every year:
  • Allocated shares
  • Vested percentages
  • Account values
  • Diversification status
Complete trust accounting:
  • Cash balances by source
  • Share pools (allocated, suspense, unallocated)
  • Loan balances and terms
Key insights:
  • Total 10/20-year repurchase obligations
  • Peak cash year
  • Average annual contribution
  • Final trust solvency

Simulation Types

Single projection with best-estimate assumptions.Use For:
  • Annual planning
  • Budget preparation
  • Board presentations

Running a Simulation

1

Prepare Inputs

Configure PlanRules, OperatingAssumptions, InitialState
2

Execute

results = engine.simulate(
    plan_rules=plan_rules,
    operating_assumptions=operating_assumptions,
    initial_state=initial_state,
    system_config=system_config
)
3

Review Results

Analyze outputs, visualize trends, identify issues
4

Iterate

Adjust assumptions and re-run as needed

Best Practices

Start Simple

Begin with basic assumptions, add complexity gradually

Validate Inputs

Ensure census data and financials are accurate

Run Multiple Scenarios

Don’t rely on a single forecast

Document Assumptions

Record rationale for all major assumptions

Update Annually

Recalibrate models with actual results

Focus on Trends

Look for patterns, not individual year precision

Next Steps