Skip to main content

Overview

Calculate shares available for allocation from company contributions and loan releases.

Loan-by-Loan Release

See Simulation Core for detailed explanation.
# Release shares proportional to principal paid on each loan
for loan in esop_loans:
    release_pct = principal_payment / loan.original_principal
    shares_released = loan.original_suspense_shares * release_pct
    
    # Update loan suspense and trust unallocated pool
    loan.suspense_shares -= shares_released
    trust.unallocated_shares += shares_released

Example: Two Loans

# Loan 1: Original $3M, suspense 30,000; principal paid this year: $300K
shares1 = 30_000 * (300_000 / 3_000_000)  # = 3,000

# Loan 2: Original $2M, suspense 15,000; principal paid this year: $200K
shares2 = 15_000 * (200_000 / 2_000_000)  # = 1,500

# Total pool from releases this year
share_pool_from_loans = shares1 + shares2  # = 4,500

# Trust unallocated pool increases by 4,500 shares
trust.unallocated_shares += share_pool_from_loans
Shares are released strictly from the paying loan’s suspense account. This prevents cross-loan contamination and aligns with ERISA collateral rules.