Level 3 — ProductionTrading Psychology

Trading Psychology

45 minutes60 marksprintable — key stays hidden on paper

Chapter: 4.8 Trading Psychology Level: 3 — Production (from-scratch derivations, code-from-memory, explain-out-loud) Time limit: 45 minutes Total marks: 60

Instructions: Show all working. Where calculations are asked, derive from first principles. For "explain-out-loud" prompts, write as if teaching a peer.


Question 1 — Discipline, Process & Expectancy (12 marks)

A trader follows a written plan with a fixed setup. Over 50 journaled trades: 20 wins averaging +300each,30lossesaveraging300 each, 30 losses averaging −150 each.

(a) Derive the win rate, average win/loss ratio (R), and per-trade expectancy from first principles. State each formula before substituting. (6)

(b) Compute total expected profit over 50 trades and confirm it matches the actual net P&L. (3)

(c) Explain out loud why a process-over-outcome focus (4.8.10) means this trader should keep trading the setup even after a 6-trade losing streak. Reference expectancy in your answer. (3)


Question 2 — Fear, Greed & FOMO (10 marks)

(a) Derive, from scratch, a simple position-sizing formula that risks a fixed 1% of a 40,000accountpertrade,givenastoplossdistanceof40,000 account per trade, given a stop-loss distance of 2 per share. Show the formula, then compute the share quantity. (5)

(b) Explain out loud how this fixed-risk rule mechanically neutralises both greed (4.8.2) and FOMO (4.8.3) at trade entry. (5)


Question 3 — Revenge Trading & Tilt (Code from memory) (12 marks)

Write, from memory, pseudocode (or Python) for a "circuit breaker" that prevents revenge trading (4.8.4) and tilt (4.8.5). It must:

  • Track consecutive losses,
  • Lock out trading after 3 consecutive losses OR after daily loss exceeds 3% of account,
  • Reset the streak on a win,
  • Print a lockout message.

(8) for correct logic/structure; (4) for explaining out loud which lines address tilt vs revenge trading.


Question 4 — Backtesting vs Paper Trading (10 marks)

(a) Derive the profit factor metric from scratch and compute it for a backtest with gross profits 8,000andgrosslosses8,000 and gross losses 5,000. State the pass/fail threshold you'd use. (4)

(b) Explain out loud three ways a clean backtest (4.8.8) can still fail in live trading, and how paper/demo trading (4.8.9) catches a subset of these. (6)


Question 5 — Losing Streaks & Drawdown (10 marks)

An account starts at $50,000 and suffers 5 consecutive 4% losses.

(a) Derive the compounding drawdown formula and compute the balance after 5 losses. (4)

(b) Compute the percentage gain now required to return to $50,000, and explain out loud why this asymmetry (4.8.11) justifies strict risk limits. (4)

(c) State one journal (4.8.7) field that would help diagnose whether the streak is variance or a broken strategy. (2)


Question 6 — Pre-Market Routine (6 marks)

Design, from memory, a 6-step pre-market routine (4.8.12) and a 3-item post-market review checklist. Beside each item, name the psychological failure it prevents. (6)


Answer keyMark scheme & solutions

Q1 (12 marks)

(a) Formulas + substitution:

  • Win rate W=winstotal=2050=0.40W = \frac{\text{wins}}{\text{total}} = \frac{20}{50} = 0.40 (40%). (1 formula + 1 value)
  • R = average win / average loss =300150=2.0= \frac{300}{150} = 2.0. (1 + 1)
  • Expectancy E=(W×Wˉ)(L×Lˉ)E = (W \times \bar{W}) - (L \times \bar{L}) where L=1W=0.60L = 1-W = 0.60. E = (0.40 \times 300) - (0.60 \times 150) = 120 - 90 = +\30$ per trade. (1 + 1)

(b) Total = 50 \times 30 = \1{,}500.Checkviaactuals:. Check via actuals: 20\times300 - 30\times150 = 6000 - 4500 = $1{,}500$. Match ✓. (3)

(c) Expectancy is positive (+$30/trade), so over a large sample the setup makes money. A 6-loss streak is variance, not evidence the edge is gone. Process focus (4.8.10) means judging decisions by whether they followed the plan, not by individual outcomes; abandoning a +EV system after normal variance destroys the edge. (3)


Q2 (10 marks)

(a) Risk per trade = 1\% \times 40000 = \400.(1)Formula:. **(1)** Formula: \text{Shares} = \frac{\text{Risk$}}{\text{Stop distance}}.(2). **(2)** = \frac{400}{2} = 200$ shares. (2)

(b) Greed pushes for oversized positions to "win big"; a fixed 1% rule caps position size mechanically regardless of conviction, so a greed impulse cannot enlarge risk. FOMO drives chasing untested entries; because size is derived from the pre-defined stop, a chased entry with a far/undefined stop yields a tiny share count, removing the incentive to chase. Rule replaces emotion with arithmetic. (5, ~2.5 each concept)


Q3 (12 marks)

Model answer:

class CircuitBreaker:
    def __init__(self, account):
        self.account = account
        self.consec_losses = 0
        self.daily_loss = 0.0
        self.locked = False
 
    def record_trade(self, pnl):
        if pnl < 0:
            self.consec_losses += 1          # tilt / revenge trigger
            self.daily_loss += -pnl
        else:
            self.consec_losses = 0           # reset on win
 
        if (self.consec_losses >= 3 or
                self.daily_loss > 0.03 * self.account):
            self.locked = True
            print("LOCKED OUT: stop trading for today.")
 
    def can_trade(self):
        return not self.locked

Marking: streak tracking (2), daily-loss cap at 3% (2), reset on win (2), lockout print/flag (2). (8)

Explain-out-loud (4): the consec_losses >= 3 branch addresses revenge trading — it stops the trader from firing off more trades to "win back" losses. The daily_loss > 3% branch and the hard locked flag address tilt — it removes decision-making capacity while emotionally compromised, enforcing a cool-off regardless of intent. (4)


Q4 (10 marks)

(a) Profit factor PF=gross profitgross loss=80005000=1.6PF = \frac{\text{gross profit}}{\text{gross loss}} = \frac{8000}{5000} = 1.6. (2 formula + 1 value) Threshold: PF>1PF > 1 is required to be profitable; a robust live-ready system typically wants PF1.5PF \gtrsim 1.5. So 1.6 passes. (1)

(b) Three failure modes (2 each):

  1. Overfitting/curve-fitting — parameters tuned to historical noise; demo trading on unseen live data exposes this.
  2. Slippage & fees not modelled — backtest fills are idealised; paper trading shows realistic fills/latency.
  3. Execution & psychology — backtest has no hesitation, no fat-fingers, no emotional deviation; demo trading reveals whether the trader can actually pull the trigger. (Paper trading catches slippage/execution/psychology but not overfitting, since it still uses the same fitted rules.) (6)

Q5 (10 marks)

(a) Compounding: B=B0(1r)n=50000×(0.96)5B = B_0 (1-r)^n = 50000 \times (0.96)^5. (2) (0.96)5=0.8154(0.96)^5 = 0.8154; B = 50000 \times 0.8154 = \40{,}769.03$. (2)

(b) Loss fraction =10.8154=0.1846= 1 - 0.8154 = 0.1846. Required gain =B0BB=5000040769.0340769.03=0.2264=22.64%= \frac{B_0 - B}{B} = \frac{50000-40769.03}{40769.03} = 0.2264 = 22.64\%. (2) Asymmetry: an 18.5% loss needs a 22.6% gain to recover — losses compound harder than gains recover, so capping per-trade risk (4.8.11) prevents drawdowns from becoming mathematically hard to climb out of. (2)

(c) Any of: "setup / rule-adherence tag", or "R-multiple per trade" — comparing actual win rate & R over the streak against the tested expectancy tells you if results are within normal variance (keep going) or the edge has degraded (stop/revise). (2)


Q6 (6 marks)

Award 0.5 per routine item, 0.5 per named failure prevented (12 half-marks ≈ 6).

Pre-market (6 steps): (1) Check overnight news → prevents blind entries/surprise; (2) Mark key levels → prevents impulsive, unplanned trades; (3) Define risk budget & max daily loss → prevents tilt/revenge; (4) Review trading plan/watchlist → prevents FOMO chasing; (5) Emotional/state check-in → prevents trading on tilt; (6) Set alerts, no manual staring → prevents greed/overtrading.

Post-market (3): (1) Log every trade with reason → journal discipline; (2) Score rule-adherence (process, not P&L) → process-over-outcome; (3) Note one improvement → prevents repeated mistakes / builds consistency.


[
  {"claim":"Q1 expectancy per trade is $30", "code":"W=Rational(20,50); aw=300; al=150; E=(W*aw)-((1-W)*al); result=(E==30)"},
  {"claim":"Q1 total profit over 50 trades is $1500", "code":"total=20*300-30*150; result=(total==1500)"},
  {"claim":"Q2 position size is 200 shares", "code":"risk=Rational(1,100)*40000; shares=risk/2; result=(shares==200)"},
  {"claim":"Q4 profit factor is 1.6", "code":"pf=Rational(8000,5000); result=(pf==Rational(8,5))"},
  {"claim":"Q5 balance after 5 losses approx 40769.03", "code":"B=50000*(Rational(96,100))**5; result=(abs(float(B)-40769.03)<0.5)"},
  {"claim":"Q5 required recovery gain approx 22.64%", "code":"B=50000*(Rational(96,100))**5; g=(50000-B)/B; result=(abs(float(g)-0.2264)<0.001)"}
]