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:

Python — Laluan harga Monte Carlo
import numpy as np
def simulate_price_paths(S0, mu, sigma, T, dt, n_sims=10000):
# S0: harga semasa, mu: drift, sigma: turun naik
# T: horizon masa (hari), dt: langkah masa, n_sims: simulasi
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

Metrik Risiko Portfolio

Value at Risk (VaR)

Kerugian yang akan anda alami dalam hanya 5% senario (keyakinan 95%):

Python — Kira VaR
def calculate_var(simulations, confidence=0.95):
pnl = simulations[:, -1] - simulations[:, 0]
var = np.percentile(pnl, (1 - confidence) * 100)
return var # contoh, -$2,340

Expected Shortfall (CVaR)

Purata kerugian dalam 5% kes terburuk:

Python — Kira CVaR
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 # contoh, -$3,800 (lebih teruk daripada VaR)

Simulasi Khusus Strategi

Simulasikan peraturan perdagangan sebenar anda, bukan hanya laluan harga:

Python — Strategi 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 # Berhenti pada kerugian 50%
results[sim] = equity
return results

Ujian Tekanan dengan Isyarat Smart Money

Model senario terburuk apabila keyakinan Smart Money menurun:

Python — Senario ujian tekanan
def stress_test_scenarios(base_win_rate):
# Senario 1: Keadaan normal (KEYAKINAN TINGGI)
scenario_normal = simulate_strategy(10000, win_rate=base_win_rate)
# Senario 2: Isyarat merosot (KEYAKINAN SEDERHANA)
scenario_medium = simulate_strategy(10000, win_rate=base_win_rate * 0.95)
# Senario 3: Keruntuhan (KEADAAN VETO)
scenario_veto = simulate_strategy(10000, win_rate=0.45) # kelebihan negatif
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:

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 →