Monte Carlo kockázatszimuláció — Portfólióeredmények modellezése

A Monte Carlo szimulációk lehetővé teszik, hogy több mint 100 000 lehetséges jövőbeli útvonalat modellezz a portfóliódnak, kvantitatív kockázati mutatókkal, mint a Value at Risk (VaR) és az expected shortfall. Egyetlen eredmény feltételezése helyett a lehetőségek eloszlását látod.

Példa: Futtass 100 ezer szimulációt a kereskedési stratégiádról. Látni fogod: 68% az eredmények közül $10-$50 nyereséget hoz, 25% veszteséget $10-$30 között, 5% veszteséget $50-$200 között, és 2% $100+ nyereséget. Most már érted a kockázati profilodat.

Alapvető geometriai Brown-mozgás (GBM)

Modellezd a jövőbeli árakat drift és volatilitású véletlen bolyongásként:

Python — Monte Carlo árútvonalak
import numpy as np
def simulate_price_paths(S0, mu, sigma, T, dt, n_sims=10000):
# S0: jelenlegi ár, mu: drift, sigma: volatilitás
# T: időhorizont (napok), dt: időlépés, n_sims: szimulációk
steps = int(T / dt)
paths = np.zeros((n_sims, steps))
paths[:, 0] = S0
for i in range(1, steps):
# dS = mu*S*dt + sigma*S*sqrt(dt)*Z
Z = np.random.normal(0, 1, n_sims)
dS = mu * paths[:, i-1] * dt + sigma * paths[:, i-1] * np.sqrt(dt) * Z
paths[:, i] = paths[:, i-1] + dS
return paths

Portfólió kockázati mutatók

Value at Risk (VaR)

Az a veszteség, amelyet csak 5% esetben haladsz meg (95% megbízhatóság):

Python — VaR számítás
def calculate_var(simulations, confidence=0.95):
pnl = simulations[:, -1] - simulations[:, 0]
var = np.percentile(pnl, (1 - confidence) * 100)
return var # pl., -$2,340

Expected Shortfall (CVaR)

Átlagos veszteség a legrosszabb 5% esetben:

Python — CVaR számítás
def calculate_cvar(simulations, confidence=0.95):
pnl = simulations[:, -1] - simulations[:, 0]
var_threshold = np.percentile(pnl, (1 - confidence) * 100)
worst_5_pct = pnl[pnl <= var_threshold]
cvar = np.mean(worst_5_pct)
return cvar # pl., -$3,800 (rosszabb, mint a VaR)

Stratégiaspecifikus szimuláció

Szimuláld a tényleges kereskedési szabályaidat, ne csak az árútvonalakat:

Python — Stratégia Monte Carlo
def simulate_strategy(capital, win_rate, avg_win, avg_loss, trades_per_day=10, days=30, n_sims=10000):
results = np.zeros(n_sims)
for sim in range(n_sims):
equity = capital
n_trades = trades_per_day * days
for _ in range(n_trades):
if np.random.rand() < win_rate:
pnl = np.random.normal(avg_win, avg_win * 0.2)
else:
pnl = -np.random.normal(avg_loss, avg_loss * 0.2)
equity += pnl
if equity < capital * 0.5:
break # Stop-out 50% veszteségnél
results[sim] = equity
return results

Stress tesztelés Smart Money jelekkel

Modellezd a legrosszabb eseteket, amikor a Smart Money megbízhatósága csökken:

Python — Stress teszt forgatókönyvek
def stress_test_scenarios(base_win_rate):
# Forgatókönyv 1: Normál körülmények (MAGAS megbízhatóság)
scenario_normal = simulate_strategy(10000, win_rate=base_win_rate)
# Forgatókönyv 2: Romló jelek (KÖZEPES megbízhatóság)
scenario_medium = simulate_strategy(10000, win_rate=base_win_rate * 0.95)
# Forgatókönyv 3: Összeomlás (VETO feltétel)
scenario_veto = simulate_strategy(10000, win_rate=0.45) # negatív előny
return {
'normal': {'var': np.percentile(scenario_normal, 5), 'mean': np.mean(scenario_normal)},
'medium': {'var': np.percentile(scenario_medium, 5), 'mean': np.mean(scenario_medium)},
'veto': {'var': np.percentile(scenario_veto, 5), 'mean': np.mean(scenario_veto)}
}

Értelmezés

10 ezer szimulációból megtudhatod:

Stress teszteld a stratégiákat Smart Money jelekkel

Értsd meg a portfólió kockázatát normál, romló és VETO Smart Money körülmények között. API-nk megadja a jeleket; a Monte Carlo modellezi az eredményeket.

Kockázati modell ma →