> ## Documentation Index
> Fetch the complete documentation index at: https://village-docs.villagelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Simulation Overview

> Understanding the annual processing pipeline

## 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.

<Info>
  The engine processes each year as a discrete unit, applying a strict sequence of operations that mirror real-world ESOP administration.
</Info>

## The Annual Cycle

Each simulation year follows a 9-step process:

```mermaid theme={null}
graph LR
    S0[Step 0: Turnover] --> S1[Step 1: Initialization]
    S1 --> S2[Step 2: Share Pool]
    S2 --> S3[Step 3: Allocate]
    S3 --> S4[Step 4: Contribution]
    S4 --> S5[Step 5: Vesting]
    S5 --> S6[Step 6: Diversification]
    S6 --> S7[Step 7: Repurchases]
    S7 --> S8[Step 8: Year-End]
    
    style S2 fill:#29371F,color:#fff
    style S7 fill:#29371F,color:#fff
```

## Key Processing Steps

<CardGroup cols={2}>
  <Card title="Step 0: Turnover Projection" icon="chart-line" href="/simulation/step-0-turnover">
    Forecast which employees will terminate
  </Card>

  <Card title="Step 1: Initialization" icon="play" href="/simulation/step-1-initialization">
    Calculate share price and prepare for annual processing
  </Card>

  <Card title="Step 2: Share Pool" icon="shapes" href="/simulation/step-2-share-pool">
    Calculate shares available for allocation (loan-by-loan mechanics)
  </Card>

  <Card title="Step 3: Allocate Shares" icon="divide" href="/simulation/step-3-allocation">
    Distribute shares to eligible participants pro-rata by compensation
  </Card>

  <Card title="Step 4: Contribution" icon="hand-holding-dollar" href="/simulation/step-4-contribution">
    Determine company contribution for the year
  </Card>

  <Card title="Step 5: Update Vesting" icon="check-double" href="/simulation/step-5-vesting">
    Calculate vested balances and potential forfeitures
  </Card>

  <Card title="Step 6: Diversification" icon="chart-pie" href="/simulation/step-6-diversification">
    Process diversification elections
  </Card>

  <Card title="Step 7: Repurchases" icon="money-bill-transfer" href="/simulation/step-7-repurchase">
    Execute share repurchases using the Funding Waterfall
  </Card>

  <Card title="Step 8: Year-End Closing" icon="flag-checkered" href="/simulation/step-8-year-end">
    Finalize annual results and prepare for next year
  </Card>

  <Card title="All Steps" icon="list-ol" href="/architecture/simulation-core">
    Complete step-by-step breakdown
  </Card>
</CardGroup>

## Simulation Inputs

<Tabs>
  <Tab title="PlanRules">
    Legal framework (rarely changes)

    ```json theme={null}
    {
      "vesting_schedule": {...},
      "distribution_policy": {...},
      "cash_usage_policy": [...]
    }
    ```
  </Tab>

  <Tab title="OperatingAssumptions">
    Annual strategy (changes frequently)

    ```json theme={null}
    {
      "contribution_policy": {...},
      "share_valuation": {...},
      "repurchase_strategy": {...}
    }
    ```
  </Tab>

  <Tab title="InitialState">
    Current ESOP status

    ```json theme={null}
    {
      "participants": [...],
      "trust_cash": {...},
      "esop_loans": [...]
    }
    ```
  </Tab>

  <Tab title="SystemConfiguration">
    Simulation settings

    ```json theme={null}
    {
      "projection_years": 20,
      "include_turnover": true
    }
    ```
  </Tab>
</Tabs>

## Simulation Outputs

After running a simulation, you receive:

<AccordionGroup>
  <Accordion title="Annual Projections" icon="calendar-days">
    Year-by-year forecasts for all key metrics:

    * Company contributions
    * Share releases and allocations
    * Repurchase obligations
    * Trust cash flows
    * Loan balances
  </Accordion>

  <Accordion title="Participant Snapshots" icon="users">
    Individual account details for every participant, every year:

    * Allocated shares
    * Vested percentages
    * Account values
    * Diversification status
  </Accordion>

  <Accordion title="Trust State" icon="building-columns">
    Complete trust accounting:

    * Cash balances by source
    * Share pools (allocated, suspense, unallocated)
    * Loan balances and terms
  </Accordion>

  <Accordion title="Summary Metrics" icon="chart-mixed">
    Key insights:

    * Total 10/20-year repurchase obligations
    * Peak cash year
    * Average annual contribution
    * Final trust solvency
  </Accordion>
</AccordionGroup>

## Simulation Types

<Tabs>
  <Tab title="Baseline Forecast">
    Single projection with best-estimate assumptions.

    **Use For:**

    * Annual planning
    * Budget preparation
    * Board presentations
  </Tab>

  <Tab title="Scenario Comparison">
    Multiple simulations with different assumptions.

    **Use For:**

    * Comparing contribution strategies
    * Evaluating refinancing options
    * Stress testing

    **Example:**

    * Scenario A: \$500K annual contribution
    * Scenario B: \$600K annual contribution
    * Compare 10-year obligations
  </Tab>

  <Tab title="Sensitivity Analysis">
    Systematically vary key assumptions.

    **Use For:**

    * Understanding model sensitivity
    * Identifying key drivers
    * Risk assessment

    **Example:**
    Vary share price growth: -5%, 0%, +5%, +10%
  </Tab>
</Tabs>

## Running a Simulation

<Steps>
  <Step title="Prepare Inputs">
    Configure PlanRules, OperatingAssumptions, InitialState
  </Step>

  <Step title="Execute">
    ```python theme={null}
    results = engine.simulate(
        plan_rules=plan_rules,
        operating_assumptions=operating_assumptions,
        initial_state=initial_state,
        system_config=system_config
    )
    ```
  </Step>

  <Step title="Review Results">
    Analyze outputs, visualize trends, identify issues
  </Step>

  <Step title="Iterate">
    Adjust assumptions and re-run as needed
  </Step>
</Steps>

## Best Practices

<CardGroup cols={2}>
  <Card title="Start Simple" icon="seedling">
    Begin with basic assumptions, add complexity gradually
  </Card>

  <Card title="Validate Inputs" icon="clipboard-check">
    Ensure census data and financials are accurate
  </Card>

  <Card title="Run Multiple Scenarios" icon="code-compare">
    Don't rely on a single forecast
  </Card>

  <Card title="Document Assumptions" icon="file-lines">
    Record rationale for all major assumptions
  </Card>

  <Card title="Update Annually" icon="calendar-check">
    Recalibrate models with actual results
  </Card>

  <Card title="Focus on Trends" icon="chart-line">
    Look for patterns, not individual year precision
  </Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Run Quick Start" icon="rocket" href="/quickstart">
    Create your first simulation
  </Card>

  <Card title="Explore Examples" icon="code" href="/examples/basic-simulation">
    See complete simulation examples
  </Card>

  <Card title="Processing Steps" icon="list-ol" href="/architecture/simulation-core">
    Deep dive into each step
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference/simulate">
    Full API documentation
  </Card>
</CardGroup>
