CRE Capital Stack Restructuring Linear Programming Engine
Debt-for-equity recapitalizations require optimizing investor recovery payouts across multi-tiered debt stacks. Build a capital stack solver using SciPy Optimize (Linprog) to compute optimal debt-for-equity conversion splits across Senior, Mezzanine, and Preferred Equity tranches. Calculate precise payout solutions in under 2 seconds.
What you are building
Develop a linear programming capital stack optimizer using SciPy to minimize distress write-downs during real estate workouts.
How work is evaluated
Evaluates linear solver correctness against ground-truth capital stack waterfall payouts.
Datasets
Public datasets, plus the private datasets you have access to.
How submissions are scored
Senior Priority Verification
Senior debt must be paid in full before Mezzanine receives funds
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
Payout Allocation Precision
Error in dollar allocation compared to closed-form waterfall solution • target: 0 • range: 0-1
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
Learning goals
Formulate capital stack waterfall priorities as linear inequality constraints
Implement SciPy `linprog` or `minimize` routines to optimize equity recovery allocations
Calculate tranche write-downs and equity ownership splits post-restructuring
Generate exportable capital stack workout distribution charts
Resources
Commercial property loan balances and restructuring settlement terms.
Challenge setup
Evaluates linear solver correctness against ground-truth capital stack waterfall payouts.
Challenge input
JSON with asset_value, senior_debt, mezz_debt, equity
SciPy Optimize
Solves constrained linear programming allocation problems
Evaluated output
JSON with senior_payout, mezz_payout, equity_payout, total_recovered
- Senior debt must be paid in full before Mezzanine receives funds
- Error in dollar allocation compared to closed-form waterfall solution • target: 0 • range: 0-1
- Benchmark: LinprogWaterfallBench
- Payout Allocation Precision target: 0
- 1 public reference case
- Python execution harness
- Python sandbox (unavailable on Versalist)
Shows the first task, up to three tools, and up to three evidence items.
View technical recipe
Configured tools
- TensorBoard · Required
- Ax (Adaptive Experimentation) · Optional
- Voiceflow · Optional
Evaluation contract
- Senior Priority Verification · Weight 1
- Payout Allocation Precision · Weight 1
Metrics
- Payout Allocation Precision · Target 0
Benchmarks
- LinprogWaterfallBench
- general
Reference cases
- 1 public reference case
Workflow tasks
- Task 1
Input: JSON with asset_value, senior_debt, mezz_debt, equity
Output: JSON with senior_payout, mezz_payout, equity_payout, total_recovered
Execution harness: Python
Evaluation tools
- SciPy Optimize · Optimization Engine
Recipe freeze marker
No recipe freeze time is recorded.