กลยุทธ์ Equal weight ดีกว่าการทำ Optimization อย่างไร
กลยุทธ์การจัดพอร์ตแบบถ่วงน้ำหนักเท่ากันให้ผลตอบแทนดีกว่าการปรับสัดส่วนเมื่อชุดข้อมูลมีระยะเวลาสั้น การจำลองด้วย Python แสดงให้เห็นว่าประสิทธิภาพจะเปลี่ยนไปเมื่อขนาดข้อมูลเพิ่มขึ้น
กลยุทธ์การจัดพอร์ตแบบถ่วงน้ำหนักเท่ากัน (Equal weight) ให้ผลตอบแทนเหนือกว่าการจัดพอร์ตแบบปรับสัดส่วนให้เหมาะสม (Optimized position sizing) ในกรณีที่ชุดข้อมูลมีระยะเวลาสั้นเกินกว่าจะระบุผลตอบแทนที่คาดหวังได้อย่างแม่นยำ ซึ่งในความเป็นจริงแล้ว ชุดข้อมูลระยะสั้นถือเป็นกรณีปกติมากกว่าจะเป็นข้อยกเว้น การใช้เครื่องมือปรับสัดส่วนพอร์ต (Optimizer) คือการนำหลักคณิตศาสตร์ที่ถูกต้องไปใช้กับข้อมูลนำเข้าที่ไม่มีใครสามารถวัดค่าได้อย่างแม่นยำ ในขณะที่พอร์ตแบบหนึ่งส่วนต่อจำนวนสินทรัพย์ (1/N) หรือการถ่วงน้ำหนักเท่ากันนั้น ไม่จำเป็นต้องอาศัยการประมาณการใด ๆ เลย ซึ่งเป็นเหตุผลว่าทำไมกลยุทธ์นี้จึงยังคงมีประสิทธิภาพในยามที่การประมาณการต่าง ๆ มีความคลาดเคลื่อนสูง
การจัดพอร์ตแบบถ่วงน้ำหนักเท่ากัน (Equal weight) ให้ผลตอบแทนดีกว่าการปรับพอร์ตให้เหมาะสม (Optimization) จริงหรือ
คำตอบคือจริงภายใต้เงื่อนไขเฉพาะอย่างหนึ่ง เรามาพิจารณาแต่ละเงื่อนไขกัน การจัดพอร์ตแบบถ่วงน้ำหนักเท่ากัน หรือ 1/N คือการแบ่งเงินลงทุนในสัดส่วนที่เท่ากันใน N สินทรัพย์ โดยไม่จำเป็นต้องอาศัยการคาดการณ์ใดๆ ทั้งสิ้น ส่วนการปรับพอร์ตแบบ Mean variance optimization คือการคำนวณหาน้ำหนักที่ให้ผลตอบแทนคาดหวังต่อหน่วยความผันผวนที่ประเมินไว้ได้ดีที่สุด ขณะที่ Kelly criterion คือการหาน้ำหนักที่ทำให้การเติบโตแบบทบต้นในระยะยาวสูงสุด ซึ่งในสินทรัพย์ที่ไม่มีความสัมพันธ์กัน ผลลัพธ์จะลดทอนลงเหลือเพียงน้ำหนักที่แปรผันตรงกับผลตอบแทนส่วนเกินคาดหวังของสินทรัพย์นั้นหารด้วยความแปรปรวน คู่มือ การกำหนดขนาดสถานะด้วย Kelly criterion ของเราได้อธิบายสูตรดังกล่าวไว้อย่างละเอียด
โมเดลการปรับพอร์ตทั้งสองแบบต้องการข้อมูลนำเข้าชุดเดียวกัน นั่นคือผลตอบแทนคาดหวังต่อสินทรัพย์ ซึ่งเป็นตัวแปรที่การสุ่มตัวอย่างประเมินค่าได้แย่ที่สุด ความผันผวนสามารถวัดได้จากช่วงเวลาสั้นๆ ด้วยความแม่นยำที่ยอมรับได้ แต่ค่าเฉลี่ยผลตอบแทนทำไม่ได้ และช่องว่างระหว่างค่าทั้งสองนั้นกว้างพอที่จะสังเกตเห็นได้ในประวัติราคาใดๆ ตารางด้านล่างนี้คัดเลือกหุ้นที่มีการถือครองอย่างแพร่หลายหกตัว โดยวัดผลรายปีปฏิทินตั้งแต่ปี 2015 ถึง 2024 แยกกันในแต่ละปี และรายงานความแตกต่างระหว่างค่าประมาณการสูงสุดและต่ำสุดในแต่ละปี โดยทำการวัดสองครั้งต่อหุ้นหนึ่งตัว คือครั้งแรกสำหรับผลตอบแทนรายวันเฉลี่ยแบบปรับเป็นรายปี และครั้งที่สองสำหรับความผันผวนแบบปรับเป็นรายปี
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND date >= '2015-01-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
yearly AS
(
SELECT
ticker,
toYear(date) AS yr,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM rets
WHERE isFinite(ret)
GROUP BY ticker, yr
HAVING count() >= 200
)
SELECT
ticker,
round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,
round(max(vol_pct) - min(vol_pct), 1) AS vol_estimate_range_pct
FROM yearly
GROUP BY ticker
ORDER BY mean_estimate_range_pct DESCสำหรับ NVDA ค่าประมาณการผลตอบแทนเฉลี่ยรายปีมีความแตกต่างกันถึง 184.7 จุดเปอร์เซ็นต์ตลอดช่วงสิบปีที่ผ่านมา เมื่อเทียบกับช่วงความกว้างเพียง 28.6 จุดในค่าประมาณการความผันผวนของหุ้นตัวเดียวกันในช่วงเวลาเดียวกัน หุ้นที่มีความเสถียรที่สุดในกลุ่มอย่าง KO ยังคงมีการเปลี่ยนแปลงของค่าประมาณการผลตอบแทนเฉลี่ยรายปีถึง 23.9 จุด กลยุทธ์ใดก็ตามที่นำผลตอบแทนเฉลี่ยของปีที่แล้วไปป้อนให้โมเดลปรับพอร์ตเพื่อใช้เป็นผลตอบแทนคาดหวังของปีนี้ เท่ากับเป็นการป้อนตัวเลขที่มีความคลาดเคลื่อนสูงมากเข้าไปในระบบ
ต้องใช้ข้อมูลย้อนหลังนานเท่าใดจึงจะประมาณการผลตอบแทนที่คาดหวังได้
ค่าความคลาดเคลื่อนมาตรฐาน (standard error) ของค่าเฉลี่ยผลตอบแทนที่ประมาณการได้ คือค่าความผันผวนของสินทรัพย์หารด้วยรากที่สองของระยะเวลาของกลุ่มตัวอย่างในหน่วยปี โดยต้องนับเป็นปีไม่ใช่จำนวนครั้งที่เก็บข้อมูล การเก็บข้อมูลสิบสองเดือนเท่าเดิมโดยเปลี่ยนจากรายวันเป็นรายชั่วโมงไม่ได้ช่วยเพิ่มความแม่นยำ หากนำสินทรัพย์ที่มีความผันผวนร้อยละ 20 มาเข้าสูตรนี้ ข้อมูลย้อนหลังหนึ่งปีจะให้ค่าความคลาดเคลื่อนมาตรฐานที่ 20 จุดเปอร์เซ็นต์ต่อปี และหากใช้ข้อมูลสี่ปี ค่านี้จะลดลงครึ่งหนึ่งเหลือ 10 จุด การจะลดค่าความคลาดเคลื่อนให้เหลือเพียงหนึ่งจุด ซึ่งเป็นระดับความแม่นยำที่ต้องการก่อนจะจัดอันดับสินทรัพย์สองตัวที่มีค่าเฉลี่ยจริงต่างกันสองจุดนั้น ต้องใช้ข้อมูลย้อนหลังยาวนานถึงสี่ศตวรรษ
ในกรณีของความผันผวนนั้นต่างออกไป ความแม่นยำจะเพิ่มขึ้นตามจำนวนครั้งที่เก็บข้อมูลมากกว่าระยะเวลาตามปฏิทิน ดังนั้นข้อมูลรายวันเพียงไม่กี่เดือนก็เพียงพอที่จะทำให้ค่าความผันผวนอยู่ในระดับที่ใกล้เคียงความจริง ตารางด้านล่างนี้แบ่งผลตอบแทนรายวันของกองทุนดัชนีแห่งหนึ่งในช่วงยี่สิบปีออกเป็นบล็อกที่มีความยาวคงที่โดยไม่ซ้อนทับกัน จากนั้นคำนวณค่าประมาณการทั้งสองค่าในทุกบล็อก และรายงานว่าค่าประมาณการเหล่านั้นกระจายตัวห่างกันเพียงใดในแต่ละบล็อก
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH prices AS
(
SELECT
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2005-01-01'
AND date < '2025-01-01'
GROUP BY date
),
rets AS
(
SELECT
date,
c / lagInFrame(c, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
numbered AS
(
SELECT
ret,
row_number() OVER (ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
),
sweep AS
(
SELECT
arrayJoin([21, 63, 126, 252, 504]) AS n,
i,
ret
FROM numbered
),
blocks AS
(
SELECT
n,
intDiv(i - 1, n) AS blk,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM sweep
GROUP BY n, blk
HAVING count() = n
)
SELECT
concat(toString(n), ' sessions') AS sample_length,
round(stddevPop(mean_pct), 1) AS mean_estimate_spread_pct,
round(stddevPop(vol_pct), 1) AS vol_estimate_spread_pct,
count() AS window_count
FROM blocks
GROUP BY n
ORDER BY n ASCที่บล็อกขนาด 21 sessions ค่าประมาณการของค่าเฉลี่ยมีการกระจายตัวอยู่ที่ 53.7 จุดเปอร์เซ็นต์ เทียบกับ 10.9 จุดสำหรับค่าประมาณการความผันผวนที่วัดจากบล็อกเดียวกัน หากขยายขนาดบล็อกเป็น 504 sessions ค่าการกระจายตัวของค่าเฉลี่ยจะแคบลงเหลือ 10.6 จุด โดยค่านี้จะลดลงตามรากที่สอง กล่าวคือ การลดค่าความคลาดเคลื่อนลงครึ่งหนึ่งต้องใช้ข้อมูลเพิ่มขึ้นถึงสี่เท่า
แบบจำลองที่กำหนดค่าเริ่มต้นซึ่งคุณสามารถทดสอบได้ด้วยตนเอง
ไม่มีสิ่งใดพิสูจน์ได้ว่าความคลาดเคลื่อนในการประมาณการนั้นมีนัยสำคัญเพียงพอที่จะทำให้กลยุทธ์ 1/N เป็นผู้ชนะ แต่สิ่งนี้พิสูจน์ได้ สูตรนี้ต้องการเพียงการติดตั้ง Python เท่านั้น ไม่จำเป็นต้องมีไฟล์ข้อมูล ไม่ต้องดาวน์โหลด และไม่ต้องใช้แพ็กเกจจากบุคคลที่สาม แบบจำลองจะสุ่มผลตอบแทนขึ้นมาเองจากพารามิเตอร์ที่คุณเลือก ดังนั้นจึงทราบคำตอบที่แท้จริงและสามารถให้คะแนนการจัดสรรพอร์ตทั้งสองแบบเทียบกับคำตอบนั้นได้
- นำเข้าโมดูลสองตัวคือ
import randomและimport statisticsรวมถึงfrom math import logกำหนดค่า seed ในบรรทัดถัดไปด้วยrandom.seed(20260816) - กำหนดสินทรัพย์ห้าตัวที่มีผลตอบแทนคาดหวังรายปีที่แท้จริงที่ 5, 6, 7, 8 และ 9 เปอร์เซ็นต์ โดยแต่ละตัวมีความผันผวนรายปีที่แท้จริง 20 เปอร์เซ็นต์ และไม่มีความสัมพันธ์ต่อกัน แปลงค่าเป็นรายวันด้วย
mu_d = mu_a / 252และsd_d = sd_a / (252 ** 0.5) - เลือกความยาวของกลุ่มตัวอย่าง T จากช่วง
[60, 125, 250, 500, 1000, 2500, 5000] - สุ่มผลตอบแทนรายวันจำนวน T วันสำหรับแต่ละสินทรัพย์ด้วย
random.gauss(mu_d, sd_d)ข้อมูลที่สุ่มได้นี้คือประวัติทั้งหมดที่ผู้จัดการกองทุนมองเห็น - ประมาณค่าเฉลี่ยของแต่ละสินทรัพย์ด้วย
statistics.meanและความผันผวนด้วยstatistics.stdevค่าประมาณทั้งสองนี้คือสิ่งที่ตัวปรับแต่งพอร์ต (optimizer) รับรู้ทั้งหมด - สร้างพอร์ตการลงทุนแบบถ่วงน้ำหนักเท่ากัน (equal weight) โดยกำหนดน้ำหนัก 0.2 ให้กับสินทรัพย์ทั้งห้าตัว พอร์ตนี้ไม่ได้ใช้ค่าประมาณการใด ๆ เลย
- สร้างพอร์ตการลงทุนแบบปรับแต่งน้ำหนัก (optimized portfolio) โดยกำหนดน้ำหนักดิบแต่ละตัวด้วย
mu_hat / (sd_hat ** 2)จากนั้นหารน้ำหนักแต่ละตัวด้วยผลรวมของน้ำหนักดิบสัมบูรณ์ ซึ่งจะทำให้พอร์ตทั้งสองมี gross exposure เท่ากัน - สุ่มเส้นทางผลตอบแทนใหม่ที่อยู่นอกกลุ่มตัวอย่าง (out of sample) จำนวน 2520 วันต่อสินทรัพย์จากพารามิเตอร์ที่แท้จริง ซึ่งการจัดสรรพอร์ตทั้งสองแบบยังไม่เคยเห็นข้อมูลชุดนี้มาก่อน
- ให้คะแนนทั้งสองพอร์ตบนเส้นทางนั้นด้วยค่าเฉลี่ยของ
log(1 + r)โดยที่ r คือผลรวมถ่วงน้ำหนักของผลตอบแทนสินทรัพย์ทั้งห้าตัวในแต่ละวัน - ทำซ้ำขั้นตอนที่ 4 ถึง 9 จำนวน 2000 ครั้งที่เป็นอิสระต่อกันในแต่ละค่า T และบันทึกสัดส่วนของจำนวนครั้งที่พอร์ตแบบถ่วงน้ำหนักเท่ากันทำผลตอบแทนได้ดีกว่าพอร์ตแบบปรับแต่งน้ำหนัก
อ่านช่วงข้อมูลจาก T ที่สั้นไปจนถึง T ที่ยาว ในช่วงที่ T สั้น พอร์ตแบบถ่วงน้ำหนักเท่ากันจะเป็นผู้ชนะในจำนวนครั้งส่วนใหญ่ สัดส่วนนี้จะลดลงอย่างต่อเนื่องเมื่อ T เพิ่มขึ้น และในช่วงที่ T ยาว พอร์ตแบบปรับแต่งน้ำหนักจะเป็นผู้ชนะในจำนวนครั้งส่วนใหญ่ จุดตัดจะเกิดขึ้นที่ตำแหน่งใดตำแหน่งหนึ่งตรงกลาง จุดตัดนี้จะเปลี่ยนไปตามค่า seed และส่วนต่างระหว่างค่าเฉลี่ยที่แท้จริง แต่ทิศทางจะไม่เปลี่ยน: ข้อมูลที่มากขึ้นจะส่งผลดีต่อตัวปรับแต่งพอร์ต ส่วนข้อมูลที่น้อยกว่าจะส่งผลดีต่อ 1/N หากต้องการทำซ้ำ ให้เปลี่ยนจำนวนเต็มภายใน random.seed(20260816) แล้วรันช่วงข้อมูลใหม่อีกครั้ง
เหตุใดตัวปรับค่าให้เหมาะสม (optimizer) จึงขยายความผิดพลาดของการประมาณค่าเฉลี่ย
พิจารณาจุดที่ค่าประมาณการถูกนำไปคำนวณเป็นน้ำหนัก ค่าเฉลี่ยที่ประมาณการไว้จะอยู่ในตัวเศษ ส่วนค่าความแปรปรวนที่ประมาณการไว้จะอยู่ในตัวส่วน หากเพิ่มค่าประมาณการเฉลี่ยเป็นสองเท่า น้ำหนักจะเพิ่มขึ้นเป็นสองเท่า หากลดค่าประมาณการความแปรปรวนลงหนึ่งในสี่ น้ำหนักจะเพิ่มขึ้นหนึ่งในสาม ในกลุ่มตัวอย่างที่โชคดี ความผิดพลาดทั้งสองอย่างอาจส่งผลไปในทิศทางเดียวกัน กล่าวคือ ช่วงที่ผลตอบแทนดีต่อเนื่องจะช่วยยกระดับค่าเฉลี่ยที่วัดได้ และมักจะลดทอนค่าความแปรปรวนที่วัดได้ในช่วงเวลาเดียวกัน ตัว optimizer จะอ่านค่าสินทรัพย์นั้นว่าเป็นสินทรัพย์ที่โดดเด่นที่สุดในกลุ่มและจัดสรรน้ำหนักให้ตามนั้น แต่เมื่ออยู่นอกกลุ่มตัวอย่าง สินทรัพย์นั้นก็กลับไปเป็นเพียงสินทรัพย์ทั่วไปในกลุ่มอีกครั้ง ในขณะที่การจัดสรรน้ำหนักเท่ากัน (equal weight) ไม่ได้รับรู้ถึงกลุ่มตัวอย่างที่โชคดีนั้นเลย
การจำลองสถานการณ์เป็นเพียงรูปแบบที่ไม่รุนแรงของปัญหานี้ สินทรัพย์ห้าตัวที่ไม่มีความสัมพันธ์กันจะทำให้เกิดเมทริกซ์ความแปรปรวนร่วมแบบทแยงมุมซึ่งไม่มีส่วนใดต้องกลับค่า (invert) แต่ในพอร์ตการลงทุนจริง สินทรัพย์มีความสัมพันธ์กัน และเมทริกซ์ความแปรปรวนร่วมที่สร้างจากจำนวนข้อมูลที่มากกว่าจำนวนสินทรัพย์เพียงเล็กน้อยจะมีค่าใกล้เคียงกับเมทริกซ์เอกฐาน (singular matrix) การกลับค่าเมทริกซ์นี้จะขยายความผิดพลาดเล็กน้อยของข้อมูลนำเข้าให้กลายเป็นน้ำหนักที่ใหญ่มาก ซึ่งเป็นวิธีที่ optimizer ใช้ในการกำหนดสถานะการลงทุนที่มีมูลค่าสูงกว่าเงินทุนหลายเท่าในสินทรัพย์ตัวเดียว โดยมีสถานะขายชอร์ตในสินทรัพย์ทดแทนที่ใกล้เคียงกันเพื่อชดเชย บันทึกของเราในเรื่อง ความเสี่ยงจากการกระจุกตัวในพอร์ตการลงทุน ได้ครอบคลุมถึงผลกระทบที่น้ำหนักลักษณะนี้มีต่อการลดลงของมูลค่าพอร์ต (drawdown)
ข้อมูลนำเข้าเองก็ไม่ได้หยุดนิ่งเช่นกัน แผงข้อมูลด้านล่างนี้ติดตามค่าเฉลี่ยผลตอบแทนรายวันย้อนหลังหนึ่งปี โดยปรับเป็นอัตราต่อปีและสุ่มตัวอย่างรายเดือน สำหรับกองทุนดัชนีในวงกว้างควบคู่ไปกับหุ้นกลุ่มสินค้าอุปโภคบริโภคขนาดใหญ่ตัวหนึ่ง
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'KO')
AND date >= '2015-10-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
trailing AS
(
SELECT
ticker,
date,
avg(ret) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 251 PRECEDING AND CURRENT ROW) * 252 * 100 AS trailing_mean_pct,
row_number() OVER (PARTITION BY ticker ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
)
SELECT
toString(toStartOfMonth(date)) AS month,
round(avgIf(trailing_mean_pct, ticker = 'SPY'), 1) AS spy_trailing_mean_pct,
round(avgIf(trailing_mean_pct, ticker = 'KO'), 1) AS ko_trailing_mean_pct
FROM trailing
WHERE i >= 252
AND date >= '2017-01-01'
GROUP BY month
ORDER BY month ASCทุกจุดบนเส้นทั้งสองเส้นคือตัวเลขที่ optimizer ตัวใดตัวหนึ่งอาจยอมรับว่าเป็นผลตอบแทนที่คาดหวัง ณ วันที่นั้น ค่าที่อ่านได้รายเดือนครั้งแรกสำหรับ SPY คือ 17.7% และครั้งสุดท้ายคือ 25.8% โดยมีค่าที่อ่านได้อีก 96 ครั้งในช่วงระหว่างนั้น สำหรับ KO เริ่มต้นช่วงเวลาเดียวกันที่ -0.4% กลยุทธ์การจัดสรรน้ำหนักที่ใช้ข้อมูลอนุกรมนี้แบบเดือนต่อเดือนจะได้รับผลกระทบจากความผันผวนทุกประการที่เกิดขึ้นในข้อมูลนั้น
กลยุทธ์ Half Kelly และการปรับค่า Shrinkage ช่วยแก้ปัญหาได้หรือไม่?
กลยุทธ์เหล่านี้ช่วยลดทอนปัญหาลง ในทางปฏิบัติมีแนวทางแก้ไขสี่ประการ ซึ่งแต่ละวิธีจะยอมสละส่วนหนึ่งของจุดที่เหมาะสมที่สุดตามทฤษฎี เพื่อแลกกับการลดความอ่อนไหวต่อค่าประมาณการ
- Half Kelly จะลดน้ำหนักการลงทุนลงครึ่งหนึ่ง เส้นโค้งการเติบโตแบบ Kelly มีลักษณะแบนราบใกล้จุดสูงสุดและมีความชันมากในช่วงที่ต่ำกว่า ดังนั้นการวางเดิมพันเพียงครึ่งหนึ่งจึงทำให้เสียอัตราการเติบโตตามทฤษฎีไปเพียงเล็กน้อย แต่ช่วยลดความเสียหายจากการประเมินความได้เปรียบที่สูงเกินจริงได้มากกว่ามาก Volatility targeting ใช้สัญชาตญาณเดียวกันนี้กับตัวหาร โดยกำหนดขนาดจากข้อมูลนำเข้าเพียงตัวเดียวที่กลุ่มตัวอย่างขนาดเล็กสามารถให้ได้
- Shrinkage จะดึงค่าเฉลี่ยที่ประมาณการไว้ทุกตัวเข้าหาค่าเฉลี่ยของกลุ่มตัวอย่าง โดยมีขนาดการดึงเพิ่มขึ้นตามขนาดกลุ่มตัวอย่างที่เล็กลง หากผลักดันจนถึงขีดสุด สินทรัพย์ทุกตัวจะมีผลตอบแทนคาดการณ์เท่ากัน และหากมีความผันผวนเท่ากัน ตัวปรับค่าให้เหมาะสม (optimizer) ก็จะคืนค่าน้ำหนักที่เท่ากันออกมาโดยอัตโนมัติ ซึ่งน้ำหนักที่เท่ากันนี้คือพอร์ตโฟลิโอที่ผ่านการทำ Shrinkage อย่างสมบูรณ์
- ข้อจำกัด เช่น การห้ามขายชอร์ตและการกำหนดเพดานน้ำหนักต่อตำแหน่ง เป็นการจำกัดขอบเขตไม่ให้ค่าประมาณการที่โชคดีเพียงค่าเดียวส่งผลต่อน้ำหนักของสินทรัพย์ตัวใดตัวหนึ่งมากเกินไป สิ่งเหล่านี้เป็นการควบคุมความเสียหายมากกว่าการปรับปรุงคุณภาพของค่าประมาณการ
- การตัดผลตอบแทนคาดการณ์ออกไปทั้งหมดจะเหลือเพียงกลยุทธ์ Minimum variance และ Risk parity ซึ่งใช้เพียงค่าความแปรปรวนร่วม (covariance) เท่านั้น ซึ่งเป็นข้อมูลนำเข้าที่กลุ่มตัวอย่างสามารถให้ได้อย่างแท้จริง
ทั้งสี่วิธีนี้ไม่ได้สร้างข้อมูลที่กลุ่มตัวอย่างไม่มีอยู่จริง สิ่งที่เปลี่ยนไปคือสัดส่วนของพอร์ตโฟลิโอที่ขึ้นอยู่กับข้อมูลที่คุณอาจไม่มีอยู่จริง
เมื่อการปรับให้เหมาะสม (Optimization) พิสูจน์ความคุ้มค่า
การไขว้กันของผลตอบแทนเกิดขึ้นได้ทั้งสองทิศทาง เมื่อ T มีขนาดใหญ่ขึ้นเมื่อเทียบกับส่วนต่างระหว่างค่าเฉลี่ยที่แท้จริง การจัดสรรสินทรัพย์ที่ผ่านการปรับให้เหมาะสม (optimized allocation) จะเริ่มสร้างผลตอบแทนที่เหนือกว่าและรักษาความได้เปรียบนั้นไว้ได้ ยิ่งส่วนต่างกว้างเท่าใด จุดที่ผลตอบแทนจะแซงหน้าก็ยิ่งเกิดขึ้นเร็วเท่านั้น นอกจากนี้ Optimization ยังเป็นเครื่องมือที่เหมาะสมเสมอเมื่อข้อมูลนำเข้าเป็นสิ่งที่ข้อมูลดิบสามารถระบุได้ชัดเจน เนื่องจากค่าความแปรปรวนร่วม (covariance) และอัตราส่วนการป้องกันความเสี่ยง (hedge ratios) สามารถประมาณการได้แม่นยำกว่าผลตอบแทนที่คาดหวัง (expected returns) มาก
การถ่วงน้ำหนักเท่ากัน (Equal weight) มีต้นทุนแฝงในตัวมันเอง กลยุทธ์นี้ละเลยข้อมูลที่คุณมีอยู่จริง และในจักรวาลของสินทรัพย์ที่มีขนาดเล็ก กลยุทธ์นี้จะกระจุกตัวหนักไม่ต่างจากที่ตัวปรับให้เหมาะสม (optimizer) จะทำ ให้ถือว่ากลยุทธ์นี้เป็นเกณฑ์มาตรฐาน (baseline) ที่น้ำหนักการลงทุนทางเลือกใดก็ตามต้องเอาชนะให้ได้ด้วยข้อมูลที่น้ำหนักเหล่านั้นไม่เคยเห็นมาก่อน การปรับน้ำหนักและให้คะแนนบนกลุ่มตัวอย่างเดียวกันคือ อคติจากการมองเห็นอนาคตในการทดสอบย้อนหลัง (look-ahead bias in backtesting) ในรูปแบบอื่น ซึ่งมักจะทำให้ตัวปรับให้เหมาะสมดูดีเกินจริงเสมอ สำหรับการหาช่วงความเชื่อมั่นที่แท้จริงรอบขอบเขตของผลตอบแทนที่วัดได้ แทนที่จะใช้การประมาณการจุดเดียว ช่วงความเชื่อมั่นแบบบูตสแตรป (bootstrapped confidence intervals) คือเครื่องมือมาตรฐานที่ใช้กัน
คำถามที่พบบ่อย
การถ่วงน้ำหนักเท่ากัน (Equal weight) ให้ผลตอบแทนดีกว่าการปรับพอร์ตแบบ Mean variance optimization จริงหรือ
ในกลุ่มตัวอย่างระยะสั้น มักจะเป็นเช่นนั้น ตัวปรับพอร์ต (optimizer) จำเป็นต้องมีการประมาณการผลตอบแทนที่คาดหวังของสินทรัพย์แต่ละตัว ซึ่งค่าประมาณการนั้นมีความคลาดเคลื่อนมาตรฐาน (standard error) อยู่ที่ประมาณความผันผวนของสินทรัพย์หารด้วยรากที่สองของระยะเวลาตัวอย่างเป็นปี ตราบใดที่ความคลาดเคลื่อนนั้นยังสูงกว่าส่วนต่างที่แท้จริงระหว่างสินทรัพย์ ตัวปรับพอร์ตก็กำลังจัดเรียงข้อมูลที่เป็นสัญญาณรบกวน (noise) ในขณะที่การถ่วงน้ำหนักเท่ากันไม่มีการประมาณการใดให้ผิดพลาด
ต้องใช้จำนวนข้อมูลเท่าใดจึงจะประมาณการผลตอบแทนที่คาดหวังได้
มากกว่าที่เกือบทุกคนมี สำหรับสินทรัพย์ที่มีความผันผวนร้อยละ 20 ข้อมูลรายวันหนึ่งปีจะทำให้เกิดความคลาดเคลื่อนมาตรฐานใกล้เคียงร้อยละ 20 ต่อปี และการลดความคลาดเคลื่อนนั้นลงครึ่งหนึ่งต้องใช้ระยะเวลาตามปฏิทินเพิ่มขึ้นสี่เท่า การเพิ่มข้อมูลระหว่างวันภายในปีเดียวกันไม่ได้ช่วยให้ดีขึ้น ในทางตรงกันข้าม ความผันผวนสามารถใช้ข้อมูลเพียงไม่กี่เดือนก็เพียงพอ
Half Kelly เป็นเพียงการวางเดิมพันที่เล็กลงใช่หรือไม่
มันคือการวางเดิมพันที่เล็กลงบนเงื่อนไขที่ได้เปรียบ เส้นโค้งการเติบโตแบบ Kelly มีความแบนราบใกล้จุดสูงสุด ดังนั้นการลดขนาดการลงทุนลงครึ่งหนึ่งจึงเสียสละอัตราการเติบโตทางทฤษฎีไปเพียงเล็กน้อย ในขณะที่ลดความผันผวนของเส้นทางลงประมาณครึ่งหนึ่ง และลดต้นทุนจากการประเมินความได้เปรียบที่สูงเกินจริง
พอร์ตโฟลิโอ 1/N คืออะไร
คือพอร์ตโฟลิโอที่จัดสรรเงินทุนในสัดส่วนที่เท่ากันให้กับแต่ละสถานะจากทั้งหมด N สถานะ และปรับสมดุลพอร์ตตามกำหนดเวลา พอร์ตนี้ไม่จำเป็นต้องมีการคาดการณ์ผลตอบแทนและไม่ต้องมีการประมาณค่าความแปรปรวนร่วม (covariance) ซึ่งเป็นเหตุผลที่ทำให้มันเป็นเกณฑ์มาตรฐาน (benchmark) สำหรับรูปแบบการถ่วงน้ำหนักทุกประเภทที่จำเป็นต้องใช้ข้อมูลดังกล่าว
วิธีการสร้างตารางข้อมูล
ตารางทั้งสามชุดอ่านราคาปิดรายวันและคำนวณผลตอบแทนแบบง่ายจากราคาปิดถึงราคาปิด โดยแถวที่ซ้ำกันจะถูกยุบรวมเหลือราคาปิดเดียวต่อ ticker ต่อวัน ค่าเฉลี่ยจะถูกปรับเป็นรายปีโดยการคูณผลตอบแทนเฉลี่ยรายวันด้วย 252 รอบการซื้อขาย ส่วนความผันผวนจะถูกปรับเป็นรายปีโดยการคูณส่วนเบี่ยงเบนมาตรฐานรายวันด้วยรากที่สองของ 252 ตารางรายปีจะเก็บเฉพาะปีปฏิทินที่มีรอบการซื้อขายอย่างน้อย 200 วัน ตารางแบบบล็อกใช้บล็อกที่ไม่ซ้อนทับกันและตัดบล็อกสุดท้ายที่ไม่เต็มช่วงออก โดยคอลัมน์จำนวนหน้าต่าง (window count) จะแสดงจำนวนบล็อกที่แต่ละความยาวสร้างขึ้น ไม่มีการรวมเงินปันผลไว้ในที่ใด ดังนั้นนี่คือผลตอบแทนจากราคา (price returns) และระดับของค่าเฉลี่ยใด ๆ จะถูกประเมินต่ำกว่าความเป็นจริงสำหรับหุ้นที่มีการจ่ายเงินปันผล การกระจายตัวของค่าประมาณการคือประเด็นสำคัญของตารางเหล่านี้ ไม่ใช่ระดับของค่าที่ได้
ตารางทุกชุดที่นี่แสดงคำสั่ง SQL ที่ใช้ใต้แผนภูมิ และการจำลองสถานการณ์มีการระบุค่า seed ไว้ หากต้องการตรวจสอบความเสถียรของการประมาณการแบบเดียวกันกับรายชื่อหุ้นของคุณเอง สามารถสอบถามเป็นภาษาอังกฤษทั่วไปได้ที่ Strasmore terminal