YouMind
ลงชื่อเข้าใช้

วิธีที่อัลกอริทึมของ Jim Simons ทำเงินให้คุณในขณะที่คุณหลับ (เจาะลึก Quant Framework ฉบับสมบูรณ์)

@RitOnchain
อังกฤษ06 มิ.ย. 2569
163K
165
24
12
388

TL;DR

บทความนี้จะถอดรหัสความสำเร็จของ Medallion Fund ออกเป็น 5 เลเยอร์ทางเทคนิค ได้แก่ การตรวจจับสัญญาณ (Signal Detection), การสร้างแบบจำลองปัจจัย (Factor Modeling), การสลับสถานะแบบ Markov (Markov Regime Switching), โครข่ายประสาทเทียม (Neural Networks) และตรรกะการดำเนินการ (Execution Logic) พร้อมตัวอย่างโค้ด Python ที่นำไปใช้งานได้จริง

กองทุนเฮดจ์ฟันด์ที่ประสบความสำเร็จมากที่สุดในประวัติศาสตร์ ไม่เคยมีปีที่ขาดทุนเลย ใน 34 ปีที่ผ่านมา นี่คือระบบที่แน่นอน — ทุกสูตร ทุกสัญญาณ โค้ดที่รันได้

ฤดูใบไม้ผลิ ปี 1988 นักคณิตศาสตร์ที่ใช้ชีวิตทั้งชีวิตในการถอดรหัสสงครามเย็น เดินเข้าไปในสำนักงานเทรดและทำสิ่งที่ไม่มีใครในวอลล์สตรีทเคยลอง: เขาไล่นักเทรดทั้งหมดออกและแทนที่ด้วยเครื่องตรวจจับสัญญาณ

ชื่อของเขาคือ Jim Simons กองทุนของเขาชื่อ Medallion ผลลัพธ์: ค่าธรรมเนียมผลการดำเนินงาน 6 หมื่นล้านดอลลาร์ที่ดึงมาจากตลาด มูลค่าสุทธิ 3 หมื่นล้านดอลลาร์สำหรับ Simons เพียงคนเดียว ผลตอบแทนต่อปี 39% หลังจากหักค่าธรรมเนียมผลการดำเนินงาน 44% ไม่มีปีขาดทุนเลยใน 34 ครั้ง

นักวิเคราะห์เชิงปริมาณทุกคนบนแพลตฟอร์มนี้เคยเห็นตัวเลขเหล่านี้ แทบไม่มีใครรู้ว่า อะไรกำลังทำงานอยู่ภายใต้ฝาครอบจริงๆ

จนถึงตอนนี้

เลเยอร์ 1: เอ็นจิ้นตรวจจับสัญญาณ

Renaissance ไม่ได้เทรดตามข่าว ไม่ได้อ่าน 10-Ks ทีมของ Simons อาศัยวิธีการที่ขับเคลื่อนด้วยข้อมูล ใช้การวิเคราะห์ทางสถิติและพลังการคำนวณเพื่อระบุความไม่มีประสิทธิภาพของตลาด — รวบรวมข้อมูลจำนวนมหาศาลและวิเคราะห์เพื่อหารูปแบบทางสถิติและเหตุการณ์ที่ไม่สุ่มในตลาดที่หลากหลาย

เลเยอร์แรกคือ ตัวแยกรูปแบบ คิดว่ามันเป็นเครื่องวัดแผ่นดินไหว — ไม่ได้อ่านแผ่นดินไหว แต่อ่านแรงสั่นสะเทือนที่มองไม่เห็นในข้อมูลราคาที่เกิดขึ้นก่อนการเคลื่อนไหวครั้งใหญ่

นี่คือโครงร่าง Python:

python
1import numpy as np
2import pandas as pd
3from scipy import stats
4
5def detect_signal(prices: pd.Series, lookback: int = 20) -> dict:
6 returns = prices.pct_change().dropna()
7
8 # Autocorrelation — ผลตอบแทนวันนี้ทำนายวันพรุ่งนี้ได้ไหม?
9 acf_1 = returns.autocorr(lag=1)
10
11 # ค่าเบี่ยงเบน Z-score จากค่าเฉลี่ยเคลื่อนที่
12 rolling_mean = returns.rolling(lookback).mean()
13 rolling_std = returns.rolling(lookback).std()
14 z_score = (returns - rolling_mean) / rolling_std
15
16 # Hurst exponent — อนุกรมนี้มีแนวโน้มหรือกลับสู่ค่าเฉลี่ย?
17 hurst = compute_hurst(prices.values)
18
19 return {
20 "autocorrelation": acf_1,
21 "z_score_latest": z_score.iloc[-1],
22 "hurst_exponent": hurst, # <0.5 = กลับสู่ค่าเฉลี่ย, >0.5 = มีแนวโน้ม
23 "regime": "trending" if hurst > 0.55 else "mean_reverting"
24 }
25
26def compute_hurst(ts):
27 lags = range(2, 20)
28 tau = [np.sqrt(np.std(np.subtract(ts[lag:], ts[:-lag]))) for lag in lags]
29 m = np.polyfit(np.log(lags), np.log(tau), 1)
30 return m[0] * 2.0

สิ่งที่มันบอกคุณ: ถ้า hurst < 0.45 สินทรัพย์กลับสู่ค่าเฉลี่ย — การ fade ได้ผล ถ้า hurst > 0.55 มีแนวโน้ม — โมเมนตัมได้ผล Medallion เปลี่ยนกลยุทธ์ตามการตรวจจับสภาวะแบบนี้พอดี

เลเยอร์ 2: โมเดลปัจจัย (ทำไมหุ้นถึงเคลื่อนไหวก่อนใครจะรู้สาเหตุ)

การดำเนินการเชิงปริมาณที่จริงจังดึงข้อมูล options chains, ระดับความลึกของ order-book, ข้อมูลพื้นฐาน (กำไร, รายได้, กระแสเงินสด), การดำเนินการของบริษัท, ความรู้สึกจากข่าว, ปริมาณโซเชียลมีเดีย และชุดข้อมูลทางเลือกที่เพิ่มมากขึ้น เช่น ภาพถ่ายดาวเทียม, ธุรกรรมบัตรเครดิตแบบไม่ระบุตัวตน, ปริมาณการใช้งานเว็บ, การดาวน์โหลดแอป และการเคลื่อนย้ายตู้คอนเทนเนอร์

Renaissance ระบุ สาเหตุ ที่ราคาเคลื่อนไหวโดยการแยกผลตอบแทนออกเป็นปัจจัยต่างๆ โมเดล 5 ปัจจัยของ Fama-French เป็นเวอร์ชันสาธารณะของสิ่งนี้ เวอร์ชันส่วนตัวของ Renaissance ลึกถึง 200+ ปัจจัย

python
1from sklearn.linear_model import LinearRegression
2
3def factor_decompose(returns: pd.DataFrame, factors: pd.DataFrame) -> dict:
4 """
5 returns: DataFrame ของผลตอบแทนสินทรัพย์
6 factors: DataFrame ของผลตอบแทนปัจจัย (ตลาด, ขนาด, มูลค่า, โมเมนตัม ฯลฯ)
7 """
8 model = LinearRegression()
9 model.fit(factors, returns)
10
11 alpha = model.intercept_ # ผลตอบแทนที่ไม่สามารถอธิบายด้วยปัจจัย = ขอบล้วน
12 betas = model.coef_ # การเปิดรับปัจจัย
13 r_squared = model.score(factors, returns)
14
15 return {
16 "alpha": alpha, # นี่คือสิ่งที่คุณตามล่า — alpha > 0 หรือไม่?
17 "betas": dict(zip(factors.columns, betas)),
18 "r_squared": r_squared,
19 "edge_quality": "strong" if abs(alpha) > 0.001 and r_squared > 0.3 else "weak"
20 }

Alpha สูง + R-squared ต่ำ = ขอบของคุณ ไม่ได้ อธิบายด้วยปัจจัยที่รู้จัก นั่นคืออาณาเขตของ Medallion

เลเยอร์ 3: เครื่องจักรสภาวะ Markov Chain

หนึ่งในความลับที่ถูกพูดถึงมากที่สุดของกองทุนเชิงปริมาณชั้นนำคือ การตรวจจับสภาวะ — การรู้ว่าคุณอยู่ในสถานะตลาดใดก่อนที่จะเทรด Natural Language Processing สแกนบทความข่าวและโซเชียลมีเดีย ดึงข้อมูลเชิงลึกเกี่ยวกับความรู้สึกสาธารณะ แต่สัญญาณสภาวะที่ลึกกว่านั้นมาจากโครงสร้างราคาเอง

Markov Chains จำลองความน่าจะเป็นของการเปลี่ยนระหว่างสถานะตลาด:

python
1import numpy as np
2
3# สถานะ: 0=กระทิง, 1=หมี, 2=ซบเซา
4# เมทริกซ์การเปลี่ยนที่ประมาณจากข้อมูลในอดีต
5transition_matrix = np.array([
6 [0.78, 0.14, 0.08], # จากกระทิง: 78% ยังคงกระทิง, 14% ไปหมี, 8% ซบเซา
7 [0.20, 0.68, 0.12], # จากหมี: 20% ฟื้นตัว, 68% ยังคงหมี, 12% ซบเซา
8 [0.25, 0.23, 0.52], # จากซบเซา: 25% กระทิง, 23% หมี, 52% ยังคง
9])
10
11def get_next_regime(current_state: int, steps: int = 5) -> np.ndarray:
12 """ส่งกลับการแจกแจงความน่าจะเป็นเหนือสถานะหลังจาก N ขั้นตอน."""
13 state_vec = np.zeros(3)
14 state_vec[current_state] = 1.0
15
16 for _ in range(steps):
17 state_vec = state_vec @ transition_matrix
18
19 return {
20 "bull_probability": round(state_vec[0], 3),
21 "bear_probability": round(state_vec[1], 3),
22 "stagnant_probability": round(state_vec[2], 3),
23 "dominant_regime": ["กระทิง", "หมี", "ซบเซา"][np.argmax(state_vec)]
24 }

ถ้าโมเดลบอกความน่าจะเป็น 76% ที่จะอยู่ในสภาวะหมีในช่วง 5 ช่วงถัดไป — คุณจะไม่ทำ long

เลเยอร์ 4: ตัวแยกขอบของโครงข่ายประสาทเทียม

ระบบ AI ใช้ deep learning เพื่อสร้างและดำเนินสัญญาณเทรดแบบเรียลไทม์ โดยมี reinforcement learning เพื่อปรับกลยุทธ์การเทรดอย่างต่อเนื่องและปรับปรุงจังหวะสำหรับการเข้าและออก

เลเยอร์โครงข่ายประสาทเทียมดึงความสัมพันธ์แบบไม่เชิงเส้นที่ไม่มีสูตรใดสามารถจับได้:

python
1import torch
2import torch.nn as nn
3
4class QuantEdgeNet(nn.Module):
5 def __init__(self, input_features: int = 50):
6 super().__init__()
7 self.layers = nn.Sequential(
8 nn.Linear(input_features, 128),
9 nn.ReLU(),
10 nn.Dropout(0.2),
11 nn.Linear(128, 64),
12 nn.ReLU(),
13 nn.Linear(64, 3) # เอาต์พุต: ความน่าจะเป็น [long, short, flat]
14 )
15
16 def forward(self, x):
17 return torch.softmax(self.layers(x), dim=-1)
18
19# สัญญาณฝึก: รวมคะแนนปัจจัย + ความน่าจะเป็นสภาวะ + คุณลักษณะราคาดิบ
20def build_feature_vector(prices, factors, regime_probs):
21 signal = detect_signal(prices)
22 return np.concatenate([
23 prices.pct_change().tail(20).values, # 20 ผลตอบแทนล่าสุด
24 list(factors.values()), # การเปิดรับปัจจัย
25 list(regime_probs.values()), # ความน่าจะเป็นสภาวะ Markov
26 [signal["hurst_exponent"],
27 signal["z_score_latest"]]
28 ])

ข้อมูลเชิงลึกสำคัญ: คุณไม่ได้ทำนายราคา คุณกำลังทำนาย ความน่าจะเป็นของทิศทาง แม้ความแม่นยำ 52% — ถ้าคุณปรับขนาด Kelly อย่างถูกต้อง — ก็พิมพ์เงินได้

เลเยอร์ 5: เลเยอร์การดำเนินการ (ที่ 80% ของนักวิเคราะห์เชิงปริมาณเลือดไหล)

Renaissance ต้องสร้างโครงสร้างพื้นฐานเพื่อให้ต้นทุนการดำเนินการต่ำมาก — ผลตอบแทนรวมที่รายงานเป็นหลังหักต้นทุนการเทรด ทำให้ผลงานของ Medallion ยิ่งพิเศษมากขึ้น

นักวิเคราะห์เชิงปริมาณรายย่อยส่วนใหญ่เสียขอบไปกับการดำเนินการ ทางแก้:

python
1def kelly_position_size(
2 win_probability: float,
3 win_loss_ratio: float,
4 max_risk_pct: float = 0.02 # อย่าเสี่ยงมากกว่า 2% ต่อการเทรด
5) -> float:
6 kelly_fraction = win_probability - (1 - win_probability) / win_loss_ratio
7 kelly_fraction = max(0, kelly_fraction) # อย่า Kelly สั้น
8 half_kelly = kelly_fraction * 0.5 # ใช้ half-Kelly เพื่อความปลอดภัย
9 return min(half_kelly, max_risk_pct) # จำกัดสูงสุดที่ 2%
10
11def calculate_execution_cost(
12 spread_bps: float,
13 market_impact_bps: float,
14 shares: int,
15 price: float
16) -> float:
17 total_bps = spread_bps + market_impact_bps
18 cost_per_share = price * total_bps / 10_000
19 return cost_per_share * shares
20
21# เทรดเมื่อขอบมากกว่าต้นทุนการดำเนินการ
22def should_trade(edge_bps: float, execution_cost_bps: float) -> bool:
23 return edge_bps > (execution_cost_bps * 1.5) # ต้องการครอบคลุมต้นทุนขั้นต่ำ 1.5 เท่า

คู่มือ Medallion: ทั้ง 5 เลเยอร์

text
1ข้อมูลตลาดดิบ
2 ↓
3[L1] การตรวจจับสัญญาณ → Hurst · ACF · Z-score
4 ↓
5[L2] โมเดลปัจจัย → การสกัด α · การเปิดรับ β
6 ↓
7[L3] สภาวะ Markov → กระทิง · หมี · ซบเซา
8 ↓
9[L4] ขอบโครงข่ายประสาท → Long · Short · Flat
10 ↓
11[L5] Kelly + การดำเนินการ → ขนาดตำแหน่ง · ตัวกรองต้นทุน · การเข้า
12 ↓
13 เทรด / ไม่เทรด

กองทุนเชิงปริมาณอื่นๆ จ้างคนเป็นพัน Renaissance มีทั้งหมด 400 คน อาจจะ 200 คนที่แตะโมเดล กองทุนอื่นมีหลายกลยุทธ์ที่แข่งขันกัน Renaissance มีโมเดลเดียวที่ทุกคนทำงานร่วมกัน

นั่นคือความลับที่ไม่มีใครพูดถึง: ขอบไม่ใช่สูตรใดสูตรหนึ่ง มันคือ ไปป์ไลน์ — แต่ละเลเยอร์กรองสัญญาณรบกวนจนเหลือเพียงความแน่นอนทางสถิติ

ตัวเลขไม่โกหก

กลยุทธ์เชิงปริมาณส่วนใหญ่ตายจากการ overfitting Medallion อยู่รอดเพราะ:

  1. พวกเขาไม่เคยแสดงระบบทั้งหมดให้คนนอกดู — รักษา alpha ให้มีชีวิต
  2. พวกเขาปิดรับเงินจากภายนอก — รักษาความจุ
  3. พวกเขาใช้ half-Kelly — อยู่รอดใน drawdowns ที่ฆ่านักวิเคราะห์ที่ใช้เลเวอเรจสูงเกินไป
  4. ทุกสัญญาณถูกทดสอบนอกตัวอย่างก่อน — ไม่มีการรั่วไหลของข้อมูล

ภายในปี 2025 ปริมาณการเทรดหุ้นสหรัฐมากกว่า 75% ถูกขับเคลื่อนโดยระบบเชิงปริมาณหรืออัลกอริทึม ตลาด คือ เชิงปริมาณ ขอบของคุณคือการสร้างไปป์ไลน์ที่ดีที่สุด

โค้ดด้านบนคือจุดเริ่มต้นของคุณ ทุกสูตรรันได้ ทุกเลเยอร์ซ้อนกันได้

ตอนนี้ไปสร้างของคุณ

ขอบคุณที่อ่าน, ฉันจะขอบคุณมากถ้ามี QT !

เกี่ยวกับฉัน* : ฉันคือ Venus, สถาปนิกระบบเชิงปริมาณอาวุโสและวิศวกรแบ็กเอนด์ที่มีประสบการณ์ในการสร้างสตาร์ทอัพจาก 0→1 และขยายผลิตภัณฑ์จาก 1→100 ในโครงสร้างพื้นฐาน AI, cloud, และ fintech x defi

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

บันทึกแหล่งที่มา ถามคำถามที่ตรงประเด็น สรุปข้อโต้แย้ง และเปลี่ยนบทความไวรัลให้เป็นโน้ตที่นำกลับมาใช้ได้ใน AI เวิร์กสเปซเดียว

สำรวจ YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม