Phase 1: Event-driven backtester, 5 strategies, and baseline results

- Built event-driven backtesting engine with spread/slippage modeling,
  3-TP partial closes, trailing stops, and rich trade logging (20+ features)
- Implemented 5 strategy signal generators (MA Breakout, VWAP Reversal,
  Key Level Breakout, EMA Ribbon Scalp, Momentum Exhaustion)
- Full indicator library (EMA, SMA, RSI, ATR, MACD, ADX, Stochastic,
  Session VWAP bands, swing points, key levels, RSI divergence)
- Data pipeline: Dukascopy download, validation, 70/30 train/test split
- Baseline results: all 5 strategies generate 200+ trades on training data
  (Jan 2021 - Aug 2023), best profit factors 0.82-0.96 on select pairs
- Trade logs and reports saved for Phase 3 ML feature engineering

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Brent Neale
2026-02-18 06:04:27 +10:00
parent 5d7f6c60a9
commit dce54845c2
103 changed files with 26083 additions and 123 deletions
+22
View File
@@ -0,0 +1,22 @@
-- Schema migration: add columns for 5-strategy indicator set
-- Run against Supabase SQL editor or via psql
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS sma_50 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS sma_100 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS sma_200 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS ema_50 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS ema_100 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS ema_200 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS macd DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS macd_signal DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS macd_hist DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS adx_14 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS stoch_k DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS stoch_d DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS session_vwap DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_upper_1_5 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_upper_2 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_lower_1_5 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_lower_2 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_upper_2_5 DOUBLE PRECISION;
ALTER TABLE fx_candles ADD COLUMN IF NOT EXISTS vwap_lower_2_5 DOUBLE PRECISION;