Skip to content

Engineering2Finance/hull-tactical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hull Tactical Competition

This repository provides a full pipeline for the Hull Tactical systematic trading competition:

  1. Model to predict daily forward excess returns.
  2. Allocation sizing, backtesting, and final submission generation.

Competition Overview

The Hull Tactical competition evaluates daily allocation strategies on the U.S. equity market.

Participants submit a daily allocation in the range [0, 2]:

Allocation Meaning
0.0 Fully underweight
1.0 Market neutral
2.0 Maximum overweight

The strategy’s annualized volatility must remain at or below 1.2× the volatility of the benchmark index.

Evaluation occurs in two phases:

  • Historical backtest scoring
  • Live forward scoring after submissions close

The objective is to produce stable, interpretable allocation signals.

About This Project

Developed by Alvaro Balbin and Aung Kaung.

Focus:

  • Deterministic ML pipeline
  • Volatility-normalized signal sizing
  • Smooth allocation transitions to reduce turnover
  • Direct submission-ready output

The project was built quickly and intentionally with minimal unnecessary complexity.

Demonstration

The system works as intended. A demonstration video is available here:

Demo Video

Setup

pip install -r requirements.txt

Expected input data: data/train.csv data/test.csv

Part 1 - Model Training and Prediction

Train the model:

python -m src.train

Generate predictions:

python -m src.predict

This produces:

outputs/predictions.parquet

Part 2 - Backtesting

Run backtest:

python -m src.backtest \
  --train data/train.csv \
  --preds outputs/predictions.parquet \
  --out outputs

Outputs:

outputs/backtest_daily.csv
outputs/metrics.json
outputs/plots/

Part 3 - Submission Generation

Generate final submission file:

python -m src.submit_cli \
  --train data/train.csv \
  --test data/test.csv \
  --preds_test outputs/predictions.parquet \
  --out outputs/submission.csv

Final output format:

date_id,allocation
8980,1.250000
8981,1.500000
...

Allocations are continuous values in [0, 2] due to the volatility-normalized sigmoid sizing rule.

Requirements to Satisfy

  • Allocation values must remain in [0, 2].

  • Strategy volatility must be ≤ 1.2× benchmark volatility.

  • Final submission file must be:

    outputs/submission.csv
    

Credits

Component Contributor
Backtesting & Allocation Strategy Alvaro Balbin
Model Development & Feature Engineering Aung Kaung
README Assembly Generated by GenAI

About

End-to-end ML system for daily S&P 500 excess-return forecasting and volatility-constrained allocation, featuring feature engineering, ensembling, and walk-forward time-series validation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors