Integral Freqtrade backtester scaffold (SampleStrategy)
Find a file
Artemii Peretiachenko 99de26e7f0 Add private Freqtrade scaffold for partner backtesting.
Ship SampleStrategy and Integral workflow scripts without proprietary V15 logic, Pine, or run results.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 23:55:44 +02:00
scripts Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00
user_data Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00
.gitignore Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00
docker-compose.yml Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00
README.md Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00
requirements.txt Add private Freqtrade scaffold for partner backtesting. 2026-08-02 23:55:44 +02:00

428 Backtester — Integral (Freqtrade)

Local Freqtrade scaffold for backtesting on Binance Futures BTC/USDT:USDT, 15m (+ 6h informative data), built around the Integral workflow.

No Jupyter. Reports come from Freqtrade CLI + HTML plots (plot-profit, trade chart).

Ship a SampleStrategy by default. Drop your own strategy under user_data/strategies/ and point scripts at it with STRATEGY=YourClassName.

Requirements

  • Preferred: Docker + Docker Compose (freqtradeorg/freqtrade:stable_plot)
  • Fallback: Python 3.12 venv with freqtrade + plotly (scripts use this automatically if Docker is missing)
  • ~2+ GB disk for OHLCV history

Local venv setup (no Docker)

/opt/homebrew/opt/python@3.12/bin/python3.12 -m venv .venv
source .venv/bin/activate
pip install -U pip 'freqtrade[hyperopt]' plotly

Quick start

# 1) Download futures candles (15m + 6h). Default timerange from 2024-07-01.
./scripts/download_data.sh

# 2) Run baseline backtest (SampleStrategy; full history from 2024-07-01)
./scripts/backtest.sh

# 3) Hyperopt buy/sell params on in-sample range (default 20240701-20260101)
./scripts/hyperopt.sh
# EPOCHS=200 LOSS=SharpeHyperOptLossDaily ./scripts/hyperopt.sh

# 4) Apply best epoch params, then OOS backtest (default 20260101-)
./scripts/apply_hyperopt_params.sh
TIMERANGE=20260101- ./scripts/backtest.sh

# 5) Equity + trade charts (pick a shorter range for readable plots)
TIMERANGE=20250101-20250201 ./scripts/plot.sh

Scripts auto-detect Docker; if absent they use .venv/bin/freqtrade.

Your strategy

# Place YourStrategy.py in user_data/strategies/
STRATEGY=YourStrategy ./scripts/backtest.sh
STRATEGY=YourStrategy ./scripts/hyperopt.sh

Or set "strategy": "YourStrategy" in user_data/config.json / docker-compose.yml.

Custom timerange

TIMERANGE=20240101-20250601 ./scripts/download_data.sh
TIMERANGE=20240101-20250601 ./scripts/backtest.sh

Direct docker compose

docker compose run --rm freqtrade download-data \
  --config /freqtrade/user_data/config.json \
  --trading-mode futures -t 15m 6h -p BTC/USDT:USDT --timerange 20240701-

docker compose run --rm freqtrade backtesting \
  --config /freqtrade/user_data/config.json \
  --strategy SampleStrategy --timeframe 15m --timerange 20240701-

Project layout

Path Role
user_data/strategies/SampleStrategy.py Placeholder strategy (replace with yours)
user_data/config.json Binance futures dry-run / backtest config
scripts/ download / backtest / hyperopt / plot helpers
docker-compose.yml freqtradeorg/freqtrade:stable_plot

Optimization

Primary tool: Freqtrade Hyperopt (Optuna TPE) over strategy IntParameter / DecimalParameter spaces.

Default split used by scripts:

  • IS / hyperopt: TIMERANGE=20240701-20260101
  • OOS backtest: TIMERANGE=20260101-
./scripts/hyperopt.sh                          # IS search
./scripts/apply_hyperopt_params.sh             # write user_data/strategies/<Strategy>.json
TIMERANGE=20260101- ./scripts/backtest.sh      # OOS with best params
# Defaults again: remove the JSON override
rm -f user_data/strategies/SampleStrategy.json

If optimizable params change populate_indicators (not only entry/exit columns), keep --analyze-per-epoch (default in hyperopt.sh). Without it every epoch can repeat the baseline result.

Notes

  • Fees / funding: config.json sets fee: 0.0005 (5 bps). Funding rates download with futures data when available; treat equity as approximate.
  • Private logic: proprietary strategies and run artifacts stay local (see .gitignore). Do not commit them to this repo.