15.0 Trader PnL Drift Risk Cluster - ravkorsurv/kor-ai-core GitHub Wiki
15.0 Trader PnL Drift Risk Cluster
📌 Purpose
This node cluster models the risk drift effect observed in traders with high unrealized or realized profits. It incorporates behavioral insights from experienced traders — specifically:
"No one questions when a trader is up a lot — only when they're down or change behavior. But traders up big often take more risk, knowing they're not being watched."
This typology is currently under-surveilled by most traditional rule-based systems and presents a critical gap that Kor.ai aims to fill.
🧩 Core Node
Q22_HighPnLDriftRisk
Attribute | Description |
---|---|
Type | Latent / Derived |
States | Elevated / Moderate / Low / None |
Purpose | Captures drift in behavior from traders significantly up on PnL, indicating possible shift in strategy, aggression, or disregard for controls |
Feeds into | Q10_IntentLikelihood , Q33_TradePatternRisk , Q55_AlertActivationNode |
🧱 Parent Inputs
Node / Variable | Description | States / Format |
---|---|---|
CumulativePnL |
Rolling realized + unrealized PnL over month or quarter | Numeric (£) |
PnLVolatility |
Historical PnL standard deviation (e.g. 90d trailing) | Numeric (ratio) |
BehavioralChangeFlag |
Binary indicator of strategic pattern change (e.g. product, size, venue) | True / False |
🔁 Fallback Logic
Used when full CPT not available, or data is partial.
def compute_high_pnl_drift_risk(cumulative_pnl, pnl_volatility, behavioral_shift_flag):
score = 0
# Step 1: Absolute PnL contribution
if cumulative_pnl > 10_000_000:
score += 2
elif cumulative_pnl > 5_000_000:
score += 1
# Step 2: Volatility filter
if pnl_volatility < 0.15:
score += 1 # Suggests consistent accumulation
# Step 3: Change in behavior (venue, strategy, size)
if behavioral_shift_flag:
score += 2
# Step 4: Map to probability vector
if score >= 4:
return [0.7, 0.2, 0.1, 0.0] # Elevated
elif score >= 2:
return [0.2, 0.5, 0.2, 0.1] # Moderate
else:
return [0.0, 0.1, 0.4, 0.5] # Low / None
📊 Example Output
Inputs:
CumulativePnL = £12M
PnLVolatility = 0.12
BehavioralChangeFlag = True
→ Score = 2 (PnL) + 1 (Vol) + 2 (Behavior) = 5 → Output:
P(Elevated) = 70%
P(Moderate) = 20%
P(Low) = 10%
P(None) = 0%
🧠 Commentary
This node captures a key behavioral surveillance gap:
-
Traders making extreme profits are not risk-neutral
-
High profits create a "house money" bias
-
This cluster allows Kor.ai to generate alerts even in profitable accounts, when drift is suspected
-
It aligns directly with MAR, CFTC, and FCA expectations around: Front-running, layering, cornering, and momentum ignition especially when fueled by profit-induced overconfidence
🔜 Future Enhancements
-
Add Q23_PositionSizeJump as a child to model size escalation
-
Feed into Q60_DeskRiskRollup to assess desk-wide behavior
-
Link to Q19_HRIncentiveAlignment to compare against comp targets