1. Introduction

Dual Thrust is a classical intraday range breakout strategy developed by Michael Chalek in the 1980s, once ranked among the most profitable systems by Future Truth magazine. Its elegance lies in the minimal information requirement—only the previous day’s high, low, and close prices—and in the deliberate asymmetry embedded in its breakout thresholds. Unlike symmetric channel breakout systems (e.g., Donchian channels), Dual Thrust permits independent tuning of the upside and downside trigger distances, which introduces a directional bias that can be calibrated to the prevailing market regime.

2. Range Construction

Let HtH_t, LtL_t, CtC_t denote the high, low, and close of day tt. The strategy defines a range RtR_t that captures the prior day’s volatility, then offsets it from the current day’s open Ot+1O_{t+1} to produce breakout levels.

2.1 The Range Variable

The original formulation considers two candidate ranges based on the close’s position within the day’s bar:

Rt={HtCtif Ct<Ot(bearish close)CtLtif CtOt(bullish close) R_t = \begin{cases} H_t - C_t & \text{if } C_t < O_t \quad \text{(bearish close)} \\ C_t - L_t & \text{if } C_t \geq O_t \quad \text{(bullish close)} \end{cases}

In the simplified variant that uses only the full day range:

Rt=HtLt R_t = H_t - L_t

This is the full bar range, which discards the informational content of the close position. The original two-branch definition is preferable because it conditions the range on the direction of the prior day: after a bearish day, the range is measured from the close to the high (the “rebound distance”), and after a bullish day, from the close to the low (the “pullback distance”).

2.2 Breakout Levels

Given range RtR_t and parameters K1,K2(0,1)K_1, K_2 \in (0, 1), the upper and lower breakout thresholds for day t+1t+1 are:

Uppert+1=Ot+1+K1Rt \text{Upper}_{t+1} = O_{t+1} + K_1 \cdot R_t Lowert+1=Ot+1K2Rt \text{Lower}_{t+1} = O_{t+1} - K_2 \cdot R_t

The strategy enters a long position when price breaks above Uppert+1\text{Upper}_{t+1}, and a short position when price breaks below Lowert+1\text{Lower}_{t+1}.

3. Asymmetry Analysis: The Role of K1K_1 and K2K_2

The central design choice in Dual Thrust is the decoupling of K1K_1 (long threshold multiplier) from K2K_2 (short threshold multiplier). This section examines the mathematical consequences.

3.1 Trigger Probability Asymmetry

Under the assumption that intraday returns are approximately symmetric around the open, the probability of triggering the long side versus the short side depends on the ratio K1/K2K_1 / K_2.

If K1<K2K_1 < K_2, the upper breakout level is closer to the open than the lower level:

K1Rt<K2Rt    P(long trigger)>P(short trigger) K_1 \cdot R_t < K_2 \cdot R_t \implies P(\text{long trigger}) > P(\text{short trigger})

This creates a long bias: the strategy is more likely to enter a long position on any given day, which is appropriate when the underlying drift is positive. Conversely, K1>K2K_1 > K_2 creates a short bias.

3.2 Expected Profit Asymmetry

Let μ\mu denote the expected daily drift and σ\sigma the daily volatility. The expected profit of a triggered long trade can be approximated as:

E[Πlong]μK1RtσRt=μK1σ E[\Pi_{\text{long}}] \approx \mu - K_1 \cdot R_t \cdot \frac{\sigma}{R_t} = \mu - K_1 \cdot \sigma

Similarly for a triggered short trade:

E[Πshort]μK2σ E[\Pi_{\text{short}}] \approx -\mu - K_2 \cdot \sigma

When K1<K2K_1 < K_2 in a positive-drift environment (μ>0\mu > 0), the long side enjoys both a higher trigger probability and a smaller entry cost, while the short side triggers less frequently but with a larger expected loss per trigger. The asymmetry thus serves as a regime-adaptive filter.

3.3 Practical Calibration

Common parameter choices and their interpretations:

ConfigurationK1K_1K2K_2BiasTypical Regime
Symmetric0.50.5NoneRange-bound / uncertain
Long bias0.40.6BullishUpward-trending market
Short bias0.60.4BearishDownward-trending market

The values 0.4/0.6 are historically popular, reflecting the observation that equity indices exhibit a positive drift over long horizons.

4. Trading Logic

4.1 Intraday Breakout

At the start of each trading day, the breakout levels are computed from the previous day’s data. During the session, the strategy monitors price action:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Pseudocode: Intraday breakout logic

on_new_day(yesterday_high, yesterday_low, yesterday_close, today_open):
    R = compute_range(yesterday_high, yesterday_low, yesterday_close)
    upper = today_open + K1 * R
    lower = today_open - K2 * R

on_bar(bar):
    if bar.time >= exit_time:
        force_close_all_positions()
        return

    if position == 0:
        if bar.close >= upper:
            enter_long(size)
        elif bar.close <= lower:
            enter_short(size)
    elif position > 0:
        if bar.close <= lower:
            close_long(position)
            enter_short(size)    # Reverse
    elif position < 0:
        if bar.close >= upper:
            close_short(position)
            enter_long(size)     # Reverse

The reversal mechanism is noteworthy: the strategy does not simply exit upon a counter-signal but reverses to the opposite position. This is consistent with the breakout philosophy—once a level is breached in the opposite direction, the move is expected to continue.

4.2 End-of-Day Forced Liquidation

As an intraday strategy, Dual Thrust mandates that all positions be closed before the session ends. This is a risk management necessity: overnight gaps can produce losses that far exceed the intraday range the strategy was designed to capture.

Let texitt_{\text{exit}} denote the forced liquidation time (typically a few minutes before the official close). The EOD logic is:

1
2
3
4
5
6
7
8
# Pseudocode: End-of-day forced liquidation

if current_time >= t_exit:
    if position > 0:
        close_long(position) at market
    elif position < 0:
        close_short(position) at market
    position = 0

The forced liquidation introduces a time constraint on the strategy. The expected holding period is bounded by:

E[holding period]Tsession(texittopen) E[\text{holding period}] \leq T_{\text{session}} - (t_{\text{exit}} - t_{\text{open}})

This has two consequences:

  1. Slippage at exit: Market orders near the close may face increased slippage due to reduced liquidity, especially in less liquid contracts.
  2. Truncated profit tails: A position that would continue to profit overnight is forcibly closed, potentially reducing the strategy’s positive skewness. This is the price paid for eliminating gap risk.

The trade-off between gap risk elimination and profit truncation can be analyzed formally. Let XX denote the overnight return and f(x)f(x) its density. The expected cost of forced liquidation is:

CEOD=0xf(x)dx0xf(x)dx=E[X+]E[X] C_{\text{EOD}} = \int_{0}^{\infty} x \cdot f(x) \, dx - \int_{-\infty}^{0} |x| \cdot f(x) \, dx = E[X^+] - E[X^-]

If the overnight drift E[X]>0E[X] > 0 (as is typical for equity indices), then CEOD>0C_{\text{EOD}} > 0 and the EOD rule imposes a systematic cost. For commodities with mean-reverting overnight behavior, the cost may be smaller or even negative.

5. Summary

Dual Thrust distills the breakout paradigm to its essentials: a single range variable, two asymmetric multipliers, and a strict intraday constraint. Its strengths are:

  • Adaptive volatility scaling: The range RtR_t automatically adjusts breakout distances to the current volatility regime.
  • Asymmetric bias control: K1K2K_1 \neq K_2 allows the strategist to encode a directional view without explicit forecasting.
  • Simplicity and robustness: With only two free parameters, the strategy is resistant to overfitting and can be deployed across multiple instruments with minimal calibration.

Its limitations are equally clear:

  • No trend filter: Dual Thrust will generate breakout signals even in choppy, range-bound markets where they are likely to be whipsawed.
  • EOD profit truncation: The forced liquidation at session end sacrifices potential overnight gains.
  • Single-timeframe: The strategy operates on a single daily range and does not incorporate multi-timeframe information.

References

  1. Chalek, M. (1984). “The Dual Thrust Trading System.” Future Truth Magazine.
  2. Kaufman, P. J. (2005). New Trading Systems and Methods, 4th ed. Wiley.
  3. Aronson, D. R. (2007). Evidence-Based Technical Analysis. Wiley.