การจำลองความเสี่ยงแบบมอนติคาร์โล — การสร้างแบบจำลองผลลัพธ์พอร์ตโฟลิโอ

การจำลองแบบมอนติคาร์โลช่วยให้คุณสร้างแบบจำลองเส้นทางในอนาคตของพอร์ตโฟลิโอได้มากกว่า 100,000 แบบ เพื่อวัดค่าความเสี่ยงเช่น Value at Risk (VaR) และ expected shortfall แทนที่จะสมมติผลลัพธ์เดียว คุณจะเห็นการกระจายตัวของความเป็นไปได้ทั้งหมด

ตัวอย่าง: รันการจำลอง 100k ครั้งของกลยุทธ์การเทรดของคุณ คุณจะเห็น: 68% ของผลลัพธ์ทำกำไร $10-$50, 25% ขาดทุน $10-$30, 5% ขาดทุน $50-$200 และ 2% ทำกำไร $100+ ตอนนี้คุณเข้าใจโปรไฟล์ความเสี่ยงของคุณแล้ว

Basic Geometric Brownian Motion (GBM)

สร้างแบบจำลองราคาในอนาคตเป็นการเดินสุ่มด้วย drift และ volatility:

Python — เส้นทางราคาแบบมอนติคาร์โล
import numpy as np
def simulate_price_paths(S0, mu, sigma, T, dt, n_sims=10000):
# S0: ราคาปัจจุบัน, mu: drift, sigma: volatility
# T: ระยะเวลา (วัน), dt: ขั้นเวลา, n_sims: จำนวนการจำลอง
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

ตัวชี้วัดความเสี่ยงพอร์ตโฟลิโอ

Value at Risk (VaR)

จำนวนขาดทุนที่คุณจะเกินในเพียง 5% ของสถานการณ์ (ความเชื่อมั่น 95%):

Python — คำนวณ VaR
def calculate_var(simulations, confidence=0.95):
pnl = simulations[:, -1] - simulations[:, 0]
var = np.percentile(pnl, (1 - confidence) * 100)
return var # เช่น -$2,340

Expected Shortfall (CVaR)

ขาดทุนเฉลี่ยในกรณีที่แย่ที่สุด 5%:

Python — คำนวณ 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 # เช่น -$3,800 (แย่กว่า VaR)

การจำลองเฉพาะกลยุทธ์

จำลองกฎการเทรดจริงของคุณ ไม่ใช่แค่เส้นทางราคา:

Python — การจำลองมอนติคาร์โลกลยุทธ์
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 # หยุดเมื่อขาดทุน 50%
results[sim] = equity
return results

การทดสอบความเครียดด้วยสัญญาณ Smart Money

จำลองสถานการณ์ที่แย่ที่สุดเมื่อความเชื่อมั่นของ Smart Money ลดลง:

Python — จำลองสถานการณ์ทดสอบความเครียด
def stress_test_scenarios(base_win_rate):
# สถานการณ์ 1: สภาวะปกติ (ความเชื่อมั่น HIGH)
scenario_normal = simulate_strategy(10000, win_rate=base_win_rate)
# สถานการณ์ 2: สัญญาณแย่ลง (ความเชื่อมั่น MEDIUM)
scenario_medium = simulate_strategy(10000, win_rate=base_win_rate * 0.95)
# สถานการณ์ 3: ภาวะล่มสลาย (เงื่อนไข VETO)
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)}
}

การตีความ

จากการจำลอง 10k ครั้ง คุณจะเรียนรู้:

ทดสอบกลยุทธ์ด้วยสัญญาณ Smart Money

เข้าใจความเสี่ยงของพอร์ตโฟลิโอภายใต้สภาวะปกติ สัญญาณแย่ลง และเงื่อนไข VETO ของ Smart Money API ของเราให้สัญญาณแก่คุณ ส่วนการจำลองมอนติคาร์โลสร้างแบบจำลองผลลัพธ์

Risk Model Today →