| --- |
| license: apache-2.0 |
| tags: |
| - forex |
| - trading |
| - time-series |
| - classification |
| - xgboost |
| - lightgbm |
| - lstm |
| --- |
| |
| # OANDA Trading Signal Models |
|
|
| Multi-model classification pipeline predicting BUY / HOLD / SELL signals |
| for major forex pairs using 10 years of H1 candle data. |
|
|
| ## Instruments |
| USD_CHF |
| |
| ## Granularity |
| H1 (1-hour candles) |
| |
| ## Model Performance (Test Set) |
| |
| | Model | Accuracy | F1 (weighted) | Sharpe Ratio | Return % | Max DD % | |
| |-----------|----------|--------------|--------------|----------|----------| |
| | xgboost | 0.3895086891225059 | 0.4624705139898039 | 0.0 | 0.0% | 0.0% | |
| | lightgbm | 0.370521347350354 | 0.4419163108223123 | 0.0 | 0.0% | 0.0% | |
| | lstm | 0.3868268611885861 | 0.45938959752709685 | -0.476 | -0.0% | -0.0% | |
| |
| ## Usage |
| |
| ```python |
| from huggingface_hub import hf_hub_download |
| import joblib |
|
|
| # Download and load XGBoost model |
| path = hf_hub_download(repo_id="keeprich/oanda-trading-models", filename="models/xgboost/EUR_USD_H1/model.pkl") |
| model = joblib.load(path) |
| ``` |
| |
| ## Features |
| 30 engineered technical features including: |
| - EMA crossovers (8, 21, 50, 200) |
| - RSI (7, 14), MACD, Stochastic, Williams %R, CCI, ADX |
| - Bollinger Bands (width, %B), ATR |
| - Log returns and lagged returns |
| |
| ## Target |
| 3-class signal: `0=SELL`, `1=HOLD`, `2=BUY` |
| Based on 4-bar forward return with ±0.15% threshold. |
| |
| ## Training |
| - Period: 10 years (2016–2026) |
| - Split: 70% train / 15% val / 15% test (time-ordered, no shuffle) |
| - Scaling: StandardScaler fitted on train set only |
| |
| Generated: 2026-07-11 |
| |