Jump to content

Component:Probability Zone: Difference between revisions

From PlusEV Wiki Page
No edit summary
No edit summary
Tag: Manual revert
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%) → avoid LONG
* 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%."'''
== Probability Zones ==


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


  ----
<pre>
    ┌───────────────────────────────────────┐ ← Swing High
    │                                      │
    │        TOP THIRD (80%)              │ ← 80% continuation probability
    │    (Above 66.7% of range)            │
    ├───────────────────────────────────────┤
    │                                      │
    │        TOP HALF (65%)                │ ← 65% continuation probability
    │    (50% - 66.7% of range)            │
    ├───────────────────────────────────────┤ ← 50% Line
    │                                      │
    │        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>


  == Probability Zones ==
{| 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)
|}


  Divide recent swing range into zones:
----


  <pre>
== Three-Finger Spread ==
      ┌───────────────────────────────────────┐ ← Swing High
      │                                      │
      │        TOP THIRD (80%)              │ ← 80% continuation probability
      │    (Above 66.7% of range)            │
      ├───────────────────────────────────────┤
      │                                      │
      │        TOP HALF (65%)                │ ← 65% continuation probability
      │    (50% - 66.7% of range)            │
      ├───────────────────────────────────────┤ ← 50% Line
      │                                      │
      │        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"
Detects large separation between Price, 21 MA, and 200 MA:
  |-
  ! 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)
  |}


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


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


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


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


      Interpretation:
'''Detection Threshold:''' 2% minimum spread between each level
      - 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:
== Crash Bar Detection ==
      - Many traders with unrealized losses
      - Potential for short squeeze
      - AVOID SHORTS in this condition
  </pre>


  '''Detection Threshold:''' 2% minimum spread between each level
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


  == Crash Bar Detection ==
IF crash bar detected:
    - Block LONG signals
    - Allow SHORT signals with 1.5x strength
    - Require color change confirmation for entry


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


  <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


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


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


  ----
{| 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
|}


  == Pullback Classification ==
----


  Classifies pullbacks as healthy or collapse:
== Signal Filtering Logic ==


  {| class="wikitable"
=== Trending Market ===
  |-
  ! 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
  |}


   ----
<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)


   == Signal Filtering Logic ==
DOWNTREND:
    Bottom Third:   SHORT ✓, LONG ✗
    Top Third:      SHORT ✓ (bounce entry), LONG ✗
</pre>


  === Trending Market ===
=== Sideways/Creeper Market ===


  <pre>
Mean reversion logic (opposite of trending):
  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:
<pre>
      Bottom Third:   SHORT ✓, LONG
SIDEWAYS:
      Top Third:     SHORT ✓ (bounce entry), LONG
    Top Third:     LONG needs confirmation, SHORT ✓
  </pre>
    Top Half:      LONG needs confirmation, SHORT ✓
    Bottom Half:    LONG needs confirmation, SHORT ✓
    Bottom Third:   LONG ✓ (85% reversal up), SHORT
</pre>


  === Sideways/Creeper Market ===
----


  Mean reversion logic (opposite of trending):
== Configuration ==


  <pre>
{| class="wikitable"
  SIDEWAYS:
|-
      Top Third:      LONG needs confirmation, SHORT ✓
! Parameter !! Value !! Description
      Top Half:      LONG needs confirmation, SHORT ✓
|-
      Bottom Half:    LONG needs confirmation, SHORT ✓
| <code>top_third_threshold</code> || 0.667 || Above 66.7% = top third
      Bottom Third:  LONG ✓ (85% reversal up), SHORT ✗
|-
  </pre>
| <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
|-
| <code>color_change_ma_proximity</code> || 15.0 || Points to consider "near" MA
|}


  ----
----


  == Configuration ==
== Output ==


  {| class="wikitable"
'''ProbabilityZoneResult:'''
  |-
{| class="wikitable"
  ! Parameter !! Value !! Description
|-
  |-
! Field !! Type !! Description
  | <code>top_third_threshold</code> || 0.667 || Above 66.7% = top third
|-
  |-
| <code>zone</code> || Enum || TOP_THIRD, TOP_HALF, BOTTOM_HALF, BOTTOM_THIRD
  | <code>bottom_third_threshold</code> || 0.333 || Below 33.3% = bottom third
|-
  |-
| <code>zone_position_pct</code> || float || 0-100, where in range
  | <code>top_third_probability</code> || 0.80 || 80% continuation
|-
  |-
| <code>continuation_probability</code> || float || 0.15 - 0.80
  | <code>bottom_third_probability</code> || 0.15 || 15% continuation
|-
  |-
| <code>swing_high</code> || float || Recent swing high
  | <code>swing_lookback_bars</code> || 20 || Bars for swing detection
|-
  |-
| <code>swing_low</code> || float || Recent swing low
  | <code>three_finger_min_spread_pct</code> || 0.02 || 2% minimum spread
|-
  |-
| <code>has_three_finger_spread</code> || bool || Large MA spread detected
  | <code>crash_bar_multiplier</code> || 2.0 || Bar 2x average = crash
|-
  |-
| <code>ma_structure</code> || Enum || UPTREND, DOWNTREND, SIDEWAYS, THREE_FINGER_*
  | <code>crash_bar_close_threshold</code> || 0.30 || Close within 30% of extreme
|-
  |-
| <code>pullback_type</code> || Enum || HEALTHY, COLLAPSE, BOUNCE, NO_PULLBACK
  | <code>healthy_pullback_max_depth</code> || 0.50 || Max 50% for healthy
|-
  |-
| <code>is_crash_bar</code> || bool || Crash bar detected
  | <code>collapse_min_depth</code> || 0.60 || Min 60% for collapse
|-
  |}
| <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
|-
| <code>requires_color_change</code> || bool || Needs color change confirmation
|}


  ----
----


  == Output ==
== Dependencies ==


  '''ProbabilityZoneResult:'''
'''Used By:'''
  {| class="wikitable"
* [[Component:Signal_Generation|signal_generation_trade_management.py]] - Gate 4: Probability Zone Filter
  |-
  ! 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
  |}


  ----
'''Provides:'''
* Zone classification for signal filtering
* Continuation probability for strength adjustment
* Color change detection for entry confirmation


  == Dependencies ==
----


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


  '''Provides:'''
{| class="wikitable"
  * Zone classification for signal filtering
|-
  * Continuation probability for strength adjustment
! Condition !! LONG !! SHORT !! Reason
 
|-
  ----
| Top third, uptrend || ✓ Strong || ✗ Block || 80% continuation
 
|-
  == Quick Reference ==
| Bottom third, uptrend || ✗ Block || ✓ Allow || 85% down probability
 
|-
  {| class="wikitable"
| Three-finger spread (bull) || ✗ Block || ✓ Allow || Profit-taking imminent
  |-
|-
  ! Condition !! LONG !! SHORT !! Reason
| Three-finger spread (bear) || ✓ Allow || ✗ Block || Potential reversal
  |-
|-
  | Top third, uptrend || ✓ Strong || ✗ Block || 80% continuation
| Crash bar detected || ✗ Block || ✓ Strong || Structural break
  |-
|-
  | Bottom third, uptrend || ✗ Block || ✓ Allow || 85% down probability
| Post-crash bounce to top || ✗ Block || ✓ Strong || Bounce short opportunity
  |-
|-
  | Three-finger spread (bull) || ✗ Block || ✓ Allow || Profit-taking imminent
| Collapse detected || ✗ Block || ✓ Allow || Not healthy pullback
  |-
|-
  | Three-finger spread (bear) || ✓ Allow || ✗ Block || Potential reversal
| Sideways, top third || Needs confirm || ✓ Allow || Mean reversion
  |-
|-
  | Crash bar detected || ✗ Block || ✓ Strong || Structural break
| Sideways, bottom third || ✓ Strong || ✗ Block || 85% reversal up
  |-
|}
  | 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
  |}
 
  ----

Revision as of 00:10, 10 January 2026

Probability Zone Analysis

Purpose

"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

"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%) → avoid LONG
  • Three-finger spread = profit-taking imminent → avoid new positions
  • Crash bar = structural break → short the bounce
  • Sideways market = mean reversion → opposite logic applies

Probability Zones

Divide recent swing range into zones:

    ┌───────────────────────────────────────┐ ← Swing High
    │                                       │
    │         TOP THIRD (80%)               │ ← 80% continuation probability
    │     (Above 66.7% of range)            │
    ├───────────────────────────────────────┤
    │                                       │
    │         TOP HALF (65%)                │ ← 65% continuation probability
    │     (50% - 66.7% of range)            │
    ├───────────────────────────────────────┤ ← 50% Line
    │                                       │
    │         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
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

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

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
    - Require color change confirmation for entry

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

Pullback Classification

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

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

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

Parameter Value Description
top_third_threshold 0.667 Above 66.7% = top third
bottom_third_threshold 0.333 Below 33.3% = 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
color_change_ma_proximity 15.0 Points to consider "near" MA

Output

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
requires_color_change bool Needs color change confirmation

Dependencies

Used By:

Provides:

  • Zone classification for signal filtering
  • Continuation probability for strength adjustment
  • Color change detection for entry confirmation

Quick Reference

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