Skip to main content

Overview

The ESOPTrust is the central accounting hub for all plan assets and liabilities. It represents the legal entity that holds company stock and cash on behalf of plan participants.
New in v0.2: Enhanced multi-loan support with dedicated suspense share tracking per loan!
All ESOP assets are owned by the trust, not by individual participants directly. The trust allocates shares and cash to individual participant accounts according to plan rules.

Model Structure

Key Properties

The TrustCashLedger manages all trust cash, segregated by source:
See: TrustCashLedger Details
Shares are categorized by their allocation status:
Share Conservation Law: Total shares must always equal the sum of allocated, unallocated, and suspense shares. The engine validates this after every processing step.
The trust can have multiple loans, each with dedicated suspense shares:
See: ESOPLoan Details

Methods & Operations

Core Methods

Lifecycle Example

Here’s how an ESOPTrust evolves during a simulation year:
1

Year Start State

2

Company Contribution

3

Loan Payment & Share Release

4

Allocate Shares

5

Process Repurchases

6

Year End Snapshot

Relationship to Other Models

Real-World Example

A typical ESOP Trust state:

Best Practices

Always Validate

Call trust.validate() after any state-modifying operation

Preserve History

Create snapshots before and after major operations

Use Methods

Use provided methods rather than directly modifying attributes

Document Assumptions

Log rationale for any manual adjustments

Next Steps

TrustCashLedger

Cash segregation details

ESOPLoan

Loan structure and mechanics

Simulation Core

How trust state evolves during processing