Simulasi Risiko Monte Carlo — Pemodelan Hasil Portfolio
Simulasi Monte Carlo membolehkan anda memodelkan lebih daripada 100,000 laluan masa depan portfolio anda, mengukur metrik risiko seperti Value at Risk (VaR) dan kerugian yang dijangkakan. Daripada menganggap satu hasil, anda melihat taburan kemungkinan.
Contoh: Jalankan 100k simulasi strategi perdagangan anda. Anda akan melihat: 68% hasil memperoleh keuntungan $10-$50, 25% rugi $10-$30, 5% rugi $50-$200, dan 2% memperoleh keuntungan $100+. Sekarang anda memahami profil risiko anda.
Gerakan Brownian Geometri Asas (GBM)
Model harga masa depan sebagai perjalanan rawak dengan drift dan turun naik:
import numpy as np
def simulate_price_paths(S0, mu, sigma, T, dt, n_sims=10000):
steps = int(T / dt)
paths = np.zeros((n_sims, steps))
paths[:, 0] = S0
for i in range(1, steps):
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
Metrik Risiko Portfolio
Value at Risk (VaR)
Kerugian yang akan anda alami dalam hanya 5% senario (keyakinan 95%):
def calculate_var(simulations, confidence=0.95):
pnl = simulations[:, -1] - simulations[:, 0]
var = np.percentile(pnl, (1 - confidence) * 100)
return var
Expected Shortfall (CVaR)
Purata kerugian dalam 5% kes terburuk:
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
Simulasi Khusus Strategi
Simulasikan peraturan perdagangan sebenar anda, bukan hanya laluan harga:
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
results[sim] = equity
return results
Ujian Tekanan dengan Isyarat Smart Money
Model senario terburuk apabila keyakinan Smart Money menurun:
def stress_test_scenarios(base_win_rate):
scenario_normal = simulate_strategy(10000, win_rate=base_win_rate)
scenario_medium = simulate_strategy(10000, win_rate=base_win_rate * 0.95)
scenario_veto = simulate_strategy(10000, win_rate=0.45)
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)}
}
Interpretasi
Daripada 10k simulasi, anda belajar:
- Hasil median (persentil ke-50)
- Kes terbaik (persentil ke-95)
- Kes terburuk (persentil ke-5)
- Kebarangkalian keruntuhan (ekuiti < 0)
- Panjang penarikan yang dijangkakan
Uji tekanan strategi dengan isyarat Smart Money
Fahami risiko portfolio dalam keadaan Smart Money normal, merosot, dan VETO. API kami memberikan anda isyarat; Monte Carlo memodelkan hasilnya.
Model Risiko Hari Ini →