Skip to content

No-Trade Conditions

Kill-Switch Logic

The no-trade filter is a kill switch: if any single condition below is true, the strategy output is no-trade. These conditions are evaluated independently. Multiple conditions can be true simultaneously, and all applicable reasons are reported.

No-trade conditions differ from invalidation conditions. Invalidation applies to a previously valid setup that deteriorates. No-trade conditions prevent a setup from ever being considered valid.


The Seven No-Trade Conditions

1. Neutral Bias

Source: Bias AI table

Condition: Daily bias shows neutral (0).

A neutral bias occurs when an outside bar closes inside the previous range, indicating the market has absorbed both directional attempts without committing. There is no draw-on-liquidity target.

{ "no_trade_reasons": ["neutral_bias"] }

Resolution: Wait for the next daily candle close to re-establish directional bias.


2. Invalid Hunt

Source: Session Hunt AI

Condition: Hunt state shows INVALID -- both sides of the session range have been swept without a viable re-extension.

When both the high and low of the session range are taken, there is no clear directional liquidity draw. The market has swept resting orders on both sides, and the hunt model cannot determine which direction institutions are targeting.

{ "no_trade_reasons": ["invalid_hunt"] }

Resolution: A re-extension range may form. If only one side of the re-extension is swept, the hunt becomes valid again. If both sides of the re-extension are also swept, it is a double invalidation (see condition 6).


3. No Unspent Order Blocks in Path

Source: OB AI

Condition: No unspent (solid-line) order blocks exist between the current price and the DOL target in the required direction.

Without an order block in the path, there is no institutional structure to define the entry zone. The strategy does not enter trades based on bias and hunt alone -- structural confirmation via OB is mandatory.

{ "no_trade_reasons": ["no_ob_in_path"] }

Resolution: A new OB may form if displacement occurs. The strategy continues scanning for new OBs until the entry window closes.


4. Outside Entry Window

Source: System clock

Condition: Current time is before the entry window opens or after the EOD cutoff.

Session Before Window After Window
NY Before 07:00 ET After 15:00 ET
London Before 02:00 ET After 07:00 ET

Before the window is a waiting state -- the strategy continues scanning. After the EOD cutoff is a terminal no-trade for the session.

{ "no_trade_reasons": ["outside_entry_window"] }

Resolution: For pre-session, wait. For post-EOD, no resolution within the current session.


5. Risk-Reward Below Minimum

Source: Computed from OB AI entry levels, stop, and Bias AI target

Condition: The risk-reward ratio for the configured entry tier is below 2:1.

risk_reward = |target - entry| / |entry - stop|
FAIL: risk_reward < 2.0

This is a hard floor. Even a 9/9 confluence setup with 1.8:1 R:R is a no-trade. The strategy does not compromise risk management for confluence.

{ "no_trade_reasons": ["insufficient_rr"] }

Resolution: If the aggressive tier fails the R:R check, the strategy checks safe and conservative tiers. If any tier meets 2:1, the setup is valid at that tier. If none do, it is a no-trade.


6. Double Invalidation (Re-extension Both-Sided Swept)

Source: Session Hunt AI

Condition: The initial session range had both sides swept (INVALID), a re-extension range formed, and then the re-extension range also had both sides swept.

This is the strongest no-trade signal. The market has swept liquidity pools on both sides of two consecutive ranges, indicating extreme chop with no directional commitment.

{ "no_trade_reasons": ["double_invalidation"] }

Resolution: None within the current session. A double invalidation is terminal.


7. Major News Event Blackout

Source: Configuration (news calendar integration is a future enhancement)

Condition: Current time falls within a configured news blackout window around a major economic event (FOMC, NFP, CPI, etc.).

News events cause volatility spikes that invalidate the normal ICT model assumptions. Order blocks get blown through, hunts occur in milliseconds, and FVGs form and fill in a single candle.

{ "no_trade_reasons": ["news_blackout"] }

Configuration:

no_trade:
  news_blackout:
    enabled: true
    events:
      - name: "FOMC"
        window_minutes_before: 30
        window_minutes_after: 60
      - name: "NFP"
        window_minutes_before: 15
        window_minutes_after: 30
      - name: "CPI"
        window_minutes_before: 15
        window_minutes_after: 30

V1 implementation: The blackout windows are manually configured by time. Automatic economic calendar integration is a Phase 2 feature (see Roadmap).


No-Trade Evaluation Order

The seven conditions are evaluated in the order listed above. However, all conditions are always evaluated -- the strategy does not short-circuit after the first failure. This ensures the no_trade_reasons array contains every applicable reason, giving the trader complete context.

{
  "setup_valid": false,
  "no_trade_reasons": ["neutral_bias", "invalid_hunt", "outside_entry_window"]
}

No-Trade Summary Table

# Condition Source Terminal? Resolution
1 Neutral bias Bias AI Per session Next daily candle close
2 Invalid hunt Session Hunt AI Until re-extension Re-extension with one-sided sweep
3 No unspent OB OB AI Until new OB forms New displacement creates OB
4 Outside entry window Clock Terminal after EOD Wait (pre) or none (post)
5 R:R below 2:1 Computed Until levels change Price moves, new OB, or lower tier entry
6 Double invalidation Session Hunt AI Terminal None within session
7 News blackout Config Until window ends Wait for blackout to pass

Interaction With Confluence Score

No-trade conditions are evaluated before the confluence score is computed. If any no-trade condition is true, the confluence score is not calculated and is reported as 0 in the StrategyFlags output.

The confluence minimum threshold (5) is a separate filter that applies only to setups that have passed all no-trade checks. A setup with no no-trade conditions but a confluence score of 4 is also a no-trade, with reason insufficient_confluence.