Risk Management Fixes What Good Signals Can't in Python Trading Bots
Retail traders love building algos. You code up RSI crossovers or mean reversion on BTC. Backtest shows 60% win rate. Feels invincible. Then live trading hits: one fat tail move and your account is dust.
Signals get you entries. Risk management keeps the lights on. Ignore it, and even edge-positive strategies compound to zero. Market Masters AI runs 45+ tools across crypto, stocks, futures. Its conviction scores (-100 to +100) come from 15 indicators. But Orion, the AI assistant, always asks: what's your position size? Drawdown limit?
This post covers three rules I enforce in every bot. Python code included. No theory dumps. Just copy-paste setups that survive 2022-style crashes.
Kelly Criterion: Bet What Math Allows
Fixed fractional sizing (2% risk per trade) works until volatility spikes. Kelly finds the optimal f: fraction of capital to risk for max geometric growth.
Formula: f = (p * (b + 1) - 1) / b, where p=win prob, b=avg win/avg loss.
Assume you backtested: 55% win rate, avg win 1.5R, avg loss 1R. Then f = (0.55*(1.5+1)-1)/1.5 = 0.22. Risk 22%? No. Half-Kelly (11%) for safety.
def kelly_criterion(win_prob, avg_win, avg_loss):
odds = avg_win / avg_loss
kelly_pct = (win_prob * (odds + 1) - 1) / odds
return max(0, kelly_pct / 2) # Half-Kelly
# Example
win_prob = 0.55
avg_win = 1.5
avg_loss = 1.0
size_pct = kelly_criterion(win_prob, avg_win, avg_loss)
print(f"Position size: {size_pct:.1%}") # 11.0%
Tune from your backtest stats. Market Masters paper trader logs these for you ($10K sim capital, 125x leverage).
Volatility Position Sizing: ATR Scales It
Fixed % ignores vol. BTC at $20k vol differs from $100k. Use ATR (Average True Range) for dynamic size.
Risk 1% capital, position size = (capital * 0.01) / (ATR * stop_distance_multiplier).
import pandas as pd
import numpy as np
def atr_position_size(capital, atr, stop_loss_pct=0.02):
risk_per_trade = capital * 0.01
stop_distance = atr * stop_loss_pct
size = risk_per_trade / stop_distance
return min(size, capital * 0.1) # Cap at 10%
# Sample data
prices = pd.Series([100, 102, 99, 105, 98])
high_low = pd.Series([102, 103, 101, 106, 99])
low_close = pd.Series([99, 100, 98, 103, 97])
tr = np.maximum(high_low - low_close, np.maximum(abs(high_low - prices.shift()), abs(low_close - prices.shift())))
atr = tr.rolling(14).mean().iloc[-1]
capital = 10000
size = atr_position_size(capital, atr)
print(f"Shares to buy: {size:.0f}")
Market Masters chart patterns (16+ types) pair with this: confidence score >70 triggers entry, ATR sizes it.
Drawdown Circuit Breakers: Stop Before Ruin
Max drawdown 20%. Hit it, pause trading 7 days. Code a peak tracker.
class DrawdownBreaker:
def __init__(self, max_dd_pct=0.20):
self.peak = 0
self.max_dd = max_dd_pct
def check(self, equity):
if equity > self.peak:
self.peak = equity
dd = (self.peak - equity) / self.peak
if dd > self.max_dd:
return False, f"Halt: {dd:.1%} drawdown"
return True, None
breaker = DrawdownBreaker()
equity_curve = [10000, 10500, 9800, 9200]
for eq in equity_curve:
ok, msg = breaker.check(eq)
if not ok:
print(msg)
break
Orion enforces this in portfolio mode: risk profiles auto-adjust.
Put It Together: Sample Bot Snippet
class RiskManagedTrader:
def __init__(self, capital):
self.capital = capital
self.breaker = DrawdownBreaker()
self.win_prob, self.avg_win, self.avg_loss = 0.55, 1.5, 1.0
def size_trade(self, atr):
kelly = kelly_criterion(self.win_prob, self.avg_win, self.avg_loss)
vol_size = atr_position_size(self.capital, atr)
return min(kelly * self.capital, vol_size)
def execute(self, signal, atr):
if not self.breaker.check(self.capital)[0]:
return "Halted"
size = self.size_trade(atr)
print(f"Buy {size} units")
return size
trader = RiskManagedTrader(10000)
Test on 2022 BTC drawdown. Fixed 2% blows up. This survives.
Why Bots Die Without This
I ran 50+ strategies on Market Masters data. Winners shared risk rules. Losers chased signals. Crypto liquidation heatmaps show it: overleveraged positions cluster at round stops.
Takeaway
Code signals last. Risk first. Start with Kelly/ATR/drawdown. Backtest ruthlessly. Market Masters free tier screens 2500+ coins real-time. Orion spits setups with sizes. Paper trade first.
Build better. Trade safer.
Try Market Masters AI free - 30-day Premium trial, no card needed.
Top comments (0)