feat: add local PC support and setup instructions for backtesting (v1.7.8)
This commit is contained in:
@ -10,7 +10,23 @@ To run the backtester, use the following command:
|
||||
docker exec -it btc_ping_pong_bot python src/strategies/backtest_engine.py
|
||||
```
|
||||
|
||||
## 2. Backtest Engine (`backtest_engine.py`)
|
||||
## 2. Local PC Setup (Recommended for Memory Savings)
|
||||
Running the backtest on your local machine is much faster and saves server memory.
|
||||
|
||||
### Steps:
|
||||
1. **Clone/Sync your repo** to your local machine.
|
||||
2. **Install dependencies**:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
3. **Configure `.env`**: Ensure your local `.env` file has the correct `DB_HOST` (e.g., `20.20.20.20`).
|
||||
4. **Run the engine**:
|
||||
```bash
|
||||
# From the project root
|
||||
python3 src/strategies/backtest_engine.py --start_date 2024-01-01 --end_date 2024-01-31
|
||||
```
|
||||
|
||||
## 3. Backtest Engine (`backtest_engine.py`)
|
||||
The backtest engine reuses the core logic from `ping_pong_bot.py` via the `PingPongStrategy` class.
|
||||
|
||||
### Key Features:
|
||||
@ -25,23 +41,35 @@ The backtest engine reuses the core logic from `ping_pong_bot.py` via the `PingP
|
||||
docker exec -it btc_ping_pong_bot python src/strategies/backtest_engine.py
|
||||
```
|
||||
|
||||
## 3. Strategy Optimization (Optional)
|
||||
To find the absolute best parameters for RSI and Hurst, you can use **Optuna**.
|
||||
## 3. Regime Testing (MA Switching)
|
||||
You can test different Moving Average (MA) settings to see which regime detector works best for switching between `long` and `short` modes.
|
||||
|
||||
### Installation:
|
||||
Inside the Docker container:
|
||||
```bash
|
||||
docker exec -it btc_ping_pong_bot pip install optuna
|
||||
```
|
||||
### Examples:
|
||||
* **Test 15m SMA 200:**
|
||||
```bash
|
||||
docker exec -it btc_ping_pong_bot python src/strategies/backtest_engine.py --ma_period 200 --ma_interval 15m
|
||||
```
|
||||
* **Test 1h SMA 50:**
|
||||
```bash
|
||||
docker exec -it btc_ping_pong_bot python src/strategies/backtest_engine.py --ma_period 50 --ma_interval 1h
|
||||
```
|
||||
* **Test 4h SMA 100:**
|
||||
```bash
|
||||
docker exec -it btc_ping_pong_bot python src/strategies/backtest_engine.py --ma_period 100 --ma_interval 4h --limit 20000
|
||||
```
|
||||
|
||||
### Planned Optimizer (`optimize_strategy.py`):
|
||||
Once installed, we can implement an optimization script that searches for:
|
||||
* `rsi_period`: 7 to 21
|
||||
* `hurst_multiplier`: 1.2 to 2.5
|
||||
* `partial_exit_pct`: 0.05 to 0.30
|
||||
### How it works:
|
||||
When `--ma_period` is provided, the engine:
|
||||
1. Loads the MA timeframe data from the DB.
|
||||
2. Merges it with the 1m price data.
|
||||
3. Switches modes (`long` <=> `short`) whenever the 1m price crosses the MA.
|
||||
4. **Automatically closes** the existing position on a mode switch, just like the live bot.
|
||||
|
||||
## 4. Local DB Data
|
||||
The engine connects to your local PostgreSQL DB using the credentials in your `.env` file. It specifically queries the `candles` table for the symbol and interval defined in `config/ping_pong_config.yaml`.
|
||||
## 4. Parameter Overrides
|
||||
You can quickly override strategy settings without editing the config file:
|
||||
* `--direction`: Force a specific mode (`long` or `short`).
|
||||
* `--limit`: Change the number of 1m candles to test (default 10,000).
|
||||
* `--config`: Use a different configuration file.
|
||||
|
||||
## 5. Interpreting Results
|
||||
* **Final Equity:** Your simulated account balance after all trades.
|
||||
|
||||
Reference in New Issue
Block a user