Leveraging curtailed renewable energy for data center computing
This repository contains the public-facing research workflow for analyzing California ISO (CAISO) curtailment patterns and evaluating parameterized economic scenarios for flexible data center loads. The release is centered on the canonical notebook sequence in notebooks/01 through notebooks/05, supported by lightweight derived datasets and documentation that explain how to reproduce the analysis.
This research was made possible by the generous support of Next10. We are grateful for their financial contributions, as well as their technical perspective and insights into the California context, which significantly shaped the direction and depth of this work. Please find our joint report here.
The repository provides:
- Five numbered notebooks (
notebooks/01throughnotebooks/05) covering CAISO curtailment analysis, LMP vector construction, electricity cost comparison, and financial modeling - Derived datasets in
data/processed/for lightweight reproduction - An
eval/directory that simulates three data center scheduling strategies (as-is, curtailment-only, carbon-aware) with battery storage and produces comparison plots — run withcd eval && python demo_strategies_combined_plot.py
- Python 3.9 or newer
- Jupyter Notebook or JupyterLab
- The packages listed in
requirements.txt
git clone https://github.com/pennsail/Curtailed-2-Compute.git
cd Curtailed-2-Compute
pip install -r requirements.txtThis repository does not require committing raw CAISO downloads. Instead:
- Read
data/README.mdandDATA_SOURCES.md. - Download raw CAISO inputs separately when needed.
- Place raw curtailment workbooks in
data/. - Place monthly LMP files in
data/LMP_Data/. - Use the included derived vectors in
data/processed/when you want a lightweight starting point.
Run the notebooks in order because each step depends on outputs or assumptions from earlier stages.
notebooks/01_curtailed_energy_analysis.ipynbAnalyzes multi-year CAISO curtailment patterns and creates aggregate statistics.notebooks/02_TAC.ipynbMaps the curtailment analysis into TAC-zone views for downstream market interpretation.notebooks/03_lmp_vectors.ipynbBuilds representative LMP and curtailment vectors, including the weekly vectors stored indata/processed/.notebooks/04_electricity_costs_analysis.ipynbCompares electricity costs across metro, rural-flexible, and rural-plus-battery scenarios.notebooks/05_scenario_financial_analysis.ipynbRuns the financial model, minimum viable rent calculations, and sensitivity analysis.
More detailed notebook descriptions live in WORKFLOW_GUIDE.md and NOTEBOOK_INDEX.md.
Curtailed-2-Compute/
├── README.md
├── requirements.txt
├── DATA_SOURCES.md
├── USAGE_GUIDE.md
├── WORKFLOW_GUIDE.md
├── NOTEBOOK_INDEX.md
├── data/
│ ├── README.md
│ ├── processed/
│ │ ├── vector_high_curtailment_week.csv
│ │ └── vector_high_volatility_week.csv
│ └── LMP_Data/ # Raw monthly LMP downloads kept local
├── notebooks/
│ ├── 01_curtailed_energy_analysis.ipynb
│ ├── 02_TAC.ipynb
│ ├── 03_lmp_vectors.ipynb
│ ├── 04_electricity_costs_analysis.ipynb
│ └── 05_scenario_financial_analysis.ipynb
└── eval/ # Battery and workload evaluation workflow
The public workflow focuses on three scenario families:
- Scenario A: metro baseline with conventional tariff exposure
- Scenario B: rural flexible load aligned with curtailment conditions
- Scenario C: rural flexible load plus battery storage
Curtailment conditions are identified from CAISO LMP congestion signals, and the financial model evaluates long-run economics through NPV, IRR, MIRR, and minimum viable rent calculations.
The eval/tests/ directory contains a test suite covering the Battery model and DataCenter scheduling strategies:
python -m pytest eval/tests/ -v- Run notebooks
01to05in sequence. - Review data expectations in
DATA_SOURCES.mdbefore running from raw inputs. - Treat files in
data/processed/as lightweight reproducibility aids, not substitutes for the full raw CAISO archive. - The
eval/workflow can be run independently:cd eval && python demo_strategies_combined_plot.py. - For exact dependency pinning, use
pip install -r requirements-lock.txtinstead ofrequirements.txt.
README.md: project overviewdata/README.md: included data and external download instructionsDATA_SOURCES.md: source systems, filenames, and field descriptionsUSAGE_GUIDE.md: how to run the workflowWORKFLOW_GUIDE.md: step-by-step description of the notebook sequenceNOTEBOOK_INDEX.md: concise index of the notebooks
Please cite this repository using the metadata in CITATION.cff.
This project is released under the MIT License. See LICENSE.
For questions about the public workflow, open an issue in the repository.