Research sandbox for ETF portfolio backtesting with rolling retraining.
Backtest.py: main rolling backtest entry.configs/: experiment settings.DataPipeline/: dataset and dataloader building.models/: prediction/allocation models.losses/: training objectives.portfolio/: portfolio optimization layer.optimizers/: optimizer factory.utils/: logging, metrics, plotting, tuning.
- Install:
pip install -r requirements.txt
- Check config (
configs/spo_plus_linear.yamlorconfigs/softmax_linear.yaml). - Run:
from Backtest import rolling_backtest rolling_backtest("configs/spo_plus_linear.yaml")
Saved under outputs/<exp_name_timestamp>/:
rolling_performance.csvrolling_weights.csv- plots and logs