|
|
@@ -0,0 +1,220 @@
|
|
|
+# Grid Trader Configuration
|
|
|
+
|
|
|
+This file explains every config parameter used by `strategies/grid_trader.py`.
|
|
|
+
|
|
|
+## Core grid behavior
|
|
|
+
|
|
|
+### `grid_levels`
|
|
|
+- **Type:** int
|
|
|
+- **Default:** `6`
|
|
|
+- **Range:** `1..20`
|
|
|
+- **What it does:** Number of grid orders kept per side.
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it for a smaller, simpler grid.
|
|
|
+ - Raise it if you want a wider ladder and more incremental entries/exits.
|
|
|
+- **Tradeoff:** More levels means more orders, more clutter, and usually slower capital usage.
|
|
|
+
|
|
|
+### `grid_step_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.012`
|
|
|
+- **Range:** `0.001..0.1`
|
|
|
+- **What it does:** Base spacing between grid levels as a percentage of price.
|
|
|
+- **When to change it:**
|
|
|
+ - Increase it in volatile markets.
|
|
|
+ - Decrease it in quiet, tight ranges.
|
|
|
+- **Tradeoff:** Too small can make the grid noisy, too large can make it miss moves.
|
|
|
+
|
|
|
+### `volatility_timeframe`
|
|
|
+- **Type:** string
|
|
|
+- **Default:** `"1h"`
|
|
|
+- **What it does:** Timeframe used to measure volatility for adaptive grid sizing.
|
|
|
+- **When to change it:**
|
|
|
+ - Use a shorter timeframe for faster adaptation.
|
|
|
+ - Use a longer one for smoother, slower reactions.
|
|
|
+- **Tradeoff:** Shorter = more reactive, longer = more stable.
|
|
|
+
|
|
|
+### `volatility_multiplier`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.5`
|
|
|
+- **Range:** `0.0..10.0`
|
|
|
+- **What it does:** Scales ATR-based volatility into the live grid step.
|
|
|
+- **When to change it:**
|
|
|
+ - Increase it if you want the grid to widen more aggressively in volatility.
|
|
|
+ - Decrease it if you want tighter spacing.
|
|
|
+- **Tradeoff:** Higher values make the grid less sensitive to the base step.
|
|
|
+
|
|
|
+### `grid_step_min_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.005`
|
|
|
+- **Range:** `0.0001..0.5`
|
|
|
+- **What it does:** Lower bound for the live grid step.
|
|
|
+- **When to change it:**
|
|
|
+ - Raise it if the grid gets too tight.
|
|
|
+ - Lower it if you want very fine spacing.
|
|
|
+
|
|
|
+### `grid_step_max_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.03`
|
|
|
+- **Range:** `0.0001..1.0`
|
|
|
+- **What it does:** Upper bound for the live grid step.
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it to prevent the grid from becoming too wide in volatile markets.
|
|
|
+ - Raise it if you want the strategy to tolerate bigger swings.
|
|
|
+
|
|
|
+## Position sizing and inventory
|
|
|
+
|
|
|
+### `order_size`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.0`
|
|
|
+- **What it does:** Fixed per-order size when you want manual sizing.
|
|
|
+- **When to change it:**
|
|
|
+ - Set it when you want a static size instead of wallet-derived sizing.
|
|
|
+ - Leave it at `0.0` to let the strategy derive size from balance logic.
|
|
|
+
|
|
|
+### `inventory_cap_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.7`
|
|
|
+- **Range:** `0.0..1.0`
|
|
|
+- **What it does:** Caps how much inventory the strategy should commit.
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it for more conservative inventory usage.
|
|
|
+ - Raise it if you want the grid to keep more capital active.
|
|
|
+
|
|
|
+### `max_notional_per_order`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.0`
|
|
|
+- **What it does:** Upper limit for the notional value of a single order.
|
|
|
+- **When to change it:**
|
|
|
+ - Set it to cap order size risk.
|
|
|
+ - Leave it at `0.0` for no explicit per-order cap.
|
|
|
+- **Note:** With `dust_collect=true`, the strategy may exceed this cap to clear small leftover balances, but never more than available funds.
|
|
|
+
|
|
|
+### `dust_collect`
|
|
|
+- **Type:** bool
|
|
|
+- **Default:** `False`
|
|
|
+- **What it does:** Allows the sizing logic to exceed `max_notional_per_order` if needed to consume dust.
|
|
|
+- **When to change it:**
|
|
|
+ - Enable it when you want the strategy to clean up small leftover balances.
|
|
|
+ - Leave it off if you want strict order caps.
|
|
|
+
|
|
|
+### `use_all_available`
|
|
|
+- **Type:** bool
|
|
|
+- **Default:** `True`
|
|
|
+- **What it does:** Lets the strategy use the available balance more fully when sizing orders.
|
|
|
+- **When to change it:**
|
|
|
+ - Disable it for stricter, more conservative capital usage.
|
|
|
+ - Keep it enabled if you want the grid to self-fill as much as possible.
|
|
|
+
|
|
|
+## Re-centering
|
|
|
+
|
|
|
+### `recenter_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.05`
|
|
|
+- **Range:** `0.0..0.5`
|
|
|
+- **What it does:** Baseline deviation threshold that can trigger a recenter.
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it for faster recentering.
|
|
|
+ - Raise it if you want the grid to stay anchored longer.
|
|
|
+- **Tradeoff:** Too low can make the grid chase price.
|
|
|
+
|
|
|
+### `recenter_atr_multiplier`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.35`
|
|
|
+- **Range:** `0.0..10.0`
|
|
|
+- **What it does:** Adjusts the recenter threshold using volatility.
|
|
|
+- **When to change it:**
|
|
|
+ - Increase it if you want recentering to be less eager in volatile markets.
|
|
|
+ - Decrease it if you want it to react faster.
|
|
|
+
|
|
|
+### `recenter_min_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.0025`
|
|
|
+- **Range:** `0.0..0.5`
|
|
|
+- **What it does:** Minimum allowed recenter threshold.
|
|
|
+- **When to change it:**
|
|
|
+ - Raise it to prevent over-reactive recentering.
|
|
|
+ - Lower it if you want very tight anchor control.
|
|
|
+
|
|
|
+### `recenter_max_pct`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.03`
|
|
|
+- **Range:** `0.0..0.5`
|
|
|
+- **What it does:** Maximum allowed recenter threshold.
|
|
|
+- **When to change it:**
|
|
|
+ - Raise it if you want the strategy to tolerate larger drifts before recentring.
|
|
|
+ - Lower it if you want a tighter leash.
|
|
|
+
|
|
|
+### `center_shift_factor`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.3333333333`
|
|
|
+- **Range:** `0.0..1.0`
|
|
|
+- **What it does:** Controls where the new center lands between the old center and the new price.
|
|
|
+- **Formula:** `new_center = price + (old_center - price) * center_shift_factor`
|
|
|
+- **Meaning:**
|
|
|
+ - `0.0` = snap center to current price
|
|
|
+ - `1.0` = keep old center
|
|
|
+ - `0.333...` = move the center one third of the way back from price toward the old center
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it if you want the grid to follow price more aggressively.
|
|
|
+ - Raise it if you want the grid to retain more of its old anchor.
|
|
|
+
|
|
|
+## Fees and execution
|
|
|
+
|
|
|
+### `fee_rate`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.0025`
|
|
|
+- **Range:** `0.0..0.05`
|
|
|
+- **What it does:** Fallback fee assumption used when live fee lookup is unavailable.
|
|
|
+- **When to change it:**
|
|
|
+ - Set it to match your venue if fee lookup is unreliable.
|
|
|
+ - Leave it as a fallback safety value if live fees are available.
|
|
|
+
|
|
|
+### `order_call_delay_ms`
|
|
|
+- **Type:** int
|
|
|
+- **Default:** `250`
|
|
|
+- **Range:** `0..10000`
|
|
|
+- **What it does:** Delay between order calls.
|
|
|
+- **When to change it:**
|
|
|
+ - Increase it if the exchange is sensitive to bursts.
|
|
|
+ - Set it to `0` for test or fast local runs.
|
|
|
+
|
|
|
+## Trend protection
|
|
|
+
|
|
|
+### `enable_trend_guard`
|
|
|
+- **Type:** bool
|
|
|
+- **Default:** `True`
|
|
|
+- **What it does:** Enables the higher-timeframe trend guard.
|
|
|
+- **When to change it:**
|
|
|
+ - Disable it if you want the grid to trade regardless of regime.
|
|
|
+ - Keep it on if you want the strategy to stand down in strong opposing trends.
|
|
|
+
|
|
|
+### `trend_guard_reversal_max`
|
|
|
+- **Type:** float
|
|
|
+- **Default:** `0.25`
|
|
|
+- **Range:** `0.0..1.0`
|
|
|
+- **What it does:** Maximum reversal score allowed before the trend guard stops the grid.
|
|
|
+- **When to change it:**
|
|
|
+ - Lower it for stricter trend filtering.
|
|
|
+ - Raise it if you want the grid to remain active more often.
|
|
|
+
|
|
|
+## Visibility
|
|
|
+
|
|
|
+### `debug_orders`
|
|
|
+- **Type:** bool
|
|
|
+- **Default:** `True`
|
|
|
+- **What it does:** Enables verbose order/debug logging.
|
|
|
+- **When to change it:**
|
|
|
+ - Keep it on while tuning.
|
|
|
+ - Turn it off when you want quieter logs.
|
|
|
+
|
|
|
+## Practical starting points
|
|
|
+
|
|
|
+- **Conservative:** lower `inventory_cap_pct`, higher `recenter_pct`, higher `center_shift_factor`
|
|
|
+- **Reactive:** lower `recenter_pct`, lower `center_shift_factor`, smaller `grid_step_pct`
|
|
|
+- **Range-friendly:** moderate `grid_levels`, moderate `grid_step_pct`, `enable_trend_guard=true`
|
|
|
+
|
|
|
+## Current recommended interpretation
|
|
|
+
|
|
|
+If you want the grid to feel like it “leans” toward the fill instead of snapping, the key knob is `center_shift_factor`.
|
|
|
+
|
|
|
+For your described behavior, `0.3333333333` is the right default.
|