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.