วิธีที่อาณานิคมของเอเจนต์ธรรมดาที่ไร้ศูนย์กลางแก้ปัญหาที่คณิตศาสตร์แบบปิดทำไม่ได้ และเหตุผลที่ตลาดเองก็เป็นฝูงที่ใหญ่ที่สุดเท่าที่เคยสร้างมา
มีความเป็นคู่ที่แปลกประหลาดอยู่ใจกลางของการเงินเชิงปริมาณ ด้านหนึ่งคือความฝันของวิศวกร: ฟังก์ชันวัตถุประสงค์ที่สะอาด, เซตที่เป็นไปได้แบบนูน, คำตอบแบบปิดที่คุณสามารถพิสูจน์ได้ว่าดีที่สุด อีกด้านหนึ่งคือตลาดจริง: ไม่เป็นเชิงเส้น, ไม่คงที่, เต็มไปด้วยจุดต่ำสุดเฉพาะที่, หางหนา, การเปลี่ยนระบอบ, และลูปป้อนกลับที่การกระทำของคุณเองเปลี่ยนสิ่งที่คุณพยายามทำนาย
ปัญญาฝูง อยู่บนด้านที่สอง มันคือกลุ่มของวิธีการที่ยอมแพ้ต่อความสง่างามและการพิสูจน์ เพื่อแลกกับสิ่งที่ตลาดให้รางวัลจริง ๆ: ความสามารถในการค้นหาภูมิประเทศที่น่าเกลียด, มีมิติสูง, และหลอกลวง โดยไม่ติดกับดัก และทำได้ด้วยเอเจนต์ที่เรียบง่ายจนไม่มีตัวไหนเข้าใจปัญหาทั้งหมดเลย
บทความนี้ครอบคลุมทั้งสองครึ่งของเรื่อง ครึ่งแรกคือปัญญาฝูงในฐานะ ชุดเครื่องมือการหาค่าเหมาะที่สุด ที่คุณใช้กับปัญหาทางการเงิน: Particle Swarm Optimization สำหรับการปรับพอร์ตโฟลิโอและกลยุทธ์, Ant Colony Optimization สำหรับการจัดเส้นทางและการเลือกแบบเชิง組合 ครึ่งหลังคือแนวคิดที่ลึกกว่าและอึดอัดกว่า: ตลาด คือ ฝูง และแบบจำลองที่ใช้เอเจนต์ช่วยให้คุณจำลองฟองสบู่, ภาวะตลาดพัง, และพฤติกรรมตามฝูงที่เกิดขึ้น ซึ่งไม่มีแบบจำลองดุลยภาพใดสร้างขึ้นมาเองได้
มีคณิตศาสตร์, โค้ด, และแผนภาพตลอดทั้งเรื่อง ไม่มีอะไรที่คลุมเครือ
ทรัพยากรของฉัน:
ช่อง Telegram:
GitHub:
เทรดที่นี่:
https://polymarket.com/?r=zostaff
ส่วนที่ 0: "ปัญญาฝูง" แท้จริงแล้วคืออะไร
ฝูงคือประชากรของเอเจนต์ธรรมดาที่ปฏิบัติตามกฎท้องถิ่น โดยไม่มีผู้ควบคุมส่วนกลาง แต่ร่วมกันสร้างพฤติกรรมระดับโลกที่ชาญฉลาด ตัวอย่างมาตรฐานคือทางชีววิทยา: อาณานิคมมดที่ค้นหาเส้นทางที่สั้นที่สุดผ่านฟีโรโมน, ฝูงนกที่รักษาความเป็นหนึ่งเดียวผ่านกฎท้องถิ่นสามข้อ, อาณานิคมผึ้งที่จัดสรรแมลงหาอาหารไปยังแปลงดอกไม้
คุณสมบัติสามประการกำหนดกระบวนทัศน์นี้และอธิบายว่าทำไมมันถึงเหมาะกับการเงิน:
- การกระจายอำนาจ ไม่มีเอเจนต์ใดมีภาพรวมทั้งหมด แต่ละตัวดำเนินการโดยใช้ข้อมูลท้องถิ่นบวกกับสัญญาณที่แบ่งปันกันเล็กน้อย สิ่งนี้สะท้อนตลาดจริง ที่ไม่มีผู้เข้าร่วมคนไหนเห็น flow ของคำสั่งซื้อขายทั้งหมด
- การสำรวจแบบสุ่มพร้อมแรงดึงดูดทางสังคม เอเจนต์เคลื่อนที่แบบกึ่งสุ่ม แต่ถูกดึงไปยังที่ที่ฝูงพบคุณค่า ความสมดุลของการสำรวจและการใช้ประโยชน์นี้คือสิ่งที่คุณต้องการบนภูมิประเทศที่เต็มไปด้วยจุดที่เหมาะสมที่สุดเฉพาะที่ ซึ่งก็คือพื้นผิวผลตอบแทนที่ปรับด้วยความเสี่ยง
- การเกิดขึ้น พฤติกรรมที่น่าสนใจไม่ได้ถูกโปรแกรมไว้ในเอเจนต์ใด ๆ มันปรากฏที่ระดับประชากร ในการหาค่าเหมาะที่สุด นี่หมายถึงการหลุดจากกับดักที่วิธีการไล่ระดับตกเข้าไป ในการสร้างแบบจำลองตลาด มันหมายถึงฟองสบู่ที่ไม่มีเอเจนต์ "มีเหตุผล" ตัวใดตั้งใจสร้าง
ความแตกต่างกับวิธีการแบบคลาสสิกคือประเด็นสำคัญ การไล่ระดับต้องการฟังก์ชันวัตถุประสงค์ที่หาอนุพันธ์ได้และหาค่าต่ำสุดที่ใกล้ที่สุด ซึ่งมักเป็นค่าที่ผิด การหาค่าเหมาะที่สุดแบบนูนต้องการคุณสมบัตินูน ซึ่งวัตถุประสงค์ทางการเงินแทบไม่มีเมื่อคุณเพิ่มต้นทุนธุรกรรม, ข้อจำกัดด้านจำนวนหลักทรัพย์, หรือข้อจำกัดด้านการลดลงของเงินทุน วิธีการแบบฝูงไม่ต้องการสิ่งเหล่านี้เลย พวกมันถือว่าฟังก์ชันวัตถุประสงค์เป็นกล่องดำ: ป้อนตัวเลือกเข้าไป, ได้ตัวเลขกลับมา, เท่านั้นเอง
ส่วนที่ 1: Particle Swarm Optimization
1.1 กลไก
Particle Swarm Optimization (PSO) ถูกนำเสนอโดย Kennedy และ Eberhart ในปี 1995 โดยจำลองฝูงเป็นชุดของอนุภาคที่บินผ่านพื้นที่ค้นหา อนุภาค i แต่ละตัวมีตำแหน่ง x_i (คำตอบที่เป็นไปได้) และความเร็ว v_i มันจดจำตำแหน่งที่ดีที่สุดที่เคยไปเยือน (pbest_i) และรู้ตำแหน่งที่ดีที่สุดที่อนุภาคใด ๆ เคยพบ (g หรือ global best)
ในแต่ละขั้นตอน อนุภาคทุกตัวจะอัปเดตความเร็วของมันเป็นผลรวมถ่วงน้ำหนักของแรงขับสามอย่าง:
1v_i(t+1) = w · v_i(t) ความเฉื่อย: ทำต่อไปในสิ่งที่กำลังทำ2 + c1 · r1 · (pbest_i − x_i(t)) ความรู้ความเข้าใจ: กลับไปหาค่าที่ดีที่สุดของตัวเอง3 + c2 · r2 · (g − x_i(t)) ทางสังคม: เคลื่อนที่ไปหาค่าที่ดีที่สุดของฝูง45x_i(t+1) = x_i(t) + v_i(t+1)
โดยที่ w คือน้ำหนักความเฉื่อย, c1 และ c2 คือสัมประสิทธิ์การเร่งความเร็ว, และ r1, r2 คือตัวเลขสุ่มแบบสม่ำเสมอใหม่ในช่วง [0,1] ที่สุ่มอย่างอิสระต่อมิติ ความสุ่มนั้นคือเครื่องยนต์ของการสำรวจ หากไม่มีมัน ฝูงจะยุบตัวอย่างแน่นอน
แรงสามอย่างนี้คุ้มค่าที่จะมองเห็นในเชิงเรขาคณิต อนุภาคเดียวถูกผลักพร้อมกันโดยโมเมนตัมของตัวเอง ถูกดึงกลับไปยังค่าที่ดีที่สุดส่วนตัว และถูกดึงไปยังค่าที่ดีที่สุดระดับโลก เวกเตอร์ผลลัพธ์คือที่ที่มันจะไปจริงในครั้งต่อไป

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

วิธีการไล่ระดับที่โยนลงบนพื้นผิวนั้นจะตายในแอ่งท้องถิ่นแรกที่มันแตะ ฝูงไม่เป็นเช่นนั้น
1.3 การประยุกต์ใช้: การหาค่าเหมาะที่สุดของพอร์ตโฟลิโอภายใต้ข้อจำกัดที่สมจริง
การหาค่าเหมาะที่สุดแบบ Mean-Variance ของ Markowitz มีคำตอบแบบปิด ทันทีที่คุณเพิ่มอะไรก็ตามที่สมจริง มันก็ไม่มีอีกต่อไป ข้อจำกัดด้านจำนวนหลักทรัพย์ ("ถืออย่างมาก 20 ตัว"), ขนาดตำแหน่งขั้นต่ำ, ค่าปรับต้นทุนธุรกรรม, และข้อจำกัดการหมุนเวียน ล้วนทำลายคุณสมบัตินูนและความเป็นจำนวนเต็ม นี่คือจุดที่ PSO แสดงความสามารถของมันอย่างแท้จริง
เราต้องการเพิ่ม Sharpe ratio ของพอร์ตโฟลิโอที่ถือเฉพาะสถานะซื้อให้สูงสุด แต่ละอนุภาคคือเวกเตอร์น้ำหนัก เราซ่อมแซมมันให้เป็นซิมเพล็กซ์ (ไม่เป็นลบ, รวมกันได้หนึ่ง) และประเมินผล
1import numpy as np23rng = 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 # อัตราปลอดความเสี่ยง910def neg_sharpe(w):11 """วัตถุประสงค์: Negative Sharpe (เราต้องการย่อให้เล็กสุด) ซ่อมแซมน้ำหนักให้เป็นซิมเพล็กซ์"""12 w = np.clip(w, 0, None) # ถือเฉพาะสถานะซื้อ13 s = w.sum()14 if s == 0:15 return 1e916 w = w / s # รวมกันได้หนึ่ง17 ret = w @ mu18 vol = np.sqrt(w @ cov @ w)19 return -(ret - rf) / (vol + 1e-9)2021# ---- PSO ----22P, ITERS = 30, 10023w_inertia, c1, c2 = 0.72, 1.49, 1.492425X = 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()3031for _ 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_val37 pbest[improved] = X[improved]38 pbest_val[improved] = val[improved]39 g = pbest[pbest_val.argmin()].copy()4041w_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 ถือว่าการทดสอบย้อนหลังทั้งหมดเป็นวัตถุประสงค์แบบกล่องดำและค้นหาพื้นที่พารามิเตอร์โดยตรง
มันเทียบกับทางเลือกอื่นได้อย่างไร? อัลกอริทึมทางพันธุกรรม (การครอสโอเวอร์และการกลายพันธุ์แบบวิวัฒนาการ) เป็นคู่แข่งที่ใกล้เคียงที่สุดและมักจะเทียบเคียงได้ การค้นหาแบบสุ่มเป็นพื้นฐานที่ซื่อสัตย์ซึ่งที่น่าแปลกคือมักจะเอาชนะการค้นหาแบบกริด บนวัตถุประสงค์การปรับจูนกลยุทธ์ทั่วไป ฝูงมักจะลู่เข้าเร็วกว่าและไปยังจุดที่เหมาะสมที่สุดที่ดีกว่าทั้งสองวิธี เนื่องจากเทอมแรงดึงดูดทางสังคมจะรวมการประเมินไว้ในที่ที่มันสำคัญ แทนที่จะสุ่มตัวอย่างแบบไม่รู้ทิศทาง

ข้อควรระวังที่นี่เป็นเรื่องจริงและผู้ปฏิบัติต้องซึมซับมัน: การลู่เข้าที่เร็วขึ้นบนวัตถุประสงค์การทดสอบย้อนหลังคือการลู่เข้าที่เร็วขึ้นสู่ การโอเวอร์ฟิตติ้ง PSO จะค้นหาชุดพารามิเตอร์ที่อธิบายสัญญาณรบกวนในตัวอย่างประวัติศาสตร์ของคุณได้อย่างสมบูรณ์แบบอย่างมีความสุข การตรวจสอบความถูกต้องแบบ Walk-Forward, การกันข้อมูลไว้นอกตัวอย่าง, และการลงโทษความซับซ้อนของพารามิเตอร์ไม่ใช่เครื่องปรุงแต่งที่ไม่จำเป็น มันคือความแตกต่างระหว่างสิ่งประดิษฐ์จากการวิจัยและกลยุทธ์ที่อยู่รอดเมื่อสัมผัสกับตลาดจริง
ส่วนที่ 2: Ant Colony Optimization
2.1 กลไก
Ant Colony Optimization (ACO) โดย Dorigo ในช่วงต้นทศวรรษ 1990 โจมตีปัญหาเชิง组合ซึ่งคำตอบคือเส้นทางหรือการเลือกแบบไม่ต่อเนื่อง มดจริงหาเส้นทางสั้นโดยการวางฟีโรโมนขณะที่พวกมันเดิน เส้นทางที่สั้นกว่าจะถูกเดินผ่านบ่อยครั้งกว่าต่อหน่วยเวลา, สะสมฟีโรโมนมากขึ้น, และดึงดูดมดมากขึ้น ในลูปป้อนกลับเชิงบวก ที่สำคัญ ฟีโรโมนจะระเหย ซึ่งช่วยให้อาณานิคมลืมเส้นทางที่เก่าและปรับตัวเมื่อสภาพแวดล้อมเปลี่ยนแปลง
มดเทียมสร้างคำตอบทีละขั้นตอนบนกราฟ ที่โหนด i มดจะเลือกโหนด j ถัดไปโดยความน่าจะเป็น โดยมีอคติจากฟีโรโมน tau_ij บนขอบนั้นและความน่าดึงดูดตามฮิวริสติก eta_ij:
1(tau_ij)^alpha · (eta_ij)^beta2P(i -> j) = ----------------------------------------3 ผลรวมของ k ที่อนุญาตของ (tau_ik)^alpha · (eta_ik)^beta
alpha ควบคุมว่ามดเชื่อถือฟีโรโมนที่สะสมไว้มากแค่ไหน (การใช้ประโยชน์จากความทรงจำร่วม); beta ควบคุมว่าพวกมันเชื่อถือฮิวริสติกทันทีมากแค่ไหน (คุณภาพท้องถิ่นแบบละโมบ) หลังจากมดทุกตัวเสร็จสิ้น ฟีโรโมนจะถูกอัปเดต:
1tau_ij <- (1 - rho) · tau_ij + ผลรวมของมดของ delta_tau_ij
rho คืออัตราการระเหย การสะสม delta_tau_ij จะมากกว่าสำหรับมดที่สร้างคำตอบที่ดีกว่า ดังนั้นขอบที่ดีจะถูกเสริม การระเหยป้องกันการติดอยู่ในกับดักก่อนเวลาอันควร และเป็นสิ่งที่ทำให้ ACO ปรับตัวได้กับปัญหาที่ไม่คงที่ ซึ่งก็คือตลาด

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 ที่น้อยที่สุดแต่สมบูรณ์ในพื้นที่ราคาลอการิทึม พร้อมการสลับที่ขับเคลื่อนด้วยผลกำไร:
1import numpy as np23rng = np.random.default_rng(4)4T = 5205log_fund = np.log(100.0) # มูลค่าพื้นฐานคงที่6logp = [log_fund, log_fund] # ราคาล็อก ต้องการค่าช้าสองค่า7frac_chartist = [0.5] # สัดส่วนประชากรที่เป็น Chartists8beta = 6.0 # ความเข้มข้นของการเลือก (ความเร็วที่เอเจนต์สลับ)910for 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) # โมเมนตัมล่าสุด (ผลตอบแทนล็อกครั้งล่าสุด)1415 # ความสามารถในการทำกำไรที่เกิดขึ้นจริงของแต่ละกฎเทียบกับการเคลื่อนไหวจริงครั้งล่าสุด16 actual = mom17 pi_c = np.tanh(60 * mom * actual) # Chartist ถูกต้องหากแนวโน้มดำเนินต่อไป18 pi_f = np.tanh(60 * (-0.05 * dev) * actual) # Fundamentalist ถูกต้องหากราคากลับตัว1920 # การเลือกแบบไม่ต่อเนื่อง: เอเจนต์ไหลไปยังกฎที่ทำกำไรได้เมื่อเร็ว ๆ นี้ (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) # การเคลื่อนไหวใหญ่ดึงดูดฝูงที่ไล่ตามแนวโน้ม2425 # ความเฉื่อยของการรวมกลุ่ม: ฝูงชนเปลี่ยนไปทีละน้อย ไม่ใช่ทันที26 share = np.clip(0.55 * frac_chartist[-1] + 0.45 * target + rng.normal(0, 0.025), 0.02, 0.98)2728 # ผลกระทบต่อราคา: 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)3132 logp.append(lp + dl)33 frac_chartist.append(share)3435price = np.exp(np.array(logp[1:]))
ไม่มีอะไรในโค้ดนี้ที่สั่งให้ตลาดสร้างฟองสบู่ ไม่มีตัวแปร "ภาวะตลาดพัง" แต่เมื่อรันมัน ฟองสบู่และการพังก็ปรากฏขึ้น และมันสอดคล้องกับการเพิ่มขึ้นของสัดส่วน Chartists: เมื่อการเทรดตามแนวโน้มเริ่มให้ผลตอบแทน ฝูงชนก็แห่กันเข้ามา ราคาแยกออกจากมูลค่าพื้นฐาน การแยกตัวนี้ทำให้ในที่สุดการกลับสู่ค่าเฉลี่ยมีกำไรอย่างท่วมท้น ฝูงชนกลับด้าน และฟองสบู่ก็ยุบตัว

แผงบนคือราคาที่แกว่งรอบมูลค่าพื้นฐานคงที่ที่ 100 โดยมีฟองสบู่ไปถึง 120 และการพังไปถึง 80 แผงล่างคือสัดส่วน Chartists จุดสูงสุดในส่วนแบ่งการไล่ตามแนวโน้มของฝูงชนเกิดขึ้นก่อนและขับเคลื่อนจุดสูงสุดของราคา นี่คือพฤติกรรมตามฝูงที่ถูกทำให้เป็นกลไกมากกว่าอุปมา
3.3 ข้อเท็จจริงที่จัดรูปแบบแล้วที่ได้มาโดยไม่ต้องพยายาม
ผลตอบแทนทางการเงินจริงมีลายเซ็นทางสถิติที่ได้รับการบันทึกไว้อย่างดี ซึ่งแบบจำลองการเดินแบบสุ่มแบบเกาส์เซียนไม่สามารถสร้างขึ้นมาได้ แบบจำลองฝูงที่ใช้เอเจนต์สร้างมันขึ้นมาเอง โดยไม่มีสมมติฐานเพิ่มเติม:
- หางหนา (Kurtosis เกิน) ผลตอบแทนที่รุนแรงพบได้บ่อยกว่าที่การแจกแจงแบบปกติทำนายไว้มาก เพราะการรวมกลุ่มทำให้เอเจนต์ซิงโครไนซ์และขยายการเคลื่อนไหว
- การเกาะกลุ่มของความผันผวน การเคลื่อนไหวใหญ่ตามมาด้วยการเคลื่อนไหวใหญ่ เมื่อระบอบ Chartists ครอบงำ ความผันผวนจะสูงและคงอยู่ เมื่อ Fundamentalists ครอบงำ ตลาดจะสงบ การสลับสร้างการเกาะกลุ่ม
- การไม่มีความสัมพันธ์อัตโนมัติเชิงเส้นในผลตอบแทน ขณะที่มีความสัมพันธ์อัตโนมัติที่แข็งแกร่งในค่าสัมบูรณ์ของผลตอบแทน ตลาดไม่สามารถคาดเดาทิศทางได้ แต่สามารถคาดเดาความปั่นป่วนได้สูง ซึ่งเป็นสิ่งที่ ABMs สร้างขึ้น
การที่แบบจำลองของเอเจนต์โง่ ๆ ที่มีปฏิสัมพันธ์กันสร้างลายเซ็นทางสถิติที่แม่นยำของตลาดจริง ในขณะที่แบบจำลองดุลยภาพที่สง่างามต้องการแรงกระแทกจากภายนอกมาเสริม เป็นหลักฐานที่แข็งแกร่งที่สุดว่ากรอบความคิดแบบฝูงจับภาพบางสิ่งที่เป็นจริงเกี่ยวกับวิธีที่ราคาถูกสร้างขึ้นจริง ๆ
ส่วนที่ 4: สถาปัตยกรรมอ้างอิง
หากคุณต้องการทำให้ทั้งหมดนี้เป็นจริง เครื่องมือการหาค่าเหมาะที่สุดและเลนส์การจำลองจะเข้ากันได้ในสแต็กเดียว แกนกลางของฝูงถือว่ากลยุทธ์เป็นอนุภาคและค้นหาพื้นที่กลยุทธ์ ตัวประเมินความเหมาะสมรันการทดสอบย้อนหลังแบบ Walk-Forward ประตูความเสี่ยงบังคับใช้ข้อจำกัดแข็งที่ไม่มีตัวหาค่าเหมาะที่สุดใดได้รับอนุญาตให้ละเมิด ACO จัดการการจัดเส้นทางการดำเนินการ และตัวจำลองที่ใช้เอเจนต์สามารถใช้ทั้งเพื่อทดสอบความเครียดของกลยุทธ์กับตลาดสังเคราะห์แต่สมจริง และเพื่อสร้างสถานการณ์ที่บันทึกประวัติศาสตร์ไม่เคยมี

ลูปป้อนกลับคือจิตวิญญาณของการออกแบบ ความเหมาะสมและความเสี่ยงปรับเปลี่ยนฝูงอย่างต่อเนื่อง เช่นเดียวกับในธรรมชาติที่สภาพแวดล้อมปรับเปลี่ยนอาณานิคมอย่างต่อเนื่อง ประตูความเสี่ยงเป็นสิ่งที่ต่อรองไม่ได้และตั้งอยู่นอกการหาค่าเหมาะที่สุด: ฝูงที่ปรับ Sharpe ให้เหมาะสมที่สุดจะทำตำแหน่งที่เหมาะสมที่สุดในการทดสอบย้อนหลังและเป็นหายนะในเหตุการณ์หาง ประตูคือสิ่งที่หยุดมัน
ส่วนที่ 5: ข้อจำกัดที่ซื่อสัตย์
วิธีการแบบฝูงไม่ใช่เวทมนตร์ และรูปแบบความล้มเหลวนั้นมีเฉพาะเจาะจง:
การโอเวอร์ฟิตติ้งคือความเสี่ยงหลัก ตัวหาค่าเหมาะที่สุดแบบกล่องดำทุกตัวคือเครื่องจักรสำหรับค้นหาชุดพารามิเตอร์ที่อธิบายตัวอย่างของคุณได้ดีที่สุด รวมถึงสัญญาณรบกวนของมันด้วย ยิ่งตัวหาค่าเหมาะที่สุดเร็วและมีพลังมากเท่าไหร่ มันก็ยิ่งอันตรายมากขึ้นเท่านั้น การวิเคราะห์แบบ Walk-Forward และวินัยนอกตัวอย่างเป็นสิ่งจำเป็น
ไม่มีหลักประกันความเหมาะสมที่สุด PSO และ ACO เป็นเมตาฮิวริสติก พวกมันมักจะหาคำตอบที่ยอดเยี่ยม พวกมันไม่พิสูจน์อะไรเลย สำหรับปัญหาที่นูนอย่างแท้จริง ให้ใช้ตัวแก้ปัญหาแบบนูนและรับค่าที่เหมาะสมที่สุดที่ได้รับการรับรอง ใช้ฝูงเมื่อโครงสร้างที่วิธีการคลาสสิกต้องการไม่มีอยู่เท่านั้น
ความไวต่อไฮเปอร์พารามิเตอร์ น้ำหนักความเฉื่อย, สัมประสิทธิ์การเร่งความเร็ว, ขนาดฝูง, อัตราการระเหย: สิ่งเหล่านี้มีความสำคัญ และการปรับจูนตัวปรับจูนก็เสี่ยงต่อการโอเวอร์ฟิตติ้งอีกชั้นหนึ่ง ค่าเริ่มต้นที่สมเหตุสมผล (ค่า constriction w=0.72, c1=c2=1.49 สำหรับ PSO) มีอยู่ด้วยเหตุผลที่ดี
ABMs ใช้อธิบาย ไม่ใช่ทำนาย แบบจำลองที่ใช้เอเจนต์สร้างพฤติกรรมเชิงคุณภาพของตลาดได้อย่างยอดเยี่ยม ทั้งฟองสบู่และหางหนา พวกมันไม่ได้บอกคุณว่าราคาจะเป็นอย่างไรในวันอังคารหน้า คุณค่าของพวกมันคือการเข้าใจกลไก, การทดสอบความเครียด, และการสร้างสถานการณ์ ไม่ใช่การพยากรณ์จุด
กับดักการสะท้อนกลับ เมื่อเงินทุนมากพอใช้กลยุทธ์ที่ถูกค้นพบโดยฝูงที่คล้ายกัน กลยุทธ์เหล่านั้นก็กลายเป็นส่วนหนึ่งของพลวัตของตลาดและกัดกร่อนความได้เปรียบของตัวเอง แผนที่เปลี่ยนแปลงอาณาเขต นี่ไม่ใช่ข้อบกพร่องของวิธีการ มันคือความจริงที่ลึกที่สุดที่กรอบความคิดแบบฝูงสอน คุณไม่ได้วิเคราะห์ฝูงจากภายนอก คุณคือเอเจนต์ภายในมัน และร่องรอยฟีโรโมนของคุณเปลี่ยนที่ที่ทุกคนอื่นจะไปต่อ
บทสรุป
สองครึ่งของบทความนี้เป็นแนวคิดเดียวที่มองจากสองมุม การหาค่าเหมาะที่สุดแบบฝูงใช้ได้กับปัญหาทางการเงินเพราะปัญหาพวกนั้นอาศัยอยู่บนภูมิประเทศที่น่าเกลียด, หลอกลวง, และไม่นูน และการค้นหาแบบสุ่มแบบกระจายอำนาจพร้อมแรงดึงดูดทางสังคมถูกสร้างขึ้นมาสำหรับภูมิประเทศเช่นนี้โดยเฉพาะ และเหตุผลที่ตลาดสร้างภูมิประเทศเช่นนี้ขึ้นมาก็คือตลาดนั้นเป็นฝูงเสียเอง: ประชากรจำนวนมหาศาลของเอเจนต์ที่เรียบง่าย, รวมกลุ่ม, และสลับ ซึ่งปฏิสัมพันธ์ของพวกมันก่อให้เกิดฟองสบู่, การพัง, และหางหนาที่ไม่มีแบบจำลองดุลยภาพใดตั้งใจไว้
การเข้าใจจุดที่สองทำให้คุณเก่งขึ้นในจุดแรก เมื่อคุณจำได้ว่าพื้นผิวที่คุณกำลังหาค่าเหมาะที่สุดนั้นถูกสร้างขึ้นโดยฝูง คุณจะหยุดเชื่อถือจุดที่เหมาะสมที่สุดเดียว คุณจะเคารพความไม่คงที่ คุณจะสร้างประตูความเสี่ยง และคุณจะไม่มีวันลืมว่าในวินาทีที่กลยุทธ์ของคุณเคลื่อนไหวขนาดจริง คุณได้หยุดเป็นผู้สังเกตการณ์ฝูงและกลายเป็นส่วนหนึ่งของมันแล้ว
**





![สูญเงิน 6 ล้านเพราะความไม่รู้: คำถามเดียวที่แยก 'เหยื่อ' ออกจาก 'ลูกค้าที่น่าเกรงขาม' ในวงการอสังหาฯ [พร้อมตัวอย่างจริง]](/cdn-cgi/image/width=1920,quality=90,format=auto,metadata=none/https%3A%2F%2Fcms-assets.youmind.com%2Fmedia%2F1783878130911_13t77j_HM6aCr4b0AAhope.jpg)