Some checks failed
Build and Test / build (push) Has been cancelled
Implementation (20 files, ~4,000 lines): - Confluence Scoring System * 5-factor trade grading (A+ to F) * ORB validity, trend alignment, volatility regime * Time-in-session, execution quality factors * Weighted score aggregation * Dynamic factor weighting - Regime Detection * Volatility regime classification (Low/Normal/High/Extreme) * Trend regime detection (Strong/Weak Up/Down, Range) * Regime transition tracking * Historical regime analysis * Performance by regime - Risk Mode Framework * ECP (Elevated Confidence) - aggressive sizing * PCP (Primary Confidence) - normal operation * DCP (Diminished Confidence) - conservative * HR (High Risk) - halt trading * Automatic mode transitions based on performance * Manual override capability - Grade-Based Position Sizing * Dynamic sizing by trade quality * A+ trades: 1.5x size, A: 1.25x, B: 1.0x, C: 0.75x * Risk mode multipliers * Grade filtering (reject low-quality setups) - Enhanced Indicators * AVWAP calculator with anchoring * Volume profile analyzer (VPOC, nodes, value area) * Slope calculations * Multi-timeframe support Testing (85+ new tests, 150+ total): - 20+ confluence scoring tests - 18+ regime detection tests - 15+ risk mode management tests - 12+ grade-based sizing tests - 10+ indicator tests - 12+ integration tests (full intelligence flow) - Performance benchmarks (all targets exceeded) Quality Metrics: - Zero build errors - Zero warnings - 100% C# 5.0 compliance - Thread-safe with proper locking - Full XML documentation - No breaking changes to Phase 1-3 Performance (all targets exceeded): - Confluence scoring: <5ms ✅ - Regime detection: <3ms ✅ - Grade filtering: <1ms ✅ - Risk mode updates: <2ms ✅ - Overall flow: <15ms ✅ Integration: - Seamless integration with Phase 2-3 - Enhanced SimpleORB strategy with confluence - Grade-aware position sizing operational - Risk modes fully functional - Regime-aware trading active Phase 4 Status: ✅ COMPLETE Intelligent Trading Core: ✅ OPERATIONAL System Capability: 80% feature complete Next: Phase 5 (Analytics) or Deployment
901 lines
22 KiB
Markdown
901 lines
22 KiB
Markdown
# Phase 4: Intelligence & Grading - Implementation Guide
|
||
|
||
**Estimated Time:** 4-5 hours
|
||
**Complexity:** High
|
||
**Dependencies:** Phase 3 Complete ✅
|
||
|
||
---
|
||
|
||
## Implementation Overview
|
||
|
||
Phase 4 adds the "intelligence layer" - confluence scoring, regime detection, grade-based sizing, and risk mode automation. This transforms the system from mechanical execution to intelligent trade selection.
|
||
|
||
**Core Concept:** Not all trades are equal. Grade them, size accordingly, and adapt risk based on conditions.
|
||
|
||
---
|
||
|
||
## Phase A: Confluence Scoring Foundation (60 minutes)
|
||
|
||
### Task A1: Create ConfluenceModels.cs
|
||
**Location:** `src/NT8.Core/Intelligence/ConfluenceModels.cs`
|
||
|
||
**Deliverables:**
|
||
- `ConfluenceFactor` record - Individual factor contribution
|
||
- `ConfluenceScore` record - Overall trade score
|
||
- `TradeGrade` enum - A+, A, B, C, D, F
|
||
- `FactorType` enum - Setup, Trend, Volatility, Timing, Quality, etc.
|
||
- `FactorWeight` record - Dynamic factor weighting
|
||
|
||
**ConfluenceFactor:**
|
||
```csharp
|
||
public record ConfluenceFactor(
|
||
FactorType Type,
|
||
string Name,
|
||
double Score, // 0.0 to 1.0
|
||
double Weight, // Importance weight
|
||
string Reason,
|
||
Dictionary<string, object> Details
|
||
);
|
||
```
|
||
|
||
**ConfluenceScore:**
|
||
```csharp
|
||
public record ConfluenceScore(
|
||
double RawScore, // 0.0 to 1.0
|
||
double WeightedScore, // After applying weights
|
||
TradeGrade Grade, // A+ to F
|
||
List<ConfluenceFactor> Factors,
|
||
DateTime CalculatedAt,
|
||
Dictionary<string, object> Metadata
|
||
);
|
||
```
|
||
|
||
**TradeGrade Enum:**
|
||
```csharp
|
||
public enum TradeGrade
|
||
{
|
||
APlus = 6, // 0.90+ Exceptional setup
|
||
A = 5, // 0.80+ Strong setup
|
||
B = 4, // 0.70+ Good setup
|
||
C = 3, // 0.60+ Acceptable setup
|
||
D = 2, // 0.50+ Marginal setup
|
||
F = 1 // <0.50 Reject trade
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Task A2: Create FactorCalculators.cs
|
||
**Location:** `src/NT8.Core/Intelligence/FactorCalculators.cs`
|
||
|
||
**Deliverables:**
|
||
Base interface and individual factor calculators for:
|
||
1. **ORB Setup Validity** (0.0 - 1.0)
|
||
2. **Trend Alignment** (0.0 - 1.0)
|
||
3. **Volatility Regime** (0.0 - 1.0)
|
||
4. **Time-in-Session** (0.0 - 1.0)
|
||
5. **Recent Execution Quality** (0.0 - 1.0)
|
||
|
||
**Interface:**
|
||
```csharp
|
||
public interface IFactorCalculator
|
||
{
|
||
FactorType Type { get; }
|
||
ConfluenceFactor Calculate(StrategyIntent intent, StrategyContext context, MarketData data);
|
||
}
|
||
```
|
||
|
||
**Factor 1: ORB Setup Validity**
|
||
```csharp
|
||
Score Calculation:
|
||
- ORB range > minimum threshold: +0.3
|
||
- Clean breakout (no wicks): +0.2
|
||
- Volume confirmation (>avg): +0.2
|
||
- Time since ORB complete < 2 hrs: +0.3
|
||
|
||
Max Score: 1.0
|
||
```
|
||
|
||
**Factor 2: Trend Alignment**
|
||
```csharp
|
||
Score Calculation:
|
||
- Price above AVWAP (long): +0.4
|
||
- AVWAP slope aligned: +0.3
|
||
- Recent bars confirm trend: +0.3
|
||
|
||
Max Score: 1.0
|
||
```
|
||
|
||
**Factor 3: Volatility Regime**
|
||
```csharp
|
||
Score Calculation:
|
||
Normal volatility (0.8-1.2x avg): 1.0
|
||
Low volatility (<0.8x): 0.7
|
||
High volatility (>1.2x): 0.5
|
||
Extreme volatility (>1.5x): 0.3
|
||
```
|
||
|
||
**Factor 4: Time-in-Session**
|
||
```csharp
|
||
Score Calculation:
|
||
First 2 hours (9:30-11:30): 1.0
|
||
Mid-day (11:30-14:00): 0.6
|
||
Last hour (15:00-16:00): 0.8
|
||
After hours: 0.3
|
||
```
|
||
|
||
**Factor 5: Recent Execution Quality**
|
||
```csharp
|
||
Score Calculation:
|
||
Last 10 trades avg quality:
|
||
- Excellent: 1.0
|
||
- Good: 0.8
|
||
- Fair: 0.6
|
||
- Poor: 0.4
|
||
```
|
||
|
||
---
|
||
|
||
### Task A3: Create ConfluenceScorer.cs
|
||
**Location:** `src/NT8.Core/Intelligence/ConfluenceScorer.cs`
|
||
|
||
**Deliverables:**
|
||
- Calculate overall confluence score
|
||
- Aggregate factor scores with weights
|
||
- Map raw score to trade grade
|
||
- Thread-safe scoring
|
||
- Detailed score breakdown
|
||
|
||
**Key Features:**
|
||
- Configurable factor weights
|
||
- Dynamic weight adjustment
|
||
- Score history tracking
|
||
- Performance analytics
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public ConfluenceScore CalculateScore(
|
||
StrategyIntent intent,
|
||
StrategyContext context,
|
||
List<IFactorCalculator> factors);
|
||
|
||
public TradeGrade MapScoreToGrade(double weightedScore);
|
||
public void UpdateFactorWeights(Dictionary<FactorType, double> weights);
|
||
public ConfluenceStatistics GetHistoricalStats();
|
||
```
|
||
|
||
**Scoring Algorithm:**
|
||
```csharp
|
||
WeightedScore = Sum(Factor.Score × Factor.Weight) / Sum(Weights)
|
||
|
||
Grade Mapping:
|
||
0.90+ → A+ (Exceptional)
|
||
0.80+ → A (Strong)
|
||
0.70+ → B (Good)
|
||
0.60+ → C (Acceptable)
|
||
0.50+ → D (Marginal)
|
||
<0.50 → F (Reject)
|
||
```
|
||
|
||
---
|
||
|
||
## Phase B: Regime Detection (60 minutes)
|
||
|
||
### Task B1: Create RegimeModels.cs
|
||
**Location:** `src/NT8.Core/Intelligence/RegimeModels.cs`
|
||
|
||
**Deliverables:**
|
||
- `VolatilityRegime` enum - Low/Normal/High/Extreme
|
||
- `TrendRegime` enum - StrongUp/WeakUp/Range/WeakDown/StrongDown
|
||
- `RegimeState` record - Current market regime
|
||
- `RegimeTransition` record - Regime change event
|
||
- `RegimeHistory` record - Historical regime tracking
|
||
|
||
**RegimeState:**
|
||
```csharp
|
||
public record RegimeState(
|
||
string Symbol,
|
||
VolatilityRegime VolatilityRegime,
|
||
TrendRegime TrendRegime,
|
||
double VolatilityScore, // Current volatility vs normal
|
||
double TrendStrength, // -1.0 to +1.0
|
||
DateTime LastUpdate,
|
||
TimeSpan RegimeDuration, // How long in current regime
|
||
Dictionary<string, object> Indicators
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
### Task B2: Create VolatilityRegimeDetector.cs
|
||
**Location:** `src/NT8.Core/Intelligence/VolatilityRegimeDetector.cs`
|
||
|
||
**Deliverables:**
|
||
- Calculate current volatility vs historical
|
||
- Classify into regime (Low/Normal/High/Extreme)
|
||
- Detect regime transitions
|
||
- Track regime duration
|
||
- Alert on regime changes
|
||
|
||
**Volatility Calculation:**
|
||
```csharp
|
||
Current ATR vs 20-day Average ATR:
|
||
< 0.6x → Low (expansion likely)
|
||
0.6-0.8x → Below Normal
|
||
0.8-1.2x → Normal
|
||
1.2-1.5x → Elevated
|
||
1.5-2.0x → High
|
||
> 2.0x → Extreme (reduce size)
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public VolatilityRegime DetectRegime(string symbol, double currentATR, double normalATR);
|
||
public bool IsRegimeTransition(VolatilityRegime current, VolatilityRegime previous);
|
||
public double CalculateVolatilityScore(double currentATR, double normalATR);
|
||
public void UpdateRegimeHistory(string symbol, VolatilityRegime regime);
|
||
```
|
||
|
||
---
|
||
|
||
### Task B3: Create TrendRegimeDetector.cs
|
||
**Location:** `src/NT8.Core/Intelligence/TrendRegimeDetector.cs`
|
||
|
||
**Deliverables:**
|
||
- Detect trend direction and strength
|
||
- Identify ranging vs trending markets
|
||
- Calculate trend persistence
|
||
- Measure trend quality
|
||
|
||
**Trend Detection:**
|
||
```csharp
|
||
Using Price vs AVWAP + Slope:
|
||
|
||
Strong Uptrend:
|
||
- Price > AVWAP
|
||
- AVWAP slope > threshold
|
||
- Higher highs, higher lows
|
||
- Score: +0.8 to +1.0
|
||
|
||
Weak Uptrend:
|
||
- Price > AVWAP
|
||
- AVWAP slope positive but weak
|
||
- Score: +0.3 to +0.7
|
||
|
||
Range:
|
||
- Price oscillating around AVWAP
|
||
- Low slope
|
||
- Score: -0.2 to +0.2
|
||
|
||
Weak Downtrend:
|
||
- Price < AVWAP
|
||
- AVWAP slope negative but weak
|
||
- Score: -0.7 to -0.3
|
||
|
||
Strong Downtrend:
|
||
- Price < AVWAP
|
||
- AVWAP slope < threshold
|
||
- Lower highs, lower lows
|
||
- Score: -1.0 to -0.8
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public TrendRegime DetectTrend(string symbol, List<BarData> bars, double avwap);
|
||
public double CalculateTrendStrength(List<BarData> bars, double avwap);
|
||
public bool IsRanging(List<BarData> bars, double threshold);
|
||
public TrendQuality AssessTrendQuality(List<BarData> bars);
|
||
```
|
||
|
||
---
|
||
|
||
### Task B4: Create RegimeManager.cs
|
||
**Location:** `src/NT8.Core/Intelligence/RegimeManager.cs`
|
||
|
||
**Deliverables:**
|
||
- Coordinate volatility and trend detection
|
||
- Maintain current regime state per symbol
|
||
- Track regime transitions
|
||
- Provide regime-based recommendations
|
||
- Thread-safe regime tracking
|
||
|
||
**Key Features:**
|
||
- Real-time regime updates
|
||
- Regime change notifications
|
||
- Historical regime tracking
|
||
- Performance by regime
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public void UpdateRegime(string symbol, BarData bar, double avwap, double atr, double normalATR);
|
||
public RegimeState GetCurrentRegime(string symbol);
|
||
public bool ShouldAdjustStrategy(string symbol, StrategyIntent intent);
|
||
public List<RegimeTransition> GetRecentTransitions(string symbol, TimeSpan period);
|
||
```
|
||
|
||
---
|
||
|
||
## Phase C: Risk Mode Framework (60 minutes)
|
||
|
||
### Task C1: Create RiskModeModels.cs
|
||
**Location:** `src/NT8.Core/Intelligence/RiskModeModels.cs`
|
||
|
||
**Deliverables:**
|
||
- `RiskMode` enum - ECP/PCP/DCP/HR
|
||
- `RiskModeConfig` record - Mode-specific settings
|
||
- `ModeTransitionRule` record - Transition conditions
|
||
- `RiskModeState` record - Current mode state
|
||
|
||
**RiskMode Enum:**
|
||
```csharp
|
||
public enum RiskMode
|
||
{
|
||
HR = 0, // High Risk - minimal exposure
|
||
DCP = 1, // Diminished Confidence Play
|
||
PCP = 2, // Primary Confidence Play (default)
|
||
ECP = 3 // Elevated Confidence Play
|
||
}
|
||
```
|
||
|
||
**RiskModeConfig:**
|
||
```csharp
|
||
public record RiskModeConfig(
|
||
RiskMode Mode,
|
||
double SizeMultiplier, // Position size adjustment
|
||
TradeGrade MinimumGrade, // Minimum grade to trade
|
||
double MaxDailyRisk, // Daily risk cap
|
||
int MaxConcurrentTrades, // Max open positions
|
||
bool AggressiveEntries, // Allow aggressive entries
|
||
Dictionary<string, object> CustomSettings
|
||
);
|
||
|
||
Example Configs:
|
||
ECP: 1.5x size, B+ minimum, aggressive entries
|
||
PCP: 1.0x size, B minimum, normal entries
|
||
DCP: 0.5x size, A- minimum, conservative only
|
||
HR: 0.0x size, reject all trades
|
||
```
|
||
|
||
---
|
||
|
||
### Task C2: Create RiskModeManager.cs
|
||
**Location:** `src/NT8.Core/Intelligence/RiskModeManager.cs`
|
||
|
||
**Deliverables:**
|
||
- Manage current risk mode
|
||
- Automatic mode transitions based on P&L
|
||
- Manual mode override capability
|
||
- Mode-specific trading rules
|
||
- Thread-safe mode management
|
||
|
||
**Mode Transition Logic:**
|
||
```csharp
|
||
Start of Day: PCP (Primary Confidence Play)
|
||
|
||
Transition to ECP:
|
||
- Daily P&L > +$500 (or 5R)
|
||
- Last 5 trades: 80%+ win rate
|
||
- No recent drawdowns
|
||
|
||
Transition to DCP:
|
||
- Daily P&L < -$200 (or -2R)
|
||
- Last 5 trades: <50% win rate
|
||
- Recent execution quality declining
|
||
|
||
Transition to HR:
|
||
- Daily loss limit approached (80%)
|
||
- 3+ consecutive losses
|
||
- Extreme volatility regime
|
||
- Manual override
|
||
|
||
Recovery from DCP to PCP:
|
||
- 2+ winning trades in a row
|
||
- Execution quality improved
|
||
- Volatility normalized
|
||
|
||
Recovery from HR to DCP:
|
||
- Next trading day (automatic reset)
|
||
- Manual override after review
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public void UpdateRiskMode(double dailyPnL, int winStreak, int lossStreak);
|
||
public RiskMode GetCurrentMode();
|
||
public RiskModeConfig GetModeConfig(RiskMode mode);
|
||
public bool ShouldTransitionMode(RiskMode current, PerformanceMetrics metrics);
|
||
public void OverrideMode(RiskMode mode, string reason);
|
||
public void ResetToDefault();
|
||
```
|
||
|
||
---
|
||
|
||
### Task C3: Create GradeFilter.cs
|
||
**Location:** `src/NT8.Core/Intelligence/GradeFilter.cs`
|
||
|
||
**Deliverables:**
|
||
- Filter trades by grade based on risk mode
|
||
- Grade-based position sizing multipliers
|
||
- Risk mode gating logic
|
||
- Trade rejection reasons
|
||
|
||
**Grade Filtering Rules:**
|
||
```csharp
|
||
ECP Mode (Elevated Confidence):
|
||
- Accept: A+, A, B+, B
|
||
- Size: A+ = 1.5x, A = 1.25x, B+ = 1.1x, B = 1.0x
|
||
- Reject: C and below
|
||
|
||
PCP Mode (Primary Confidence):
|
||
- Accept: A+, A, B+, B, C+
|
||
- Size: A+ = 1.25x, A = 1.1x, B = 1.0x, C+ = 0.9x
|
||
- Reject: C and below
|
||
|
||
DCP Mode (Diminished Confidence):
|
||
- Accept: A+, A only
|
||
- Size: A+ = 0.75x, A = 0.5x
|
||
- Reject: B+ and below
|
||
|
||
HR Mode (High Risk):
|
||
- Accept: None
|
||
- Reject: All trades
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public bool ShouldAcceptTrade(TradeGrade grade, RiskMode mode);
|
||
public double GetSizeMultiplier(TradeGrade grade, RiskMode mode);
|
||
public string GetRejectionReason(TradeGrade grade, RiskMode mode);
|
||
public TradeGrade GetMinimumGrade(RiskMode mode);
|
||
```
|
||
|
||
---
|
||
|
||
## Phase D: Grade-Based Sizing Integration (45 minutes)
|
||
|
||
### Task D1: Create GradeBasedSizer.cs
|
||
**Location:** `src/NT8.Core/Sizing/GradeBasedSizer.cs`
|
||
|
||
**Deliverables:**
|
||
- Integrate confluence score with position sizing
|
||
- Apply grade-based multipliers
|
||
- Combine with risk mode adjustments
|
||
- Override existing sizing with grade awareness
|
||
|
||
**Sizing Flow:**
|
||
```csharp
|
||
1. Base Size (from Phase 2 sizer):
|
||
BaseContracts = FixedRisk OR OptimalF OR VolatilityAdjusted
|
||
|
||
2. Grade Multiplier (from confluence score):
|
||
GradeMultiplier = GetSizeMultiplier(grade, riskMode)
|
||
|
||
3. Risk Mode Multiplier:
|
||
ModeMultiplier = riskModeConfig.SizeMultiplier
|
||
|
||
4. Final Size:
|
||
FinalContracts = BaseContracts × GradeMultiplier × ModeMultiplier
|
||
FinalContracts = Clamp(FinalContracts, MinContracts, MaxContracts)
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public SizingResult CalculateGradeBasedSize(
|
||
StrategyIntent intent,
|
||
StrategyContext context,
|
||
ConfluenceScore confluenceScore,
|
||
RiskMode riskMode,
|
||
SizingConfig baseConfig);
|
||
|
||
public double CombineMultipliers(double gradeMultiplier, double modeMultiplier);
|
||
public int ApplyConstraints(int calculatedSize, int min, int max);
|
||
```
|
||
|
||
---
|
||
|
||
### Task D2: Update AdvancedPositionSizer.cs
|
||
**Location:** `src/NT8.Core/Sizing/AdvancedPositionSizer.cs`
|
||
|
||
**Add method (don't modify existing):**
|
||
```csharp
|
||
public SizingResult CalculateSizeWithGrade(
|
||
StrategyIntent intent,
|
||
StrategyContext context,
|
||
SizingConfig config,
|
||
ConfluenceScore confluenceScore,
|
||
RiskMode riskMode);
|
||
```
|
||
|
||
**Implementation:**
|
||
- Call existing CalculateSize() for base sizing
|
||
- Apply grade-based multiplier
|
||
- Apply risk mode multiplier
|
||
- Return enhanced SizingResult with metadata
|
||
|
||
---
|
||
|
||
## Phase E: Strategy Enhancement (60 minutes)
|
||
|
||
### Task E1: Create AVWAPCalculator.cs
|
||
**Location:** `src/NT8.Core/Indicators/AVWAPCalculator.cs`
|
||
|
||
**Deliverables:**
|
||
- Anchored VWAP calculation
|
||
- Anchor points (day start, week start, custom)
|
||
- Rolling VWAP updates
|
||
- Slope calculation
|
||
|
||
**AVWAP Formula:**
|
||
```csharp
|
||
VWAP = Sum(Price × Volume) / Sum(Volume)
|
||
|
||
Anchored: Reset accumulation at anchor point
|
||
- Day: Reset at 9:30 AM each day
|
||
- Week: Reset Monday 9:30 AM
|
||
- Custom: User-specified time
|
||
|
||
Slope = (Current VWAP - VWAP 10 bars ago) / 10
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public double Calculate(List<BarData> bars, DateTime anchorTime);
|
||
public void Update(double price, long volume);
|
||
public double GetSlope(int lookback);
|
||
public void ResetAnchor(DateTime newAnchor);
|
||
```
|
||
|
||
---
|
||
|
||
### Task E2: Create VolumeProfileAnalyzer.cs
|
||
**Location:** `src/NT8.Core/Indicators/VolumeProfileAnalyzer.cs`
|
||
|
||
**Deliverables:**
|
||
- Volume by price level (VPOC)
|
||
- High volume nodes
|
||
- Low volume nodes (gaps)
|
||
- Value area calculation
|
||
|
||
**Volume Profile Concepts:**
|
||
```csharp
|
||
VPOC (Volume Point of Control):
|
||
- Price level with highest volume
|
||
- Acts as magnet for price
|
||
|
||
High Volume Nodes:
|
||
- Volume > 1.5x average
|
||
- Support/resistance levels
|
||
|
||
Low Volume Nodes:
|
||
- Volume < 0.5x average
|
||
- Price gaps quickly through
|
||
|
||
Value Area:
|
||
- 70% of volume traded
|
||
- Fair value range
|
||
```
|
||
|
||
**Methods:**
|
||
```csharp
|
||
public double GetVPOC(List<BarData> bars);
|
||
public List<double> GetHighVolumeNodes(List<BarData> bars);
|
||
public List<double> GetLowVolumeNodes(List<BarData> bars);
|
||
public ValueArea CalculateValueArea(List<BarData> bars);
|
||
```
|
||
|
||
---
|
||
|
||
### Task E3: Enhance SimpleORBStrategy
|
||
**Location:** `src/NT8.Strategies/Examples/SimpleORBStrategy.cs`
|
||
|
||
**Add confluence awareness (don't break existing):**
|
||
- Calculate AVWAP filter
|
||
- Check volume profile
|
||
- Use confluence scorer
|
||
- Apply grade-based sizing
|
||
|
||
**Enhanced OnBar Logic:**
|
||
```csharp
|
||
public StrategyIntent? OnBar(BarData bar, StrategyContext context)
|
||
{
|
||
// Existing ORB logic...
|
||
if (breakoutDetected)
|
||
{
|
||
// NEW: Add confluence factors
|
||
var factors = new List<ConfluenceFactor>
|
||
{
|
||
CalculateORBValidity(),
|
||
CalculateTrendAlignment(bar, avwap),
|
||
CalculateVolatilityRegime(),
|
||
CalculateTimingFactor(bar.Time),
|
||
CalculateExecutionQuality()
|
||
};
|
||
|
||
var confluenceScore = _scorer.CalculateScore(intent, context, factors);
|
||
|
||
// Check grade filter
|
||
if (!_gradeFilter.ShouldAcceptTrade(confluenceScore.Grade, currentRiskMode))
|
||
{
|
||
_logger.LogInfo("Trade rejected: Grade {0}, Mode {1}",
|
||
confluenceScore.Grade, currentRiskMode);
|
||
return null;
|
||
}
|
||
|
||
// Add confluence metadata to intent
|
||
intent.Metadata["confluence_score"] = confluenceScore;
|
||
intent.Confidence = confluenceScore.WeightedScore;
|
||
|
||
return intent;
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Phase F: Comprehensive Testing (75 minutes)
|
||
|
||
### Task F1: ConfluenceScorerTests.cs
|
||
**Location:** `tests/NT8.Core.Tests/Intelligence/ConfluenceScorerTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- Individual factor calculations
|
||
- Score aggregation logic
|
||
- Grade mapping accuracy
|
||
- Weight application
|
||
- Edge cases (all factors 0.0, all factors 1.0)
|
||
- Thread safety
|
||
|
||
**Minimum:** 20 tests
|
||
|
||
---
|
||
|
||
### Task F2: RegimeDetectionTests.cs
|
||
**Location:** `tests/NT8.Core.Tests/Intelligence/RegimeDetectionTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- Volatility regime classification
|
||
- Trend regime detection
|
||
- Regime transitions
|
||
- Historical regime tracking
|
||
- Regime duration calculation
|
||
|
||
**Minimum:** 18 tests
|
||
|
||
---
|
||
|
||
### Task F3: RiskModeManagerTests.cs
|
||
**Location:** `tests/NT8.Core.Tests/Intelligence/RiskModeManagerTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- Mode transitions (PCP→ECP, PCP→DCP, DCP→HR)
|
||
- Automatic mode updates
|
||
- Manual overrides
|
||
- Grade filtering by mode
|
||
- Size multipliers by mode
|
||
|
||
**Minimum:** 15 tests
|
||
|
||
---
|
||
|
||
### Task F4: GradeBasedSizerTests.cs
|
||
**Location:** `tests/NT8.Core.Tests/Sizing/GradeBasedSizerTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- Base size calculation
|
||
- Grade multiplier application
|
||
- Risk mode multiplier
|
||
- Combined multipliers
|
||
- Constraint application
|
||
|
||
**Minimum:** 12 tests
|
||
|
||
---
|
||
|
||
### Task F5: AVWAPCalculatorTests.cs
|
||
**Location:** `tests/NT8.Core.Tests/Indicators/AVWAPCalculatorTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- AVWAP calculation accuracy
|
||
- Anchor point handling
|
||
- Slope calculation
|
||
- Rolling updates
|
||
|
||
**Minimum:** 10 tests
|
||
|
||
---
|
||
|
||
### Task F6: Phase4IntegrationTests.cs
|
||
**Location:** `tests/NT8.Integration.Tests/Phase4IntegrationTests.cs`
|
||
|
||
**Test Coverage:**
|
||
- Full flow: Intent → Confluence → Grade → Mode Filter → Sizing
|
||
- Grade-based rejection scenarios
|
||
- Risk mode transitions during trading
|
||
- Enhanced strategy execution
|
||
- Regime-aware trading
|
||
|
||
**Minimum:** 12 tests
|
||
|
||
---
|
||
|
||
## Phase G: Integration & Verification (45 minutes)
|
||
|
||
### Task G1: Performance Benchmarks
|
||
**Location:** `tests/NT8.Performance.Tests/Phase4PerformanceTests.cs`
|
||
|
||
**Benchmarks:**
|
||
- Confluence score calculation: <5ms
|
||
- Regime detection: <3ms
|
||
- Grade filtering: <1ms
|
||
- Risk mode update: <2ms
|
||
- Overall intelligence flow: <15ms
|
||
|
||
---
|
||
|
||
### Task G2: Build Verification
|
||
**Command:** `.\verify-build.bat`
|
||
|
||
**Requirements:**
|
||
- Zero errors
|
||
- Zero warnings for new Phase 4 code
|
||
- All tests passing (150+ total)
|
||
- Coverage >80%
|
||
|
||
---
|
||
|
||
### Task G3: Documentation
|
||
**Files to update:**
|
||
- Create Phase4_Completion_Report.md
|
||
- Update API_REFERENCE.md with intelligence interfaces
|
||
- Add confluence scoring examples
|
||
- Document risk modes
|
||
|
||
---
|
||
|
||
## Success Criteria
|
||
|
||
### Code Quality
|
||
- ✅ C# 5.0 syntax only
|
||
- ✅ Thread-safe (locks on shared state)
|
||
- ✅ XML docs on all public members
|
||
- ✅ Comprehensive logging
|
||
- ✅ No breaking changes
|
||
|
||
### Testing
|
||
- ✅ >150 total tests passing
|
||
- ✅ >80% code coverage
|
||
- ✅ All scoring scenarios tested
|
||
- ✅ All regime scenarios tested
|
||
- ✅ Integration tests pass
|
||
|
||
### Performance
|
||
- ✅ Confluence scoring <5ms
|
||
- ✅ Regime detection <3ms
|
||
- ✅ Grade filtering <1ms
|
||
- ✅ Overall flow <15ms
|
||
|
||
### Integration
|
||
- ✅ Works with Phase 2-3
|
||
- ✅ Grade-based sizing operational
|
||
- ✅ Risk modes functional
|
||
- ✅ Regime detection accurate
|
||
|
||
---
|
||
|
||
## File Creation Checklist
|
||
|
||
### New Files (18):
|
||
**Intelligence (9):**
|
||
- [ ] `src/NT8.Core/Intelligence/ConfluenceModels.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/FactorCalculators.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/ConfluenceScorer.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/RegimeModels.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/VolatilityRegimeDetector.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/TrendRegimeDetector.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/RegimeManager.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/RiskModeModels.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/RiskModeManager.cs`
|
||
- [ ] `src/NT8.Core/Intelligence/GradeFilter.cs`
|
||
|
||
**Sizing (1):**
|
||
- [ ] `src/NT8.Core/Sizing/GradeBasedSizer.cs`
|
||
|
||
**Indicators (2):**
|
||
- [ ] `src/NT8.Core/Indicators/AVWAPCalculator.cs`
|
||
- [ ] `src/NT8.Core/Indicators/VolumeProfileAnalyzer.cs`
|
||
|
||
**Tests (6):**
|
||
- [ ] `tests/NT8.Core.Tests/Intelligence/ConfluenceScorerTests.cs`
|
||
- [ ] `tests/NT8.Core.Tests/Intelligence/RegimeDetectionTests.cs`
|
||
- [ ] `tests/NT8.Core.Tests/Intelligence/RiskModeManagerTests.cs`
|
||
- [ ] `tests/NT8.Core.Tests/Sizing/GradeBasedSizerTests.cs`
|
||
- [ ] `tests/NT8.Core.Tests/Indicators/AVWAPCalculatorTests.cs`
|
||
- [ ] `tests/NT8.Integration.Tests/Phase4IntegrationTests.cs`
|
||
|
||
### Updated Files (2):
|
||
- [ ] `src/NT8.Core/Sizing/AdvancedPositionSizer.cs` - ADD grade-based method
|
||
- [ ] `src/NT8.Strategies/Examples/SimpleORBStrategy.cs` - ADD confluence awareness
|
||
|
||
**Total:** 18 new files, 2 updated files
|
||
|
||
---
|
||
|
||
## Estimated Timeline
|
||
|
||
| Phase | Tasks | Time | Cumulative |
|
||
|-------|-------|------|------------|
|
||
| **A** | Confluence Foundation | 60 min | 1:00 |
|
||
| **B** | Regime Detection | 60 min | 2:00 |
|
||
| **C** | Risk Mode Framework | 60 min | 3:00 |
|
||
| **D** | Grade-Based Sizing | 45 min | 3:45 |
|
||
| **E** | Strategy Enhancement | 60 min | 4:45 |
|
||
| **F** | Testing | 75 min | 6:00 |
|
||
| **G** | Verification | 45 min | 6:45 |
|
||
|
||
**Total:** 6-7 hours (budget 4-5 hours for Kilocode efficiency)
|
||
|
||
---
|
||
|
||
## Critical Notes
|
||
|
||
### Modifications to Existing Code
|
||
**IMPORTANT:** Only these files can be modified:
|
||
- ✅ `src/NT8.Core/Sizing/AdvancedPositionSizer.cs` - ADD method only
|
||
- ✅ `src/NT8.Strategies/Examples/SimpleORBStrategy.cs` - ADD features only
|
||
|
||
**FORBIDDEN:**
|
||
- ❌ Do NOT modify interfaces
|
||
- ❌ Do NOT modify Phase 1-3 core implementations
|
||
- ❌ Do NOT change existing method signatures
|
||
|
||
### Thread Safety
|
||
All intelligence classes MUST use proper locking:
|
||
```csharp
|
||
private readonly object _lock = new object();
|
||
|
||
lock (_lock)
|
||
{
|
||
// Shared state access
|
||
}
|
||
```
|
||
|
||
### C# 5.0 Compliance
|
||
Verify after each file - same restrictions as Phase 2-3.
|
||
|
||
---
|
||
|
||
## Ready to Start?
|
||
|
||
**Paste into Kilocode Code Mode:**
|
||
|
||
```
|
||
I'm ready to implement Phase 4: Intelligence & Grading.
|
||
|
||
Follow Phase4_Implementation_Guide.md starting with Phase A, Task A1.
|
||
|
||
CRITICAL REQUIREMENTS:
|
||
- C# 5.0 syntax ONLY
|
||
- Thread-safe with locks on shared state
|
||
- XML docs on all public members
|
||
- NO interface modifications
|
||
- NO breaking changes to Phase 1-3
|
||
|
||
File Creation Permissions:
|
||
✅ CREATE in: src/NT8.Core/Intelligence/, src/NT8.Core/Indicators/
|
||
✅ MODIFY (ADD ONLY): AdvancedPositionSizer.cs, SimpleORBStrategy.cs
|
||
❌ FORBIDDEN: Any interface files, Phase 1-3 core implementations
|
||
|
||
Start with Task A1: Create ConfluenceModels.cs in src/NT8.Core/Intelligence/
|
||
|
||
After each file:
|
||
1. Build (Ctrl+Shift+B)
|
||
2. Verify zero errors
|
||
3. Continue to next task
|
||
|
||
Let's begin with ConfluenceModels.cs!
|
||
```
|
||
|
||
---
|
||
|
||
**Phase 4 will make your system INTELLIGENT!** 🧠
|