Supplementary code for the manuscript: Central Limit Theorems for Sample Average Approximations in Stochastic Optimal Control
This repository contains supplementary code for the manuscript
Johannes Milz and Alexander Shapiro, "Central Limit Theorems for Sample Average Approximations in Stochastic Optimal Control", 2025.
We establish central limit theorems for the Sample Average Approximation (SAA) method in discrete-time, finite-horizon Stochastic Optimal Control. Using the dynamic programming principle and backward induction, we characterize the limiting distributions of the SAA value functions. The asymptotic variance at each stage decomposes into two components: a current-stage variance arising from immediate randomness, and a propagated future variance accumulated from subsequent stages. This decomposition clarifies how statistical uncertainty propagates backward through time. Our derivation relies on a stochastic equicontinuity condition, for which we provide sufficient conditions. We illustrate the variance decomposition using the classical Linear Quadratic Regulator (LQR) problem. Although its unbounded state and control spaces violate the compactness assumptions of our framework, the LQR setting enables explicit computation and visualization of both variance components.
- See requirements in requirements.txt for specific package versions.
- Python 3.8 or higher is recommended. We have tested the code with Python 3.11.
-
Clone the repository:
git clone https://github.com/milzj/stochastic-control-saa-clt.git cd stochastic-control-saa-clt -
Create a virtual environment (recommended):
python3 -m venv venv source venv/bin/activate -
Install dependencies:
python3 -m pip install -r requirements.txt
Or
pip install -r requirements.txt
Navigate to the scripts directory
cd scriptsand run the scripts:
python3 plot_true_variance.py && python3 plot_histograms_qqplots.pyThis project is licensed under the MIT License.
GitHub Copilot (with Claude Sonnet 4 and Gemini 2.5 Pro) and Gemini's 2.5 Pro model have been used to assist in code generation and documentation.
For questions or issues, please open an issue on GitHub.