Jump to content

Component:Probability Zone: Difference between revisions

From PlusEV Wiki Page
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  ---
= Probability Zone Analysis =
  = Component: Probability Zone Analysis =
== Purpose ==


  '''File:''' <code>probability_zone_analysis.py</code><br/>
'''"Where is price in the range & what are the odds of continuation?"'''
  '''Type:''' Support Component<br/>
  '''Lines:''' 947<br/>
  '''Branch:''' <code>task/T26_probability_zone</code><br/>
  '''Code:''' [https://github.com/stoic97/plus_ev_code_base/blob/task/T26_probability_zone/services/backtest/src/components/probability_zone_analysis.py View Source]


  ----
# Divides price range into halves and thirds
# Calculates continuation probability based on zone
# Detects Three-Finger Spread (profit-taking pressure)
# Identifies crash bars (structural breaks)
# Filters signals based on zone probability


  == Purpose ==
----


  Answers the question: '''"Where is price in the range, and what are the odds of continuation?"'''
== Trading Market Principle ==


  This component implements the probability zone concepts from trade_philosophy.pdf:
'''"Trade with the odds. Top third after pullback = 80% continuation. Bottom third = 15%."'''
  # Divides price range into halves and thirds
  # Calculates continuation probability based on zone
  # Detects Three-Finger Spread (profit-taking pressure)
  # Identifies crash bars (structural breaks)
  # Filters signals based on zone probability


  ----
* Price in top third = high probability of new high (80%) → favor LONG
* Price in bottom third = low probability of new high (15%) → favor SHORT
* Three-finger spread = profit-taking imminent → avoid new positions
* Crash bar = structural break → short the bounce
* Sideways market = mean reversion → opposite logic applies


  == Trading Market Principle ==
----


  '''"Trade with the odds. Top third after pullback = 80% continuation. Bottom third = 15%."'''
=== The Asymmetric Probability Edge ===


  * Price in top third = high probability of new high (80%) → favor LONG
When odds are low on one outcome, '''the opposite side usually carries high odds''':
  * Price in bottom third = low probability of new high (15%) → avoid LONG
* If new high probability drops to 15%, then '''85% odds favor reversal'''
  * Three-finger spread = profit-taking imminent → avoid new positions
* We position ourselves on the high-probability side
  * Crash bar = structural break → short the bounce
  * Sideways market = mean reversion → opposite logic applies


  ----
== Probability Zones ==


  == Probability Zones ==
Divide recent swing range into zones:


  Divide recent swing range into zones:
<pre>
    ┌───────────────────────────────────────┐ ← Swing High
    │                                      │
    │        TOP THIRD (80%)              │ ← 80% continuation probability
    │    (Above 66% of range)            │
    ├───────────────────────────────────────┤
    │                                      │
    │        TOP HALF (65%)                │ ← 65% continuation probability
    │    (50% - 66% of range)            │
    ├───────────────────────────────────────┤ ← 50% Line
    │                                      │
    │        BOTTOM HALF (35%)            │ ← 35% continuation probability
    │    (33% - 50% of range)            │
    ├───────────────────────────────────────┤
    │                                      │
    │        BOTTOM THIRD (15%)            │ ← Only 15% continuation (85% DOWN)
    │    (Below 33% of range)            │
    │                                      │
    └───────────────────────────────────────┘ ← Swing Low
</pre>


  <pre>
{| class="wikitable"
      ┌───────────────────────────────────────┐ ← Swing High
|-
      │                                      │
! Zone !! Range Position !! Continuation Prob !! Trading Implication
      │        TOP THIRD (80%)              │ ← 80% continuation probability
|-
      │    (Above 66.7% of range)            │
| Top Third || ≥ 66% || 80% || Strong LONG zone after pullback
      ├───────────────────────────────────────┤
|-
      │                                      │
| Top Half || 50% - 66% || 65% || OK for LONG with confirmation
      │        TOP HALF (65%)                │ ← 65% continuation probability
|-
      │    (50% - 66.7% of range)            │
| Bottom Half || 33% - 50% || 35% || Cautious LONG, watch for confirmation
      ├───────────────────────────────────────┤ ← 50% Line
|-
      │                                      │
| Bottom Third || < 33% || 15% || Avoid LONG (85% chance of lower)
      │        BOTTOM HALF (35%)            │ ← 35% continuation probability
|}
      │    (33.3% - 50% of range)            │
      ├───────────────────────────────────────┤
      │                                      │
      │        BOTTOM THIRD (15%)            │ ← Only 15% continuation (85% DOWN)
      │    (Below 33.3% of range)           │
      │                                      │
      └───────────────────────────────────────┘ ← Swing Low
  </pre>


  {| class="wikitable"
----
  |-
  ! Zone !! Range Position !! Continuation Prob !! Trading Implication
  |-
  | Top Third || ≥ 66.7% || 80% || Strong LONG zone after pullback
  |-
  | Top Half || 50% - 66.7% || 65% || OK for LONG with confirmation
  |-
  | Bottom Half || 33.3% - 50% || 35% || Cautious LONG, watch for confirmation
  |-
  | Bottom Third || < 33.3% || 15% || Avoid LONG (85% chance of lower)
  |}


  ----
== Three-Finger Spread ==


  == Three-Finger Spread ==
Detects large separation between Price, 21 MA, and 200 MA:


  Detects large separation between Price, 21 MA, and 200 MA:
<pre>
BULLISH THREE-FINGER SPREAD:
    Price >> 21 MA >> 200 MA (large gaps)


  <pre>
    Interpretation:
  BULLISH THREE-FINGER SPREAD:
    - Many traders with unrealized profits
      Price >> 21 MA >> 200 MA (large gaps)
    - Any red bar can trigger mass profit-taking
    - Creates fast, violent declines
    - AVOID LONGS in this condition


      Interpretation:
BEARISH THREE-FINGER SPREAD:
      - Many traders with unrealized profits
    Price << 21 MA << 200 MA (large gaps)
      - Any red bar can trigger mass profit-taking
      - Creates fast, violent declines
      - AVOID LONGS in this condition


  BEARISH THREE-FINGER SPREAD:
    Interpretation:
      Price << 21 MA << 200 MA (large gaps)
    - Many traders with unrealized losses
    - Potential for short squeeze
    - AVOID SHORTS in this condition
</pre>


      Interpretation:
'''Detection Threshold:''' 2% minimum spread between each level
      - Many traders with unrealized losses
      - Potential for short squeeze
      - AVOID SHORTS in this condition
  </pre>


  '''Detection Threshold:''' 2% minimum spread between each level
----


  ----
== Crash Bar Detection ==


  == Crash Bar Detection ==
Identifies structural breaks (crash bars):


  Identifies structural breaks (crash bars):
<pre>
Crash Bar Criteria:
    1. Range ≥ 2× average range of prior 10 bars
    2. Close near extreme (within 30% of high/low)
    3. Fast, violent, elongated movement


  <pre>
IF crash bar detected:
  Crash Bar Criteria:
    - Block LONG signals
      1. Range ≥ 2× average range of prior 10 bars
    - Allow SHORT signals with 1.5x strength
      2. Close near extreme (within 30% of high/low)
 
      3. Fast, violent, elongated movement


  IF crash bar detected:
Post-Crash (within 5 bars):
      - Block LONG signals
    - Bounce to top zone = prime SHORT entry
      - Allow SHORT signals with 1.5x strength
    - Block LONG signals
</pre>


  Post-Crash (within 5 bars):
----
      - Bounce to top zone = prime SHORT entry
      - Block LONG signals
  </pre>


  ----
== Pullback Classification ==


  == Pullback Classification ==
Classifies pullbacks as healthy or collapse:


  Classifies pullbacks as healthy or collapse:
{| class="wikitable"
|-
! Type !! Criteria !! Trading Action
|-
| HEALTHY_PULLBACK || ≤ 50% retracement, 45-degree drift || Good entry opportunity
|-
| COLLAPSE || ≥ 60% retracement, vertical drop || Avoid buying the dip
|-
| BOUNCE || Between healthy and collapse || Short opportunity in downtrend
|-
| NO_PULLBACK || < 10% retracement || Price at highs, wait for pullback
|}


  {| class="wikitable"
----
  |-
  ! Type !! Criteria !! Trading Action
  |-
  | HEALTHY_PULLBACK || ≤ 50% retracement, 45-degree drift || Good entry opportunity
  |-
  | COLLAPSE || ≥ 60% retracement, vertical drop || Avoid buying the dip
  |-
  | BOUNCE || Between healthy and collapse || Short opportunity in downtrend
  |-
  | NO_PULLBACK || < 10% retracement || Price at highs, wait for pullback
  |}


  ----
== Signal Filtering Logic ==


  == Signal Filtering Logic ==
=== Trending Market ===


   === Trending Market ===
<pre>
UPTREND:
    Top Third:      LONG ✓ (80% odds), SHORT ✗
    Top Half:      LONG ✓ (65% odds), SHORT ✗
    Bottom Half:    LONG ⚠ (35% odds, reduced strength), SHORT ✗
    Bottom Third:   LONG ✗ (15% odds), SHORT ✓ (trend break signal)


  <pre>
DOWNTREND:
  UPTREND:
    Bottom Third:   SHORT ✓, LONG
      Top Third:     LONG (80% odds), SHORT
    Top Third:     SHORT ✓ (bounce entry), LONG ✗
      Top Half:       LONG ✓ (65% odds), SHORT ✗
</pre>
      Bottom Half:    LONG ⚠ (35% odds, reduced strength), SHORT
      Bottom Third:  LONG ✗ (15% odds), SHORT ✓ (trend break signal)


  DOWNTREND:
=== Sideways/Creeper Market ===
      Bottom Third:  SHORT ✓, LONG ✗
      Top Third:      SHORT ✓ (bounce entry), LONG ✗
  </pre>


  === Sideways/Creeper Market ===
Mean reversion logic (opposite of trending):


   Mean reversion logic (opposite of trending):
<pre>
SIDEWAYS:
    Top Third:      LONG needs confirmation, SHORT ✓
    Top Half:      LONG needs confirmation, SHORT ✓
    Bottom Half:    LONG needs confirmation, SHORT ✓
    Bottom Third:   LONG ✓ (85% reversal up), SHORT ✗
</pre>


  <pre>
----
  SIDEWAYS:
      Top Third:      LONG needs confirmation, SHORT ✓
      Top Half:      LONG needs confirmation, SHORT ✓
      Bottom Half:    LONG needs confirmation, SHORT ✓
      Bottom Third:  LONG ✓ (85% reversal up), SHORT ✗
  </pre>


  ----
== Configuration ==


  == Configuration ==
{| class="wikitable"
|-
! Parameter !! Value !! Description
|-
| <code>top_third_threshold</code> || 0.66 || Above 66% = top third
|-
| <code>bottom_third_threshold</code> || 0.33 || Below 33% = bottom third
|-
| <code>top_third_probability</code> || 0.80 || 80% continuation
|-
| <code>bottom_third_probability</code> || 0.15 || 15% continuation
|-
| <code>swing_lookback_bars</code> || 20 || Bars for swing detection
|-
| <code>three_finger_min_spread_pct</code> || 0.02 || 2% minimum spread
|-
| <code>crash_bar_multiplier</code> || 2.0 || Bar 2x average = crash
|-
| <code>crash_bar_close_threshold</code> || 0.30 || Close within 30% of extreme
|-
| <code>healthy_pullback_max_depth</code> || 0.50 || Max 50% for healthy
|-
| <code>collapse_min_depth</code> || 0.60 || Min 60% for collapse
|}


  {| class="wikitable"
----
  |-
  ! Parameter !! Value !! Description
  |-
  | <code>top_third_threshold</code> || 0.667 || Above 66.7% = top third
  |-
  | <code>bottom_third_threshold</code> || 0.333 || Below 33.3% = bottom third
  |-
  | <code>top_third_probability</code> || 0.80 || 80% continuation
  |-
  | <code>bottom_third_probability</code> || 0.15 || 15% continuation
  |-
  | <code>swing_lookback_bars</code> || 20 || Bars for swing detection
  |-
  | <code>three_finger_min_spread_pct</code> || 0.02 || 2% minimum spread
  |-
  | <code>crash_bar_multiplier</code> || 2.0 || Bar 2x average = crash
  |-
  | <code>crash_bar_close_threshold</code> || 0.30 || Close within 30% of extreme
  |-
  | <code>healthy_pullback_max_depth</code> || 0.50 || Max 50% for healthy
  |-
  | <code>collapse_min_depth</code> || 0.60 || Min 60% for collapse
  |}


  ----
== Output ==


  == Output ==
'''ProbabilityZoneResult:'''
{| class="wikitable"
|-
! Field !! Type !! Description
|-
| <code>zone</code> || Enum || TOP_THIRD, TOP_HALF, BOTTOM_HALF, BOTTOM_THIRD
|-
| <code>zone_position_pct</code> || float || 0-100, where in range
|-
| <code>continuation_probability</code> || float || 0.15 - 0.80
|-
| <code>swing_high</code> || float || Recent swing high
|-
| <code>swing_low</code> || float || Recent swing low
|-
| <code>has_three_finger_spread</code> || bool || Large MA spread detected
|-
| <code>ma_structure</code> || Enum || UPTREND, DOWNTREND, SIDEWAYS, THREE_FINGER_*
|-
| <code>pullback_type</code> || Enum || HEALTHY, COLLAPSE, BOUNCE, NO_PULLBACK
|-
| <code>is_crash_bar</code> || bool || Crash bar detected
|-
| <code>crash_bar_magnitude</code> || float || How many times larger than average
|-
| <code>allows_long</code> || bool || Should LONG be allowed?
|-
| <code>allows_short</code> || bool || Should SHORT be allowed?
|-
| <code>signal_strength_modifier</code> || float || 0.5 - 1.5 multiplier
|}


  '''ProbabilityZoneResult:'''
----
  {| class="wikitable"
  |-
  ! Field !! Type !! Description
  |-
  | <code>zone</code> || Enum || TOP_THIRD, TOP_HALF, BOTTOM_HALF, BOTTOM_THIRD
  |-
  | <code>zone_position_pct</code> || float || 0-100, where in range
  |-
  | <code>continuation_probability</code> || float || 0.15 - 0.80
  |-
  | <code>swing_high</code> || float || Recent swing high
  |-
  | <code>swing_low</code> || float || Recent swing low
  |-
  | <code>has_three_finger_spread</code> || bool || Large MA spread detected
  |-
  | <code>ma_structure</code> || Enum || UPTREND, DOWNTREND, SIDEWAYS, THREE_FINGER_*
  |-
  | <code>pullback_type</code> || Enum || HEALTHY, COLLAPSE, BOUNCE, NO_PULLBACK
  |-
  | <code>is_crash_bar</code> || bool || Crash bar detected
  |-
  | <code>crash_bar_magnitude</code> || float || How many times larger than average
  |-
  | <code>allows_long</code> || bool || Should LONG be allowed?
  |-
  | <code>allows_short</code> || bool || Should SHORT be allowed?
  |-
  | <code>signal_strength_modifier</code> || float || 0.5 - 1.5 multiplier
  |}


  ----
== Dependencies ==


  == Dependencies ==
'''Used By:'''
* [[Component:Signal_Generation|signal_generation_trade_management.py]] - Gate 4: Probability Zone Filter


  '''Used By:'''
'''Provides:'''
  * [[Component:Signal_Generation|signal_generation_trade_management.py]] - Gate 4: Probability Zone Filter
* Zone classification for signal filtering
* Continuation probability for strength adjustment


  '''Provides:'''
----
  * Zone classification for signal filtering
  * Continuation probability for strength adjustment


  ----
== Quick Reference ==


  == Quick Reference ==
{| class="wikitable"
 
|-
  {| class="wikitable"
! Condition !! LONG !! SHORT !! Reason
  |-
|-
  ! Condition !! LONG !! SHORT !! Reason
| Top third, uptrend || ✓ Strong || ✗ Block || 80% continuation
  |-
|-
  | Top third, uptrend || ✓ Strong || ✗ Block || 80% continuation
| Bottom third, uptrend || ✗ Block || ✓ Allow || 85% down probability
  |-
|-
  | Bottom third, uptrend || ✗ Block || ✓ Allow || 85% down probability
| Three-finger spread (bull) || ✗ Block || ✓ Allow || Profit-taking imminent
  |-
|-
  | Three-finger spread (bull) || ✗ Block || ✓ Allow || Profit-taking imminent
| Three-finger spread (bear) || ✓ Allow || ✗ Block || Potential reversal
  |-
|-
  | Three-finger spread (bear) || ✓ Allow || ✗ Block || Potential reversal
| Crash bar detected || ✗ Block || ✓ Strong || Structural break
  |-
|-
  | Crash bar detected || ✗ Block || ✓ Strong || Structural break
| Post-crash bounce to top || ✗ Block || ✓ Strong || Bounce short opportunity
  |-
|-
  | Post-crash bounce to top || ✗ Block || ✓ Strong || Bounce short opportunity
| Collapse detected || ✗ Block || ✓ Allow || Not healthy pullback
  |-
|-
  | Collapse detected || ✗ Block || ✓ Allow || Not healthy pullback
| Sideways, top third || Needs confirm || ✓ Allow || Mean reversion
  |-
|-
  | Sideways, top third || Needs confirm || ✓ Allow || Mean reversion
| Sideways, bottom third || ✓ Strong || ✗ Block || 85% reversal up
  |-
|}
  | Sideways, bottom third || ✓ Strong || ✗ Block || 85% reversal up
  |}
 
  ----

Latest revision as of 11:15, 16 January 2026

Probability Zone Analysis

[edit]

Purpose

[edit]

"Where is price in the range & what are the odds of continuation?"

  1. Divides price range into halves and thirds
  2. Calculates continuation probability based on zone
  3. Detects Three-Finger Spread (profit-taking pressure)
  4. Identifies crash bars (structural breaks)
  5. Filters signals based on zone probability

Trading Market Principle

[edit]

"Trade with the odds. Top third after pullback = 80% continuation. Bottom third = 15%."

  • Price in top third = high probability of new high (80%) → favor LONG
  • Price in bottom third = low probability of new high (15%) → favor SHORT
  • Three-finger spread = profit-taking imminent → avoid new positions
  • Crash bar = structural break → short the bounce
  • Sideways market = mean reversion → opposite logic applies

The Asymmetric Probability Edge

[edit]

When odds are low on one outcome, the opposite side usually carries high odds:

  • If new high probability drops to 15%, then 85% odds favor reversal
  • We position ourselves on the high-probability side

Probability Zones

[edit]

Divide recent swing range into zones:

    ┌───────────────────────────────────────┐ ← Swing High
    │                                       │
    │         TOP THIRD (80%)               │ ← 80% continuation probability
    │     (Above 66% of range)            │
    ├───────────────────────────────────────┤
    │                                       │
    │         TOP HALF (65%)                │ ← 65% continuation probability
    │     (50% - 66% of range)            │
    ├───────────────────────────────────────┤ ← 50% Line
    │                                       │
    │         BOTTOM HALF (35%)             │ ← 35% continuation probability
    │     (33% - 50% of range)            │
    ├───────────────────────────────────────┤
    │                                       │
    │         BOTTOM THIRD (15%)            │ ← Only 15% continuation (85% DOWN)
    │     (Below 33% of range)            │
    │                                       │
    └───────────────────────────────────────┘ ← Swing Low
Zone Range Position Continuation Prob Trading Implication
Top Third ≥ 66% 80% Strong LONG zone after pullback
Top Half 50% - 66% 65% OK for LONG with confirmation
Bottom Half 33% - 50% 35% Cautious LONG, watch for confirmation
Bottom Third < 33% 15% Avoid LONG (85% chance of lower)

Three-Finger Spread

[edit]

Detects large separation between Price, 21 MA, and 200 MA:

BULLISH THREE-FINGER SPREAD:
    Price >> 21 MA >> 200 MA (large gaps)

    Interpretation:
    - Many traders with unrealized profits
    - Any red bar can trigger mass profit-taking
    - Creates fast, violent declines
    - AVOID LONGS in this condition

BEARISH THREE-FINGER SPREAD:
    Price << 21 MA << 200 MA (large gaps)

    Interpretation:
    - Many traders with unrealized losses
    - Potential for short squeeze
    - AVOID SHORTS in this condition

Detection Threshold: 2% minimum spread between each level


Crash Bar Detection

[edit]

Identifies structural breaks (crash bars):

Crash Bar Criteria:
    1. Range ≥ 2× average range of prior 10 bars
    2. Close near extreme (within 30% of high/low)
    3. Fast, violent, elongated movement

IF crash bar detected:
    - Block LONG signals
    - Allow SHORT signals with 1.5x strength
   

Post-Crash (within 5 bars):
    - Bounce to top zone = prime SHORT entry
    - Block LONG signals

Pullback Classification

[edit]

Classifies pullbacks as healthy or collapse:

Type Criteria Trading Action
HEALTHY_PULLBACK ≤ 50% retracement, 45-degree drift Good entry opportunity
COLLAPSE ≥ 60% retracement, vertical drop Avoid buying the dip
BOUNCE Between healthy and collapse Short opportunity in downtrend
NO_PULLBACK < 10% retracement Price at highs, wait for pullback

Signal Filtering Logic

[edit]
[edit]
UPTREND:
    Top Third:      LONG ✓ (80% odds), SHORT ✗
    Top Half:       LONG ✓ (65% odds), SHORT ✗
    Bottom Half:    LONG ⚠ (35% odds, reduced strength), SHORT ✗
    Bottom Third:   LONG ✗ (15% odds), SHORT ✓ (trend break signal)

DOWNTREND:
    Bottom Third:   SHORT ✓, LONG ✗
    Top Third:      SHORT ✓ (bounce entry), LONG ✗

Sideways/Creeper Market

[edit]

Mean reversion logic (opposite of trending):

SIDEWAYS:
    Top Third:      LONG needs confirmation, SHORT ✓
    Top Half:       LONG needs confirmation, SHORT ✓
    Bottom Half:    LONG needs confirmation, SHORT ✓
    Bottom Third:   LONG ✓ (85% reversal up), SHORT ✗

Configuration

[edit]
Parameter Value Description
top_third_threshold 0.66 Above 66% = top third
bottom_third_threshold 0.33 Below 33% = bottom third
top_third_probability 0.80 80% continuation
bottom_third_probability 0.15 15% continuation
swing_lookback_bars 20 Bars for swing detection
three_finger_min_spread_pct 0.02 2% minimum spread
crash_bar_multiplier 2.0 Bar 2x average = crash
crash_bar_close_threshold 0.30 Close within 30% of extreme
healthy_pullback_max_depth 0.50 Max 50% for healthy
collapse_min_depth 0.60 Min 60% for collapse

Output

[edit]

ProbabilityZoneResult:

Field Type Description
zone Enum TOP_THIRD, TOP_HALF, BOTTOM_HALF, BOTTOM_THIRD
zone_position_pct float 0-100, where in range
continuation_probability float 0.15 - 0.80
swing_high float Recent swing high
swing_low float Recent swing low
has_three_finger_spread bool Large MA spread detected
ma_structure Enum UPTREND, DOWNTREND, SIDEWAYS, THREE_FINGER_*
pullback_type Enum HEALTHY, COLLAPSE, BOUNCE, NO_PULLBACK
is_crash_bar bool Crash bar detected
crash_bar_magnitude float How many times larger than average
allows_long bool Should LONG be allowed?
allows_short bool Should SHORT be allowed?
signal_strength_modifier float 0.5 - 1.5 multiplier

Dependencies

[edit]

Used By:

Provides:

  • Zone classification for signal filtering
  • Continuation probability for strength adjustment

Quick Reference

[edit]
Condition LONG SHORT Reason
Top third, uptrend ✓ Strong ✗ Block 80% continuation
Bottom third, uptrend ✗ Block ✓ Allow 85% down probability
Three-finger spread (bull) ✗ Block ✓ Allow Profit-taking imminent
Three-finger spread (bear) ✓ Allow ✗ Block Potential reversal
Crash bar detected ✗ Block ✓ Strong Structural break
Post-crash bounce to top ✗ Block ✓ Strong Bounce short opportunity
Collapse detected ✗ Block ✓ Allow Not healthy pullback
Sideways, top third Needs confirm ✓ Allow Mean reversion
Sideways, bottom third ✓ Strong ✗ Block 85% reversal up