Chart Designer
Overview & Purpose
The Chart Designer lets you create custom Chart Characters - parameterized profiles that define how synthetic price action behaves. Each character controls everything from macro regime behavior (trending vs. choppy) down to individual tick-level microstructure (spread dynamics, agent behavior, order clustering).
Use the Chart Designer to:
- Create market conditions that match specific instruments or scenarios
- Design challenging environments to stress-test your strategies
- Reproduce specific market behaviors (e.g., low-liquidity gaps, news spikes, tight ranges)
- Share characters with other traders for standardized practice
The designer is split into two main sections: Chart Character (historical candle generation) and Microstructure (real-time tick engine parameters).
Volatility Parameters
Volatility parameters control the magnitude of price movement within each market regime. The system uses a regime-switching model where the market transitions between four states: Chop, Trend, Impulse, and Gap Hold.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Chop Volatility | 0.1 – 3.0 | 0.8 | Standard deviation of returns during choppy/ranging periods. Higher values create wider ranges with more noise. Realistic: 0.5–1.2 for most instruments. |
| Trend Volatility | 0.5 – 5.0 | 1.5 | Standard deviation during trending periods. Controls how "noisy" the trend is - lower values create cleaner trends, higher values create volatile trends with deeper pullbacks. |
| Impulse Volatility | 2.0 – 15.0 | 5.0 | Standard deviation during impulse/spike moves. These are sudden, violent price moves (news events, stop cascades). Realistic: 3.0–8.0. |
| Gap Hold Volatility | 0.1 – 2.0 | 0.4 | Volatility during the consolidation period after a gap. Low values create tight post-gap ranges; higher values allow the gap to partially fill. |
Volatility values are expressed as multiples of the instrument's base tick size. A volatility of 1.0 means the typical candle body is approximately 1 tick in size at the given timeframe.
Drift Parameters
Drift parameters control the directional bias of price movement within each regime. They determine whether price tends to move up, down, or sideways.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Chop Sigma | 0.0 – 1.0 | 0.1 | Random drift noise during chop. Near-zero creates perfectly flat ranges; higher values allow the range to slowly migrate up or down. |
| Trend Sigma | 0.0 – 1.0 | 0.2 | Noise added to the trend direction. Higher values make trends less linear and more "wobbly" with frequent minor reversals. |
| Trend Magnitude | 0.5 – 5.0 | 2.0 | Strength of the directional bias during trends. Higher values create steeper, more aggressive trends. This is the "slope" of the trend. |
| Impulse Magnitude | 3.0 – 20.0 | 8.0 | Strength of impulse moves. Controls how far price travels during a spike event. Higher values create larger news-style moves. |
| Global Bias | -2.0 – 2.0 | 0.0 | Overall directional bias applied to all regimes. Positive = bullish tendency, negative = bearish. Zero = no bias. Subtle values (±0.1–0.3) create realistic drift without obvious direction. |
Wick Parameters
Wick parameters control the wick-to-body ratio of generated candles. They determine how much price explores beyond the open/close range within each candle.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Chop Wick Ratio | 0.5 – 4.0 | 1.8 | Wick length relative to body during chop. Higher values create doji-like candles with long wicks - typical of indecisive, ranging markets. |
| Trend Wick Ratio | 0.2 – 2.0 | 0.6 | Wick ratio during trends. Lower values create "clean" trend candles with small wicks in the trend direction. Higher values add more rejection wicks. |
| Impulse Wick Ratio | 0.1 – 1.5 | 0.3 | Wick ratio during impulses. Low values create strong marubozu-style candles (all body, no wick). Higher values add V-shaped rejection after the impulse. |
| Gap Hold Wick Ratio | 0.5 – 3.0 | 1.5 | Wick ratio during post-gap consolidation. Higher values create candles that probe toward gap fill but close back in the new range. |
| Asymmetry | -1.0 – 1.0 | 0.0 | Wick direction bias. Positive values create longer upper wicks (selling pressure); negative values create longer lower wicks (buying pressure). Zero = symmetric. |
Regime Durations (Markov Chain)
The market regime system uses a Markov chain to transition between states. Each regime has a configurable expected duration (in candles), and transitions between regimes are probabilistic.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Chop Duration | 10 – 200 | 50 | Expected number of candles spent in choppy/ranging state before transitioning. Longer durations create extended consolidation periods. |
| Trend Up Duration | 10 – 150 | 30 | Expected candles in an uptrend before regime change. Longer = more sustained rallies. |
| Trend Down Duration | 10 – 150 | 25 | Expected candles in a downtrend. Often slightly shorter than up-trends to model the "stairs up, elevator down" phenomenon. |
| Impulse Duration | 1 – 10 | 3 | Expected candles in an impulse state. Impulses are brief by nature - typically 1–5 candles of extreme movement. |
At each candle, the system checks whether to transition to a new regime. The probability of leaving the current regime is 1 / duration per candle, creating a geometric distribution. When a transition occurs, the next regime is selected based on transition probabilities that favor realistic sequences (e.g., impulse → chop is more likely than impulse → impulse).
Volume Parameters
Volume parameters shape the volume profile of generated candles, creating realistic intraday patterns.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Base Volume | 100 – 100000 | 5000 | Average volume per candle during normal trading. Scaled by timeframe. |
| Open Multiplier | 1.0 – 5.0 | 2.5 | Volume boost during the first 30 minutes of the session. Models the opening auction and initial positioning. |
| Midday Multiplier | 0.3 – 1.0 | 0.6 | Volume reduction during midday lull. Lower values create more pronounced "lunch hour" dead zones. |
| Close Multiplier | 1.0 – 4.0 | 2.0 | Volume boost in the final 30 minutes. Models end-of-day positioning and MOC orders. |
| Spike Probability | 0.0 – 0.3 | 0.05 | Probability per candle of a random volume spike (3–10x normal). Models sudden institutional activity or news events. |
Gap Parameters
Gaps model price discontinuities - jumps between sessions or intraday gaps from news events.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Session Gap Probability | 0.0 – 1.0 | 0.7 | Probability of a gap at session open (overnight gap). Most instruments gap daily; set lower for 24-hour markets like forex. |
| Min Gap Size | 0.5 – 5.0 | 1.0 | Minimum gap size in ATR multiples. Ensures gaps are meaningful when they occur. |
| Max Gap Size | 1.0 – 20.0 | 5.0 | Maximum gap size in ATR multiples. Caps extreme gaps for realism. |
| Intraday Gap Probability | 0.0 – 0.1 | 0.005 | Probability per candle of an intraday gap (news event, circuit breaker). Very rare in reality - keep this low. |
Event Parameters
Events model specific price action patterns that occur within candles.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Wick Stab Probability | 0.0 – 0.3 | 0.08 | Probability per candle of a "wick stab" - a sudden spike that immediately reverses (stop hunt / liquidity grab). Creates long-wick candles at key levels. |
| Wick Stab Magnitude | 1.0 – 10.0 | 3.0 | Size of wick stabs in ATR multiples. Higher values create more dramatic stop hunts. |
Microstructure (Tick Engine) Parameters
The Microstructure section controls the tick engine - the real-time order book simulation that generates individual ticks during live playback. These parameters define how the simulated market participants behave.
Spread
| Parameter | Range | Default | Description |
|---|---|---|---|
| Base Spread (ticks) | 1 – 20 | 2 | Normal bid-ask spread in tick units. 1 tick = tightest possible spread (highly liquid). Higher values model less liquid instruments. |
| Volatility Multiplier | 1.0 – 5.0 | 1.5 | How much the spread widens during volatile periods. At 2.0, spread doubles when volatility spikes. Models real market maker behavior of widening quotes during uncertainty. |
Institutional Orders
| Parameter | Range | Default | Description |
|---|---|---|---|
| Rate | 0.0 – 5.0 | 0.8 | Average institutional orders per second. These are large, persistent orders that move price directionally. |
| Size Min | 10 – 500 | 50 | Minimum size of institutional orders (contracts/lots). |
| Size Max | 50 – 5000 | 500 | Maximum size of institutional orders. |
| Persistence | 0.0 – 1.0 | 0.7 | How likely an institutional agent is to continue trading in the same direction on the next order. High persistence creates sustained directional pressure (iceberg orders, TWAP execution). |
Retail Orders
| Parameter | Range | Default | Description |
|---|---|---|---|
| Rate | 0.5 – 20.0 | 5.0 | Average retail orders per second. These are small, random orders that add noise and liquidity. Higher rates create more active tape. |
Momentum Orders
| Parameter | Range | Default | Description |
|---|---|---|---|
| Rate | 0.0 – 10.0 | 2.0 | Average momentum-chasing orders per second. These agents buy when price is rising and sell when falling, creating positive feedback loops and trend acceleration. |
Hawkes Process
The Hawkes process models self-exciting order flow - the tendency for trades to cluster in time (one trade triggers more trades).
| Parameter | Range | Default | Description |
|---|---|---|---|
| Base Intensity (λ₀) | 0.1 – 5.0 | 1.0 | Background rate of order arrivals when no excitation is present. The "quiet" baseline activity level. |
| Alpha (Excitation) | 0.0 – 2.0 | 0.8 | How much each trade increases the arrival rate of subsequent trades. Higher alpha = more clustering / burst behavior. Must be less than Beta for stability. |
| Beta (Decay) | 0.5 – 5.0 | 1.2 | How quickly the excitation decays after a trade. Higher beta = faster return to baseline. Lower beta = longer-lasting bursts of activity. |
For a stable Hawkes process, Alpha < Beta must hold. If Alpha ≥ Beta, the process becomes explosive (infinite intensity). The UI enforces this constraint.
Liquidity Pools
| Parameter | Range | Default | Description |
|---|---|---|---|
| Strength | 0.0 – 2.0 | 0.5 | Attractive force of liquidity pools. Higher values make price more strongly attracted to pool levels, creating support/resistance behavior. |
| Count | 0 – 20 | 5 | Number of liquidity pools in the visible price range. These act as S/R levels where resting orders accumulate. |
Mean Reversion
| Parameter | Range | Default | Description |
|---|---|---|---|
| Strength | 0.0 – 1.0 | 0.3 | Tendency for price to revert toward a moving average. Higher values create more mean-reverting behavior (good for range-bound characters). Lower values allow trends to develop more freely. |
Generating & Previewing
After configuring parameters, use the preview tools to evaluate your character:
- Generate Preview - Creates a sample chart with your current parameters. The preview shows ~200 candles of historical data so you can visually assess the character's behavior.
- Tick Engine Preview - Click the Play button to watch the tick engine generate real-time price action. A debug panel shows live statistics: current spread, order rate, agent activity, and regime state.
- Regenerate - Generate a new random sample with the same parameters to see the range of possible outcomes.
Use the Tick Engine Preview to verify that your microstructure parameters produce realistic-looking tape. Watch for: natural spread behavior, realistic trade clustering, and appropriate price impact from large orders.
Saving & Using Custom Characters
Once satisfied with your character:
- Click Save Character and give it a descriptive name (e.g., "ES Morning Chop", "NQ Trend Day", "Low Liquidity Gaps")
- The character appears in your saved characters list
- In the Simulator, select your custom character from the "Chart Character" dropdown when generating a new session
Characters are saved to your account and available across devices. You can edit, duplicate, or delete saved characters from the Chart Designer.
PatternFoundry