Jump to content

Component:Setup Quality Detection

From PlusEV Wiki Page
Revision as of 20:20, 7 January 2026 by Plusev.blr (talk | contribs) (Created page with "= Component: Setup Quality Detection = '''File:''' <code>setup_quality_detection.py</code><br/> '''Layer:''' 3<br/> '''Lines:''' 670<br/> '''Code:''' [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/setup_quality_detection.py View Source] ---- == Purpose == Answers the question: '''"How good is this setup? Is it worth trading?"''' This component scores every potential trade from 0-100 and assigns a grade (A+ to...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Component: Setup Quality Detection

File: setup_quality_detection.py
Layer: 3
Lines: 670
Code: View Source


Purpose

Answers the question: "How good is this setup? Is it worth trading?"

This component scores every potential trade from 0-100 and assigns a grade (A+ to F). Higher grades get larger position sizes. The scoring uses a 5-factor weighted system with penalties and bonuses.


Trading Market Principle

"Not all setups are created equal. Grade them, size them accordingly."

  • A+ setup = everything aligned, maximum conviction → 2 lots
  • Poor setup = missing key factors → 1 lot or skip
  • Penalties protect capital → creeper, ma_struggle, wrong phase = reduce score
  • Bonuses reward quality → railroad, clean entry, near key level = boost score
  • A+ requires ALL criteria → one missing = capped at 79 (no A+)

5-Factor Weighted Scoring

Every setup is scored across 5 factors, each with a specific weight:

Factor Weight What It Measures Score Source
Timeframe Alignment 30% Are all timeframes pointing same direction? MTF alignment_score × 100
Trend Strength 20% Is the trend strong with no adverse conditions? 100 - penalties + bonuses
Entry Quality 15% Are we entering at a good spot? Near MA, clean entry bonuses
Key Level Proximity 20% Are we near support/resistance? Near key level check
Risk/Reward 15% Is the R:R ratio acceptable? Lookup table

Formula:

Weighted_Score = (TF × 0.30) + (Trend × 0.20) + (Entry × 0.15) + (KeyLevel × 0.20) + (RR × 0.15)

Factor Calculations

Factor 1: Timeframe Alignment (30%)

Input:  TimeframeAnalysisResult.alignment_score (0-1)
Output: Score 0-100

score = alignment_score × 100

Factor 2: Trend Strength (20%)

Starts at 100, then applies penalties and bonuses:

trend_score = 100

// PENALTIES (subtracted)
IF is_creeper_move:        trend_score -= 50
IF price_ma_struggle:      trend_score -= 30
IF NOT has_two_day_trend:  trend_score -= 30
IF trend_phase != MIDDLE:  trend_score -= 25

// BONUSES (added)
IF is_railroad_trend:      trend_score += 15

RETURN clamp(trend_score, 0, 100)

Factor 3: Entry Quality (15%)

entry_score = 100

IF near_key_level:    entry_score += 10   // Key level bonus
IF NOT near_ma:       entry_score -= 40   // MA distance penalty
IF clean_entry:       entry_score += 10   // Clean entry bonus

RETURN clamp(entry_score, 0, 100)

Factor 4: Key Level Proximity (20%)

level_score = 100

IF NOT near_key_level AND NOT near_ma:
    level_score -= 50   // Major penalty

RETURN clamp(level_score, 0, 100)

Factor 5: Risk/Reward (15%)

Uses lookup table:

R:R Ratio Score Quality
< 1.0 0 Unacceptable
1.0 - 1.5 40 Poor
1.5 - 2.0 70 Acceptable
2.0 - 3.0 90 Good
≥ 3.0 100 Excellent

Penalties & Bonuses

Type Condition Value Factor Affected
Penalty Creeper move detected -50 Trend Strength
Penalty Price struggling near MA -30 Trend Strength
Penalty No two-day trend -30 Trend Strength
Penalty Phase != MIDDLE -25 Trend Strength
Penalty Not near MA -40 Entry Quality
Penalty Not near key level or MA -50 Key Level Proximity
Bonus Railroad trend detected +15 Trend Strength
Bonus Near key level +10 Entry Quality
Bonus Clean entry +10 Entry Quality

Institutional Fight Multiplier

If institutional fight is in progress, apply 30% penalty:

IF institutional_fight_in_progress:
    final_score = weighted_score × 0.70

This reduces all scores by 30% when big players are battling.


A+ Criteria Enforcement

To get A+ grade, setup must meet ALL three criteria:

Criteria Requirement
All Timeframes Aligned timeframe_analysis.aligned = True
Entry Near MA entry_data.near_ma = True
Two-Day Trend Present market_state.has_two_day_trend = True

If ANY criteria missing: Score is capped at 79 (maximum A grade, no A+)


Grade Thresholds

Grade Min Score Position Size Risk % Auto-Trade
A+ 90 2 lots 1.5% Yes
A 80 1 lot 1.2% Yes
B 70 1 lot 1.0% No
C 60 1 lot 0.8% No
D 50 1 lot 0.5% No
F <50 1 lot 0.3% No

Example Calculation

Scenario: MTF aligned at 85%, railroad trend, near MA, R:R = 2.5, no two-day trend

STEP 1: Calculate Factor Scores
─────────────────────────────────────────────────
Factor 1 (TF Alignment):  85% × 100 = 85.0
Factor 2 (Trend):         100 - 30 (no 2-day) + 15 (railroad) = 85.0
Factor 3 (Entry):         100 + 10 (near MA) = 110 → capped at 100.0
Factor 4 (Key Level):     100.0 (near MA counts)
Factor 5 (R:R):           90.0 (R:R 2.5 is in [2.0-3.0) range)

STEP 2: Apply Weights
─────────────────────────────────────────────────
Weighted = (85×0.30) + (85×0.20) + (100×0.15) + (100×0.20) + (90×0.15)
         = 25.5 + 17.0 + 15.0 + 20.0 + 13.5
         = 91.0

STEP 3: A+ Enforcement
─────────────────────────────────────────────────
Missing two-day trend → Cap at 79.0

FINAL: Score = 79.0, Grade = A

Configuration

Parameter Default Description
timeframe_alignment_weight 0.30 30% weight
trend_strength_weight 0.20 20% weight
entry_technique_weight 0.15 15% weight
key_level_proximity_weight 0.20 20% weight
risk_reward_weight 0.15 15% weight
creeper_move_penalty -50 Creeper penalty
ma_struggle_penalty -30 MA struggle penalty
two_day_trend_penalty -30 Missing 2-day penalty
phase_mismatch_penalty -25 Wrong phase penalty
institutional_fight_multiplier 0.70 30% reduction

Output

SetupQualityResult:

Field Type Description
grade Enum A_PLUS, A, B, C, D, F
score float Final score 0-100
factor_scores Dict Individual factor scores
position_size int 1 or 2 lots
risk_percent float Risk % for this grade
can_auto_trade bool Only A+ and A
penalties_applied List Which penalties were applied
a_plus_criteria_met bool All 3 criteria met?

Dependencies

Upstream:

Downstream:


Quick Reference

Score Range Grade Action
90-100 A+ Trade with 2 lots, high confidence
80-89 A Trade with 1 lot, good confidence
70-79 B Trade with caution, 1 lot
60-69 C Consider skipping or reduce size
50-59 D Skip in live trading
<50 F Do not trade