How jo-marcel/spy-volatility-research works
This is a quantitative research workflow studying whether trailing SPY volatility predicts next-day absolute-return magnitude—not a trading system. The principal run loads prices, builds features, analyzes full-sample association, evaluates fixed holdout and yearly walk-forward predictions, analyzes volatility regimes, then produces charts and a summary. The graph preserves documented model, baseline, metrics, visualization, and regime stages. Edges follow the main and sampled module calls; some documented capabilities have unsampled implementations, so their internal links are omitted.
Main entry points: main.py Study Runner · holdout.py Fixed Holdout · walk_forward.py Walk-Forward Evaluation · predict.py Model Predictions
Components 20
Data and Features
- Shared Settings
config.py - SPY Prices
SPY_2015_2025.csv - Price Loader
data_loader.py - Feature Builder
features.py
Analysis and Evaluation
- Study Runner
main.py - Association Analysis
inference.py - Fixed Holdout
holdout.py - Chronological Splits
split_data.py - Model Predictions
predict.py - Regression Models
models.py - Mean Median Baselines
baselines.py - Error Metrics
metrics.py - Walk-Forward Evaluation
walk_forward.py - Volatility Regimes
regimes.py
Research Outputs
- Historical Charts
plots_history.py - Model Charts
plots_models.py - Summary Export
export_summary.py - Research Figures
figures - Research Results
results/summary.json
Other components
- Researcher
Connections 28
- Researcher → Study Runner: runs
README.md - Study Runner → Price Loader: loads prices
main.py - Price Loader → SPY Prices: reads
data_loader.py - Price Loader → Shared Settings: uses path
data_loader.py - Study Runner → Feature Builder: builds features
main.py - Feature Builder → Shared Settings: uses settings
features.py - Study Runner → Association Analysis: analyzes association
main.py - Association Analysis → Regression Models: uses design matrix
inference.py - Study Runner → Fixed Holdout: runs holdout
main.py - Fixed Holdout → Chronological Splits: splits data
holdout.py - Fixed Holdout → Model Predictions: predicts
holdout.py - Fixed Holdout → Error Metrics: scores
holdout.py - Fixed Holdout → Research Results: writes predictions and metrics
holdout.py - Model Predictions → Regression Models: fits and predicts
predict.py - Model Predictions → Mean Median Baselines: adds baselines
predict.py - Study Runner → Walk-Forward Evaluation: runs yearly evaluation
main.py - Walk-Forward Evaluation → Chronological Splits: splits by year
walk_forward.py - Walk-Forward Evaluation → Model Predictions: predicts yearly
walk_forward.py - Walk-Forward Evaluation → Error Metrics: scores yearly
walk_forward.py - Walk-Forward Evaluation → Research Results: writes predictions and metrics
walk_forward.py - Study Runner → Volatility Regimes: analyzes regimes
main.py - Study Runner → Historical Charts: plots history
main.py - Study Runner → Model Charts: plots model results
main.py - Historical Charts → Shared Settings: uses figure path
plots_history.py - Historical Charts → Research Figures: writes charts
plots_history.py - Study Runner → Summary Export: exports summary
main.py - Summary Export → Shared Settings: uses results path
export_summary.py - Summary Export → Research Results: writes summary
export_summary.py