nuclear_pf is an open-source Python model for screening nuclear project
finance cases. It is built to compare advanced nuclear, SMR, restart, and
large-reactor benchmark cases using cost, debt-coverage, return, offtake, and
policy-support metrics.
The core question is:
Under what financing, tax-credit, and offtake conditions can advanced nuclear projects become financially viable?
This is a research prototype, not investment advice. The goal is transparency: every output should be reproducible, every assumption should be visible, and every source-backed value should be separated from model assumptions.
The current model computes:
- LCOE, or levelized cost of electricity, in dollars per MWh.
- Average DSCR, or debt service coverage ratio.
- Project IRR.
- Equity IRR.
- Required PPA / offtake strike price to clear DSCR and return targets.
- LPO / PTC / PPA financing-condition scenarios.
- Solar and firm-solar benchmark comparisons.
- Construction draw schedule and optional interest-during-construction logic.
- One-at-a-time sensitivity analysis across capex, WACC, PPA price, construction duration, and capacity factor.
- CSV and Markdown exports for paper tables, appendix work, and chart inputs.
NuScale/UAMPS CFPP- cancelled SMR project / high-capex stress case.Oklo Aurora 15 MWe- illustrative forward-looking advanced reactor case.Crane/TMI Restart / Microsoft- nuclear restart and contracted offtake case.Vogtle Units 3 & 4 Benchmark- contextual large-reactor construction-risk benchmark.
Crane/TMI is treated as restart economics, not proof of new-build SMR cost competitiveness. Oklo is treated as an illustrative case where several inputs remain model assumptions pending stronger public project-level disclosures.
nuclear-pf/
backend/ Python package, CLI, tests, install metadata
docs/ Recaps, learning materials, reporting templates
paper/ Publication workspace and generated model outputs
research/ Source notes, assumption logs, primary-source matrix
From the repository root:
cd backend
python -m pip install -e .
python -m nuclear_pfRun the full paper-oriented output packet:
python -m nuclear_pf --scenario-case all --solve-ppa --include-solar --include-sensitivity --exportRun tests:
python -m unittest discover -s testsThe latest local test baseline is:
Ran 56 tests
OK
Generated model outputs are saved under:
paper/model_outputs/
The output folder is organized by case:
00_preset_comparison/
01_oklo/
02_nuscale/
03_crane/
Each case folder can include:
scenario_envelope.csv/.mdppa_requirements.csv/.mdsolar_benchmark.csv/.mdsensitivity.csv/.md
These files are intended for paper figures, appendix tables, spreadsheet review, and reproducibility checks.
Source and assumption tracking lives in:
research/preset_source_notes.md
research/primary_sources/source_matrix.md
research/primary_sources/sources.bib
research/model_accuracy_review_2026-06-26.md
The paper workspace is in:
paper/
That folder tracks manuscript planning, claim-evidence mapping, source hunting, and generated model outputs.
This project demonstrates:
- Python package design and CLI tooling.
- Energy finance modeling.
- Nuclear deployment and project-finance research.
- Reproducible model outputs.
- Automated tests.
- Source discipline and assumption management.
- Technical communication through papers, recaps, and research notes.
This is a screening model, not a bank-grade project finance model. It does not yet include full tax equity treatment, depreciation, reserve accounts, debt sculpting, fuel-cycle modeling, decommissioning cost, refinancing, merchant tail risk, or legal eligibility analysis for tax credits.
Use the outputs as transparent research artifacts, not as investment, tax, legal, accounting, or engineering advice.