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
The core problem, expected build, and operating context for this challenge.
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.
Challenge datasets
Public datasets, plus the private datasets you have access to.
How submissions are scored
These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.
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.
What you should walk away with
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
Reference links and supporting material
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)
Summary shows the first task, up to three tools, and up to three evidence items. Open the technical recipe to view all configured 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.