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