Swarm Intelligence ในการวิเคราะห์ตลาดการเงิน

@zostaff
อังกฤษ1 วันที่ผ่านมา · 11 ก.ค. 2569
120K
51
6
2
137

TL;DR

บทความนี้สำรวจ Swarm Intelligence ในฐานะเครื่องมือสำหรับการเพิ่มประสิทธิภาพทางการเงินและกรอบแนวคิดในการทำความเข้าใจพลวัตของตลาดผ่านการสร้างแบบจำลองโดยใช้ตัวแทน (Agent-based modeling)

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

มีความเป็นคู่ที่แปลกประหลาดอยู่ใจกลางของการเงินเชิงปริมาณ ด้านหนึ่งคือความฝันของวิศวกร: ฟังก์ชันวัตถุประสงค์ที่สะอาด, เซตที่เป็นไปได้แบบนูน, คำตอบแบบปิดที่คุณสามารถพิสูจน์ได้ว่าดีที่สุด อีกด้านหนึ่งคือตลาดจริง: ไม่เป็นเชิงเส้น, ไม่คงที่, เต็มไปด้วยจุดต่ำสุดเฉพาะที่, หางหนา, การเปลี่ยนระบอบ, และลูปป้อนกลับที่การกระทำของคุณเองเปลี่ยนสิ่งที่คุณพยายามทำนาย

ปัญญาฝูง อยู่บนด้านที่สอง มันคือกลุ่มของวิธีการที่ยอมแพ้ต่อความสง่างามและการพิสูจน์ เพื่อแลกกับสิ่งที่ตลาดให้รางวัลจริง ๆ: ความสามารถในการค้นหาภูมิประเทศที่น่าเกลียด, มีมิติสูง, และหลอกลวง โดยไม่ติดกับดัก และทำได้ด้วยเอเจนต์ที่เรียบง่ายจนไม่มีตัวไหนเข้าใจปัญหาทั้งหมดเลย

บทความนี้ครอบคลุมทั้งสองครึ่งของเรื่อง ครึ่งแรกคือปัญญาฝูงในฐานะ ชุดเครื่องมือการหาค่าเหมาะที่สุด ที่คุณใช้กับปัญหาทางการเงิน: Particle Swarm Optimization สำหรับการปรับพอร์ตโฟลิโอและกลยุทธ์, Ant Colony Optimization สำหรับการจัดเส้นทางและการเลือกแบบเชิง組合 ครึ่งหลังคือแนวคิดที่ลึกกว่าและอึดอัดกว่า: ตลาด คือ ฝูง และแบบจำลองที่ใช้เอเจนต์ช่วยให้คุณจำลองฟองสบู่, ภาวะตลาดพัง, และพฤติกรรมตามฝูงที่เกิดขึ้น ซึ่งไม่มีแบบจำลองดุลยภาพใดสร้างขึ้นมาเองได้

มีคณิตศาสตร์, โค้ด, และแผนภาพตลอดทั้งเรื่อง ไม่มีอะไรที่คลุมเครือ

ทรัพยากรของฉัน:

ช่อง Telegram:

https://t.me/zostaffsmartarc

GitHub:

https://github.com/zostaff

เทรดที่นี่:

https://polymarket.com/?r=zostaff

ส่วนที่ 0: "ปัญญาฝูง" แท้จริงแล้วคืออะไร

ฝูงคือประชากรของเอเจนต์ธรรมดาที่ปฏิบัติตามกฎท้องถิ่น โดยไม่มีผู้ควบคุมส่วนกลาง แต่ร่วมกันสร้างพฤติกรรมระดับโลกที่ชาญฉลาด ตัวอย่างมาตรฐานคือทางชีววิทยา: อาณานิคมมดที่ค้นหาเส้นทางที่สั้นที่สุดผ่านฟีโรโมน, ฝูงนกที่รักษาความเป็นหนึ่งเดียวผ่านกฎท้องถิ่นสามข้อ, อาณานิคมผึ้งที่จัดสรรแมลงหาอาหารไปยังแปลงดอกไม้

คุณสมบัติสามประการกำหนดกระบวนทัศน์นี้และอธิบายว่าทำไมมันถึงเหมาะกับการเงิน:

  1. การกระจายอำนาจ ไม่มีเอเจนต์ใดมีภาพรวมทั้งหมด แต่ละตัวดำเนินการโดยใช้ข้อมูลท้องถิ่นบวกกับสัญญาณที่แบ่งปันกันเล็กน้อย สิ่งนี้สะท้อนตลาดจริง ที่ไม่มีผู้เข้าร่วมคนไหนเห็น flow ของคำสั่งซื้อขายทั้งหมด
  2. การสำรวจแบบสุ่มพร้อมแรงดึงดูดทางสังคม เอเจนต์เคลื่อนที่แบบกึ่งสุ่ม แต่ถูกดึงไปยังที่ที่ฝูงพบคุณค่า ความสมดุลของการสำรวจและการใช้ประโยชน์นี้คือสิ่งที่คุณต้องการบนภูมิประเทศที่เต็มไปด้วยจุดที่เหมาะสมที่สุดเฉพาะที่ ซึ่งก็คือพื้นผิวผลตอบแทนที่ปรับด้วยความเสี่ยง
  3. การเกิดขึ้น พฤติกรรมที่น่าสนใจไม่ได้ถูกโปรแกรมไว้ในเอเจนต์ใด ๆ มันปรากฏที่ระดับประชากร ในการหาค่าเหมาะที่สุด นี่หมายถึงการหลุดจากกับดักที่วิธีการไล่ระดับตกเข้าไป ในการสร้างแบบจำลองตลาด มันหมายถึงฟองสบู่ที่ไม่มีเอเจนต์ "มีเหตุผล" ตัวใดตั้งใจสร้าง

ความแตกต่างกับวิธีการแบบคลาสสิกคือประเด็นสำคัญ การไล่ระดับต้องการฟังก์ชันวัตถุประสงค์ที่หาอนุพันธ์ได้และหาค่าต่ำสุดที่ใกล้ที่สุด ซึ่งมักเป็นค่าที่ผิด การหาค่าเหมาะที่สุดแบบนูนต้องการคุณสมบัตินูน ซึ่งวัตถุประสงค์ทางการเงินแทบไม่มีเมื่อคุณเพิ่มต้นทุนธุรกรรม, ข้อจำกัดด้านจำนวนหลักทรัพย์, หรือข้อจำกัดด้านการลดลงของเงินทุน วิธีการแบบฝูงไม่ต้องการสิ่งเหล่านี้เลย พวกมันถือว่าฟังก์ชันวัตถุประสงค์เป็นกล่องดำ: ป้อนตัวเลือกเข้าไป, ได้ตัวเลขกลับมา, เท่านั้นเอง

ส่วนที่ 1: Particle Swarm Optimization

1.1 กลไก

Particle Swarm Optimization (PSO) ถูกนำเสนอโดย Kennedy และ Eberhart ในปี 1995 โดยจำลองฝูงเป็นชุดของอนุภาคที่บินผ่านพื้นที่ค้นหา อนุภาค i แต่ละตัวมีตำแหน่ง x_i (คำตอบที่เป็นไปได้) และความเร็ว v_i มันจดจำตำแหน่งที่ดีที่สุดที่เคยไปเยือน (pbest_i) และรู้ตำแหน่งที่ดีที่สุดที่อนุภาคใด ๆ เคยพบ (g หรือ global best)

ในแต่ละขั้นตอน อนุภาคทุกตัวจะอัปเดตความเร็วของมันเป็นผลรวมถ่วงน้ำหนักของแรงขับสามอย่าง:

text
1v_i(t+1) = w · v_i(t) ความเฉื่อย: ทำต่อไปในสิ่งที่กำลังทำ
2 + c1 · r1 · (pbest_i − x_i(t)) ความรู้ความเข้าใจ: กลับไปหาค่าที่ดีที่สุดของตัวเอง
3 + c2 · r2 · (g − x_i(t)) ทางสังคม: เคลื่อนที่ไปหาค่าที่ดีที่สุดของฝูง
4
5x_i(t+1) = x_i(t) + v_i(t+1)

โดยที่ w คือน้ำหนักความเฉื่อย, c1 และ c2 คือสัมประสิทธิ์การเร่งความเร็ว, และ r1, r2 คือตัวเลขสุ่มแบบสม่ำเสมอใหม่ในช่วง [0,1] ที่สุ่มอย่างอิสระต่อมิติ ความสุ่มนั้นคือเครื่องยนต์ของการสำรวจ หากไม่มีมัน ฝูงจะยุบตัวอย่างแน่นอน

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

zostaff - inline image

1.2 เหตุใดมันจึงหลุดพ้นจากจุดต่ำสุดเฉพาะที่

ความมหัศจรรย์อยู่ที่ความตึงเครียดระหว่างเทอมความรู้ความเข้าใจและเทอมสังคม ในช่วงแรก อนุภาคกระจัดกระจายและค่าที่ดีที่สุดส่วนตัวของพวกมันแตกต่างกันอย่างมาก ดังนั้นฝูงจึงสำรวจอย่างกว้างขวาง เมื่อค้นพบพื้นที่ที่ดี g จะดึงทุกคนเข้ามา แต่ความเฉื่อยและความทรงจำส่วนตัวของแต่ละอนุภาคป้องกันไม่ให้มันยุบตัวลงบน g ทันที ฝูงจะวน, ยิงเกิน, และตรวจสอบละแวกนั้นก่อนที่จะตัดสินใจ บนพื้นผิวที่มีหลายจุดสูงสุด นี่หมายความว่าฝูงสามารถละทิ้งจุดต่ำสุดเฉพาะที่ที่พอใช้ได้ หากอนุภาคตัวหนึ่งสะดุดเข้ากับแอ่งที่ดีกว่า

นี่คือ PSO บนฟังก์ชัน Rastrigin ซึ่งเป็นแบบทดสอบมาตรฐานที่มีจุดต่ำสุดระดับโลกที่จุดกำเนิด ล้อมรอบด้วยตาข่ายของจุดต่ำสุดเฉพาะที่ที่หลอกลวง ดูฝูงกระจายตัว, รวมกลุ่ม, และลู่เข้า ในขณะที่ค่าความเหมาะสมที่ดีที่สุดระดับโลกลดลงถึงหกอันดับของขนาด

zostaff - inline image

วิธีการไล่ระดับที่โยนลงบนพื้นผิวนั้นจะตายในแอ่งท้องถิ่นแรกที่มันแตะ ฝูงไม่เป็นเช่นนั้น

1.3 การประยุกต์ใช้: การหาค่าเหมาะที่สุดของพอร์ตโฟลิโอภายใต้ข้อจำกัดที่สมจริง

การหาค่าเหมาะที่สุดแบบ Mean-Variance ของ Markowitz มีคำตอบแบบปิด ทันทีที่คุณเพิ่มอะไรก็ตามที่สมจริง มันก็ไม่มีอีกต่อไป ข้อจำกัดด้านจำนวนหลักทรัพย์ ("ถืออย่างมาก 20 ตัว"), ขนาดตำแหน่งขั้นต่ำ, ค่าปรับต้นทุนธุรกรรม, และข้อจำกัดการหมุนเวียน ล้วนทำลายคุณสมบัตินูนและความเป็นจำนวนเต็ม นี่คือจุดที่ PSO แสดงความสามารถของมันอย่างแท้จริง

เราต้องการเพิ่ม Sharpe ratio ของพอร์ตโฟลิโอที่ถือเฉพาะสถานะซื้อให้สูงสุด แต่ละอนุภาคคือเวกเตอร์น้ำหนัก เราซ่อมแซมมันให้เป็นซิมเพล็กซ์ (ไม่เป็นลบ, รวมกันได้หนึ่ง) และประเมินผล

python
1import numpy as np
2
3rng = np.random.default_rng(0)
4n = 8 # จำนวนสินทรัพย์
5mu = rng.normal(0.08, 0.04, n) # ผลตอบแทนรายปีที่คาดหวัง
6A = rng.normal(0, 1, (n, n))
7cov = (A @ A.T) / n * 0.04 # เมทริกซ์ความแปรปรวนร่วมที่ถูกต้อง
8rf = 0.02 # อัตราปลอดความเสี่ยง
9
10def neg_sharpe(w):
11 """วัตถุประสงค์: Negative Sharpe (เราต้องการย่อให้เล็กสุด) ซ่อมแซมน้ำหนักให้เป็นซิมเพล็กซ์"""
12 w = np.clip(w, 0, None) # ถือเฉพาะสถานะซื้อ
13 s = w.sum()
14 if s == 0:
15 return 1e9
16 w = w / s # รวมกันได้หนึ่ง
17 ret = w @ mu
18 vol = np.sqrt(w @ cov @ w)
19 return -(ret - rf) / (vol + 1e-9)
20
21# ---- PSO ----
22P, ITERS = 30, 100
23w_inertia, c1, c2 = 0.72, 1.49, 1.49
24
25X = rng.random((P, n)) # ตำแหน่ง = พอร์ตโฟลิโอที่เป็นไปได้
26V = rng.normal(0, 0.1, (P, n)) # ความเร็ว
27pbest = X.copy()
28pbest_val = np.array([neg_sharpe(x) for x in X])
29g = pbest[pbest_val.argmin()].copy()
30
31for _ in range(ITERS):
32 r1, r2 = rng.random((P, n)), rng.random((P, n))
33 V = w_inertia * V + c1 * r1 * (pbest - X) + c2 * r2 * (g - X)
34 X = np.clip(X + V, 0, None)
35 val = np.array([neg_sharpe(x) for x in X])
36 improved = val < pbest_val
37 pbest[improved] = X[improved]
38 pbest_val[improved] = val[improved]
39 g = pbest[pbest_val.argmin()].copy()
40
41w_opt = np.clip(g, 0, None); w_opt /= w_opt.sum()
42print("best Sharpe:", round(-pbest_val.min(), 3))
43print("weights:", np.round(w_opt, 3))

การรันโค้ดนี้จะให้ Sharpe ใกล้ 3.5 และเวกเตอร์น้ำหนักที่เบาบางและสมเหตุสมผลซึ่งรวมกันได้หนึ่ง ประเด็นสำคัญไม่ใช่ตัวเลข มันคือความจริงที่ว่า neg_sharpe สามารถบรรจุ อะไรก็ได้ เพิ่มเทอมต้นทุนธุรกรรม - lambda * np.sum(np.abs(w - w_prev)), เพิ่มขีดจำกัดด้านจำนวนหลักทรัพย์แบบตายตัวโดยการทำให้ค่าน้ำหนักที่น้อยที่สุดเป็นศูนย์ก่อนทำให้เป็นปกติ, เพิ่มค่าปรับการลดลงของเงินทุนที่คำนวณจากการทดสอบย้อนหลัง ไม่มีสิ่งเหล่านี้มีเกรเดียนต์ที่คุณต้องการคำนวณ และไม่มีสิ่งไหนหยุด PSO ได้ ตัวหาค่าเหมาะที่สุดไม่เคยมองเข้าไปในฟังก์ชันวัตถุประสงค์ มันแค่ถามว่า "พอร์ตโฟลิโอนี้ดีกว่าอันนั้นหรือไม่?"

1.4 การประยุกต์ใช้: การปรับจูนไฮเปอร์พารามิเตอร์และกลยุทธ์

การใช้งานหลักที่สองคือการปรับจูนกลยุทธ์การเทรด กลยุทธ์มีพารามิเตอร์: หน้าต่างย้อนหลัง, เกณฑ์การเข้าและออก, ระยะ Stop-loss, สัมประสิทธิ์การกำหนดขนาดตำแหน่ง วัตถุประสงค์คือสถิติการทดสอบย้อนหลัง เช่น ผลตอบแทนที่ปรับด้วยความเสี่ยงหลังหักต้นทุน พื้นผิวนี้ไม่นูนอย่างรุนแรง, ไม่ต่อเนื่อง (การเปลี่ยนแปลงเกณฑ์เพียงหนึ่ง Tick สามารถพลิกผลการเทรดได้), และมีค่าใช้จ่ายสูงในการประเมิน PSO ถือว่าการทดสอบย้อนหลังทั้งหมดเป็นวัตถุประสงค์แบบกล่องดำและค้นหาพื้นที่พารามิเตอร์โดยตรง

มันเทียบกับทางเลือกอื่นได้อย่างไร? อัลกอริทึมทางพันธุกรรม (การครอสโอเวอร์และการกลายพันธุ์แบบวิวัฒนาการ) เป็นคู่แข่งที่ใกล้เคียงที่สุดและมักจะเทียบเคียงได้ การค้นหาแบบสุ่มเป็นพื้นฐานที่ซื่อสัตย์ซึ่งที่น่าแปลกคือมักจะเอาชนะการค้นหาแบบกริด บนวัตถุประสงค์การปรับจูนกลยุทธ์ทั่วไป ฝูงมักจะลู่เข้าเร็วกว่าและไปยังจุดที่เหมาะสมที่สุดที่ดีกว่าทั้งสองวิธี เนื่องจากเทอมแรงดึงดูดทางสังคมจะรวมการประเมินไว้ในที่ที่มันสำคัญ แทนที่จะสุ่มตัวอย่างแบบไม่รู้ทิศทาง

zostaff - inline image

ข้อควรระวังที่นี่เป็นเรื่องจริงและผู้ปฏิบัติต้องซึมซับมัน: การลู่เข้าที่เร็วขึ้นบนวัตถุประสงค์การทดสอบย้อนหลังคือการลู่เข้าที่เร็วขึ้นสู่ การโอเวอร์ฟิตติ้ง PSO จะค้นหาชุดพารามิเตอร์ที่อธิบายสัญญาณรบกวนในตัวอย่างประวัติศาสตร์ของคุณได้อย่างสมบูรณ์แบบอย่างมีความสุข การตรวจสอบความถูกต้องแบบ Walk-Forward, การกันข้อมูลไว้นอกตัวอย่าง, และการลงโทษความซับซ้อนของพารามิเตอร์ไม่ใช่เครื่องปรุงแต่งที่ไม่จำเป็น มันคือความแตกต่างระหว่างสิ่งประดิษฐ์จากการวิจัยและกลยุทธ์ที่อยู่รอดเมื่อสัมผัสกับตลาดจริง

ส่วนที่ 2: Ant Colony Optimization

2.1 กลไก

Ant Colony Optimization (ACO) โดย Dorigo ในช่วงต้นทศวรรษ 1990 โจมตีปัญหาเชิง组合ซึ่งคำตอบคือเส้นทางหรือการเลือกแบบไม่ต่อเนื่อง มดจริงหาเส้นทางสั้นโดยการวางฟีโรโมนขณะที่พวกมันเดิน เส้นทางที่สั้นกว่าจะถูกเดินผ่านบ่อยครั้งกว่าต่อหน่วยเวลา, สะสมฟีโรโมนมากขึ้น, และดึงดูดมดมากขึ้น ในลูปป้อนกลับเชิงบวก ที่สำคัญ ฟีโรโมนจะระเหย ซึ่งช่วยให้อาณานิคมลืมเส้นทางที่เก่าและปรับตัวเมื่อสภาพแวดล้อมเปลี่ยนแปลง

มดเทียมสร้างคำตอบทีละขั้นตอนบนกราฟ ที่โหนด i มดจะเลือกโหนด j ถัดไปโดยความน่าจะเป็น โดยมีอคติจากฟีโรโมน tau_ij บนขอบนั้นและความน่าดึงดูดตามฮิวริสติก eta_ij:

text
1(tau_ij)^alpha · (eta_ij)^beta
2P(i -> j) = ----------------------------------------
3 ผลรวมของ k ที่อนุญาตของ (tau_ik)^alpha · (eta_ik)^beta

alpha ควบคุมว่ามดเชื่อถือฟีโรโมนที่สะสมไว้มากแค่ไหน (การใช้ประโยชน์จากความทรงจำร่วม); beta ควบคุมว่าพวกมันเชื่อถือฮิวริสติกทันทีมากแค่ไหน (คุณภาพท้องถิ่นแบบละโมบ) หลังจากมดทุกตัวเสร็จสิ้น ฟีโรโมนจะถูกอัปเดต:

text
1tau_ij <- (1 - rho) · tau_ij + ผลรวมของมดของ delta_tau_ij

rho คืออัตราการระเหย การสะสม delta_tau_ij จะมากกว่าสำหรับมดที่สร้างคำตอบที่ดีกว่า ดังนั้นขอบที่ดีจะถูกเสริม การระเหยป้องกันการติดอยู่ในกับดักก่อนเวลาอันควร และเป็นสิ่งที่ทำให้ ACO ปรับตัวได้กับปัญหาที่ไม่คงที่ ซึ่งก็คือตลาด

zostaff - inline image

2.2 ที่ที่ ACO เข้ากับการเงิน

PSO ใช้สำหรับปัญหาต่อเนื่อง ACO ใช้สำหรับปัญหาไม่ต่อเนื่องและรูปทรงเส้นทาง ในทางการเงิน ซึ่งรวมถึง:

  • การเลือกสินทรัพย์เป็นปัญหาการเดินกราฟ การเลือกว่าชุดย่อยใดของจักรวาลที่จะถือ โดยที่ขอบแสดงถึงความสัมพันธ์หรือการเปลี่ยนผ่านภาคส่วน และฟีโรโมนเรียนรู้ว่าชุดใดในประวัติศาสตร์ที่ให้ผลตอบแทนปรับความเสี่ยงที่ดี
  • การจัดเส้นทางคำสั่งและการดำเนินการ การแบ่งคำสั่งซื้อขายขนาดใหญ่_parent ออกเป็นส่วนย่อย ๆ ผ่านสถานที่และช่วงเวลาเพื่อลดผลกระทบต่อตลาดและต้นทุน เป็นปัญหาการหาเส้นทางโดยธรรมชาติ ฟีโรโมนจะเสริมการตัดสินใจจัดเส้นทางที่ในอดีตได้การเติมคำสั่งที่ดี และการระเหยทำให้ระบบจัดเส้นทางปรับตัวเมื่อสภาพคล่องของสถานที่เปลี่ยนไประหว่างวัน
  • การสร้างกฎการเทรด แต่ละโหนดคือเงื่อนไขหรือตัวบ่งชี้ เส้นทางของมดผ่านกราฟคือกฎประกอบ อาณานิคมค้นหาพื้นที่เชิง组合ของโครงสร้างกฎ โดยเสริมสายกฎที่ทดสอบย้อนหลังได้ดี

แผนภาพด้านบนแสดงกรณีการดำเนินการ: เงินสดที่ไม่ได้ใช้ต้องไปถึงการเติมคำสั่งซื้อขาย และอาณานิคมเสริมเส้นทาง (เงินสดไป AAPL ไป NVDA ไปยังการเติมคำสั่ง) ที่ในอดีตลดต้นทุน โดยความหนาของขอบเป็นสัดส่วนกับฟีโรโมนที่สะสม

คำเตือนเรื่องการโอเวอร์ฟิตติ้งแบบเดียวกับ PSO ใช้ได้อย่างเท่าเทียมกัน อาณานิคมที่เสริมสายกฎให้สมบูรณ์แบบบนข้อมูลประวัติศาสตร์ได้จดจำอดีต ไม่ได้ค้นพบอนาคต

ส่วนที่ 3: ตลาดในฐานะฝูง

3.1 การกลับแนวคิด

ส่วนที่ 1 และ 2 ใช้ปัญญาฝูงเป็นเครื่องมือที่เรามุ่งไปที่ตลาด ส่วนที่ 3 อ้างสิทธิ์ที่ลึกกว่า: ตลาด คือ ฝูง และอาจเป็นฝูงที่ใหญ่ที่สุดและสำคัญที่สุดที่มนุษย์สร้างขึ้น

ลองดูคุณสมบัติที่กำหนดอีกครั้ง การกระจายอำนาจ: ผู้เข้าร่วมหลายล้านคน ไม่มีผู้ควบคุมส่วนกลาง แต่ละคนดำเนินการโดยใช้ข้อมูลท้องถิ่นบางส่วน กฎท้องถิ่นที่เรียบง่าย: ผู้เข้าร่วมส่วนใหญ่ไม่ได้ใช้ทฤษฎีเกมจนกระทั่งลู่เข้า พวกเขากำลังทำตามฮิวริสติก, โมเมนตัม, ความกลัว, พฤติกรรมของเพื่อนบ้าน การเกิดขึ้น: ฟองสบู่, ภาวะตลาดพัง, Flash Crash, การเกาะกลุ่มของความผันผวน, และผลตอบแทนหางหนา ไม่ได้ถูกออกแบบโดยใคร พวกมันเกิดขึ้นจากปฏิสัมพันธ์

การปรับกรอบนี้มีความสำคัญเพราะประเพณีทางทฤษฎีที่โดดเด่น คือสมมติฐานตลาดมีประสิทธิภาพและดุลยภาพความคาดหวังมีเหตุผล พยายามที่จะสร้างปรากฏการณ์เหล่านี้จากภายใน ในแบบจำลองเหล่านั้น ราคาเท่ากับมูลค่าพื้นฐานบวกสัญญาณรบกวน และการเบี่ยงเบนขนาดใหญ่ต้องการแรงกระแทกจากภายนอกขนาดใหญ่ แต่ตลาดพังโดยไม่มีข่าว การพังในปี 1987, Flash Crash ปี 2010, เหตุการณ์เล็ก ๆ นับไม่ถ้วน: ราคาเคลื่อนไหวอย่างรุนแรงในขณะที่ปัจจัยพื้นฐานนิ่ง แบบจำลองดุลยภาพอธิบายสิ่งนี้โดยสมมติว่าเกิดแรงกระแทกที่ไม่มีใครระบุได้ แบบจำลองฝูงอธิบายว่ามันเป็นการเกิดขึ้น ซึ่งก็คือพฤติกรรมปกติของระบบของเอเจนต์ฮิวริสติกที่มีปฏิสัมพันธ์กัน

3.2 แบบจำลองที่ใช้เอเจนต์ (Agent-based models หรือ ABMs)

ABMs ทำให้สิ่งนี้เป็นรูปธรรม คุณสร้างตลาดจำลองที่มีเอเจนต์ที่หลากหลาย ให้แต่ละตัวมีกฎพฤติกรรมที่เรียบง่าย ปล่อยให้พวกมันเทรด และดูสิ่งที่เกิดขึ้นกับราคา การออกแบบที่มีอิทธิพลมากที่สุดคือแบบจำลอง Fundamentalist-Chartist (Brock และ Hommes, Lux และ Marchesi และคนอื่น ๆ)

  • Fundamentalists เชื่อว่าราคาจะกลับเข้าสู่มูลค่าพื้นฐาน พวกเขาซื้อเมื่อราคาต่ำกว่ามูลค่าและขายเมื่อสูงกว่า หากทำเพียงลำพัง พวกมันจะทำให้ตลาดมีเสถียรภาพ
  • Chartists (ผู้ตามแนวโน้ม) เชื่อว่าการเคลื่อนไหวล่าสุดจะดำเนินต่อไป พวกเขาซื้อเพราะราคากำลังสูงขึ้นและขายเพราะกำลังลดลง หากทำเพียงลำพัง พวกมันทำให้ตลาดไม่เสถียร

ส่วนผสมที่ชี้ขาดคือ การสลับ: เอเจนต์ไม่ได้ถูก鎖在ประเภทใดประเภทหนึ่ง พวกมันนำกลยุทธ์ที่ทำกำไรได้มากกว่าเมื่อเร็ว ๆ นี้มาใช้ และพวกมันรวมกลุ่มตามสิ่งที่เพื่อนบ้านกำลังทำ นี่คือกลไกการเลือกแบบไม่ต่อเนื่อง: สัดส่วนของ Chartists จะเพิ่มขึ้นเมื่อการเทรดตามแนวโน้มให้ผลตอบแทนที่ดีเมื่อเร็ว ๆ นี้ ลูปป้อนกลับเดียวนี้เพียงพอที่จะสร้างสวนสัตว์ทั้งหมดของข้อเท็จจริงที่จัดรูปแบบแล้ว (stylized facts) ที่ตลาดจริงแสดงและแบบจำลองดุลยภาพไม่แสดง

นี่คือการจำลอง Fundamentalist-Chartist ที่น้อยที่สุดแต่สมบูรณ์ในพื้นที่ราคาลอการิทึม พร้อมการสลับที่ขับเคลื่อนด้วยผลกำไร:

python
1import numpy as np
2
3rng = np.random.default_rng(4)
4T = 520
5log_fund = np.log(100.0) # มูลค่าพื้นฐานคงที่
6logp = [log_fund, log_fund] # ราคาล็อก ต้องการค่าช้าสองค่า
7frac_chartist = [0.5] # สัดส่วนประชากรที่เป็น Chartists
8beta = 6.0 # ความเข้มข้นของการเลือก (ความเร็วที่เอเจนต์สลับ)
9
10for t in range(1, T):
11 lp, lp1 = logp[-1], logp[-2]
12 dev = lp - log_fund # ค่าเบี่ยงเบนของราคาจากมูลค่าพื้นฐาน
13 mom = np.clip(lp - lp1, -0.2, 0.2) # โมเมนตัมล่าสุด (ผลตอบแทนล็อกครั้งล่าสุด)
14
15 # ความสามารถในการทำกำไรที่เกิดขึ้นจริงของแต่ละกฎเทียบกับการเคลื่อนไหวจริงครั้งล่าสุด
16 actual = mom
17 pi_c = np.tanh(60 * mom * actual) # Chartist ถูกต้องหากแนวโน้มดำเนินต่อไป
18 pi_f = np.tanh(60 * (-0.05 * dev) * actual) # Fundamentalist ถูกต้องหากราคากลับตัว
19
20 # การเลือกแบบไม่ต่อเนื่อง: เอเจนต์ไหลไปยังกฎที่ทำกำไรได้เมื่อเร็ว ๆ นี้ (logit)
21 ec, ef = np.exp(beta * pi_c), np.exp(beta * pi_f)
22 target = ec / (ec + ef)
23 target = np.clip(target + 1.8 * abs(mom), 0, 1) # การเคลื่อนไหวใหญ่ดึงดูดฝูงที่ไล่ตามแนวโน้ม
24
25 # ความเฉื่อยของการรวมกลุ่ม: ฝูงชนเปลี่ยนไปทีละน้อย ไม่ใช่ทันที
26 share = np.clip(0.55 * frac_chartist[-1] + 0.45 * target + rng.normal(0, 0.025), 0.02, 0.98)
27
28 # ผลกระทบต่อราคา: Chartists คาดการณ์โมเมนตัม, Fundamentalists ดึงกลับไปหามูลค่า
29 dl = share * 0.95 * mom + (1 - share) * (-0.05 * dev) + rng.normal(0, 0.014)
30 dl = np.clip(dl, -0.12, 0.12)
31
32 logp.append(lp + dl)
33 frac_chartist.append(share)
34
35price = np.exp(np.array(logp[1:]))

ไม่มีอะไรในโค้ดนี้ที่สั่งให้ตลาดสร้างฟองสบู่ ไม่มีตัวแปร "ภาวะตลาดพัง" แต่เมื่อรันมัน ฟองสบู่และการพังก็ปรากฏขึ้น และมันสอดคล้องกับการเพิ่มขึ้นของสัดส่วน Chartists: เมื่อการเทรดตามแนวโน้มเริ่มให้ผลตอบแทน ฝูงชนก็แห่กันเข้ามา ราคาแยกออกจากมูลค่าพื้นฐาน การแยกตัวนี้ทำให้ในที่สุดการกลับสู่ค่าเฉลี่ยมีกำไรอย่างท่วมท้น ฝูงชนกลับด้าน และฟองสบู่ก็ยุบตัว

zostaff - inline image

แผงบนคือราคาที่แกว่งรอบมูลค่าพื้นฐานคงที่ที่ 100 โดยมีฟองสบู่ไปถึง 120 และการพังไปถึง 80 แผงล่างคือสัดส่วน Chartists จุดสูงสุดในส่วนแบ่งการไล่ตามแนวโน้มของฝูงชนเกิดขึ้นก่อนและขับเคลื่อนจุดสูงสุดของราคา นี่คือพฤติกรรมตามฝูงที่ถูกทำให้เป็นกลไกมากกว่าอุปมา

3.3 ข้อเท็จจริงที่จัดรูปแบบแล้วที่ได้มาโดยไม่ต้องพยายาม

ผลตอบแทนทางการเงินจริงมีลายเซ็นทางสถิติที่ได้รับการบันทึกไว้อย่างดี ซึ่งแบบจำลองการเดินแบบสุ่มแบบเกาส์เซียนไม่สามารถสร้างขึ้นมาได้ แบบจำลองฝูงที่ใช้เอเจนต์สร้างมันขึ้นมาเอง โดยไม่มีสมมติฐานเพิ่มเติม:

  • หางหนา (Kurtosis เกิน) ผลตอบแทนที่รุนแรงพบได้บ่อยกว่าที่การแจกแจงแบบปกติทำนายไว้มาก เพราะการรวมกลุ่มทำให้เอเจนต์ซิงโครไนซ์และขยายการเคลื่อนไหว
  • การเกาะกลุ่มของความผันผวน การเคลื่อนไหวใหญ่ตามมาด้วยการเคลื่อนไหวใหญ่ เมื่อระบอบ Chartists ครอบงำ ความผันผวนจะสูงและคงอยู่ เมื่อ Fundamentalists ครอบงำ ตลาดจะสงบ การสลับสร้างการเกาะกลุ่ม
  • การไม่มีความสัมพันธ์อัตโนมัติเชิงเส้นในผลตอบแทน ขณะที่มีความสัมพันธ์อัตโนมัติที่แข็งแกร่งในค่าสัมบูรณ์ของผลตอบแทน ตลาดไม่สามารถคาดเดาทิศทางได้ แต่สามารถคาดเดาความปั่นป่วนได้สูง ซึ่งเป็นสิ่งที่ ABMs สร้างขึ้น

การที่แบบจำลองของเอเจนต์โง่ ๆ ที่มีปฏิสัมพันธ์กันสร้างลายเซ็นทางสถิติที่แม่นยำของตลาดจริง ในขณะที่แบบจำลองดุลยภาพที่สง่างามต้องการแรงกระแทกจากภายนอกมาเสริม เป็นหลักฐานที่แข็งแกร่งที่สุดว่ากรอบความคิดแบบฝูงจับภาพบางสิ่งที่เป็นจริงเกี่ยวกับวิธีที่ราคาถูกสร้างขึ้นจริง ๆ

ส่วนที่ 4: สถาปัตยกรรมอ้างอิง

หากคุณต้องการทำให้ทั้งหมดนี้เป็นจริง เครื่องมือการหาค่าเหมาะที่สุดและเลนส์การจำลองจะเข้ากันได้ในสแต็กเดียว แกนกลางของฝูงถือว่ากลยุทธ์เป็นอนุภาคและค้นหาพื้นที่กลยุทธ์ ตัวประเมินความเหมาะสมรันการทดสอบย้อนหลังแบบ Walk-Forward ประตูความเสี่ยงบังคับใช้ข้อจำกัดแข็งที่ไม่มีตัวหาค่าเหมาะที่สุดใดได้รับอนุญาตให้ละเมิด ACO จัดการการจัดเส้นทางการดำเนินการ และตัวจำลองที่ใช้เอเจนต์สามารถใช้ทั้งเพื่อทดสอบความเครียดของกลยุทธ์กับตลาดสังเคราะห์แต่สมจริง และเพื่อสร้างสถานการณ์ที่บันทึกประวัติศาสตร์ไม่เคยมี

zostaff - inline image

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

ส่วนที่ 5: ข้อจำกัดที่ซื่อสัตย์

วิธีการแบบฝูงไม่ใช่เวทมนตร์ และรูปแบบความล้มเหลวนั้นมีเฉพาะเจาะจง:

การโอเวอร์ฟิตติ้งคือความเสี่ยงหลัก ตัวหาค่าเหมาะที่สุดแบบกล่องดำทุกตัวคือเครื่องจักรสำหรับค้นหาชุดพารามิเตอร์ที่อธิบายตัวอย่างของคุณได้ดีที่สุด รวมถึงสัญญาณรบกวนของมันด้วย ยิ่งตัวหาค่าเหมาะที่สุดเร็วและมีพลังมากเท่าไหร่ มันก็ยิ่งอันตรายมากขึ้นเท่านั้น การวิเคราะห์แบบ Walk-Forward และวินัยนอกตัวอย่างเป็นสิ่งจำเป็น

ไม่มีหลักประกันความเหมาะสมที่สุด PSO และ ACO เป็นเมตาฮิวริสติก พวกมันมักจะหาคำตอบที่ยอดเยี่ยม พวกมันไม่พิสูจน์อะไรเลย สำหรับปัญหาที่นูนอย่างแท้จริง ให้ใช้ตัวแก้ปัญหาแบบนูนและรับค่าที่เหมาะสมที่สุดที่ได้รับการรับรอง ใช้ฝูงเมื่อโครงสร้างที่วิธีการคลาสสิกต้องการไม่มีอยู่เท่านั้น

ความไวต่อไฮเปอร์พารามิเตอร์ น้ำหนักความเฉื่อย, สัมประสิทธิ์การเร่งความเร็ว, ขนาดฝูง, อัตราการระเหย: สิ่งเหล่านี้มีความสำคัญ และการปรับจูนตัวปรับจูนก็เสี่ยงต่อการโอเวอร์ฟิตติ้งอีกชั้นหนึ่ง ค่าเริ่มต้นที่สมเหตุสมผล (ค่า constriction w=0.72, c1=c2=1.49 สำหรับ PSO) มีอยู่ด้วยเหตุผลที่ดี

ABMs ใช้อธิบาย ไม่ใช่ทำนาย แบบจำลองที่ใช้เอเจนต์สร้างพฤติกรรมเชิงคุณภาพของตลาดได้อย่างยอดเยี่ยม ทั้งฟองสบู่และหางหนา พวกมันไม่ได้บอกคุณว่าราคาจะเป็นอย่างไรในวันอังคารหน้า คุณค่าของพวกมันคือการเข้าใจกลไก, การทดสอบความเครียด, และการสร้างสถานการณ์ ไม่ใช่การพยากรณ์จุด

กับดักการสะท้อนกลับ เมื่อเงินทุนมากพอใช้กลยุทธ์ที่ถูกค้นพบโดยฝูงที่คล้ายกัน กลยุทธ์เหล่านั้นก็กลายเป็นส่วนหนึ่งของพลวัตของตลาดและกัดกร่อนความได้เปรียบของตัวเอง แผนที่เปลี่ยนแปลงอาณาเขต นี่ไม่ใช่ข้อบกพร่องของวิธีการ มันคือความจริงที่ลึกที่สุดที่กรอบความคิดแบบฝูงสอน คุณไม่ได้วิเคราะห์ฝูงจากภายนอก คุณคือเอเจนต์ภายในมัน และร่องรอยฟีโรโมนของคุณเปลี่ยนที่ที่ทุกคนอื่นจะไปต่อ

บทสรุป

สองครึ่งของบทความนี้เป็นแนวคิดเดียวที่มองจากสองมุม การหาค่าเหมาะที่สุดแบบฝูงใช้ได้กับปัญหาทางการเงินเพราะปัญหาพวกนั้นอาศัยอยู่บนภูมิประเทศที่น่าเกลียด, หลอกลวง, และไม่นูน และการค้นหาแบบสุ่มแบบกระจายอำนาจพร้อมแรงดึงดูดทางสังคมถูกสร้างขึ้นมาสำหรับภูมิประเทศเช่นนี้โดยเฉพาะ และเหตุผลที่ตลาดสร้างภูมิประเทศเช่นนี้ขึ้นมาก็คือตลาดนั้นเป็นฝูงเสียเอง: ประชากรจำนวนมหาศาลของเอเจนต์ที่เรียบง่าย, รวมกลุ่ม, และสลับ ซึ่งปฏิสัมพันธ์ของพวกมันก่อให้เกิดฟองสบู่, การพัง, และหางหนาที่ไม่มีแบบจำลองดุลยภาพใดตั้งใจไว้

การเข้าใจจุดที่สองทำให้คุณเก่งขึ้นในจุดแรก เมื่อคุณจำได้ว่าพื้นผิวที่คุณกำลังหาค่าเหมาะที่สุดนั้นถูกสร้างขึ้นโดยฝูง คุณจะหยุดเชื่อถือจุดที่เหมาะสมที่สุดเดียว คุณจะเคารพความไม่คงที่ คุณจะสร้างประตูความเสี่ยง และคุณจะไม่มีวันลืมว่าในวินาทีที่กลยุทธ์ของคุณเคลื่อนไหวขนาดจริง คุณได้หยุดเป็นผู้สังเกตการณ์ฝูงและกลายเป็นส่วนหนึ่งของมันแล้ว

**

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

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

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

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

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

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

ลอง Markdown เป็น 𝕏

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

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

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