

Portfolio Management Toolkit Notes
เรียนรู้การจัดการพอร์ต ผ่านคำถาม ตัวอย่าง และการทดลอง
การจัดการพอร์ตเริ่มจากการรู้ว่าเราอยากให้เงินทำหน้าที่อะไร และยอมรับผลลัพธ์แบบไหนได้ หนังสือเล่มนี้จะพาเริ่มจากคำถามเหล่านั้น แล้วค่อยใช้ตัวอย่างและสมการอธิบายว่าแต่ละวิธีทำงานอย่างไร พร้อมเครื่องมือให้ลองเปลี่ยนค่าและดูผลด้วยตัวเอง
เริ่มจาก How to Calculate return เพื่อเรียนเปอร์เซ็นต์ การทบต้น และค่าเฉลี่ย แล้วลอง Python/pandas ทีละขั้น ต่อด้วยความผันผวน Sharpe ratio และ Drawdown มีตัวอย่างสมมติและคำถามพร้อมเฉลย ส่วน Log return อ่านต่อได้หลังเข้าใจพื้นฐาน
ต่อด้วย เมื่อผลตอบแทนไม่เป็น Normal เพื่อศึกษาความเสี่ยงเมื่อผลตอบแทนไม่เป็น Normal: ดูรูปร่างผลตอบแทน คำนวณ Skewness และ Kurtosis ทดสอบ Normality สร้าง Python module และเปรียบเทียบวิธีวัดความเสี่ยงปลายหางทีละขั้น
เริ่มสร้างพอร์ต
เริ่มจากการแบ่งเงินระหว่างสินทรัพย์สองตัว แล้วค่อยเพิ่ม covariance matrix และข้อจำกัดในการหาน้ำหนักพอร์ต
- เริ่มจัดพอร์ตจากสินทรัพย์สองตัว คำนวณน้ำหนัก ผลตอบแทน Covariance และ Correlation จากตัวอย่างเล็ก ๆ
- Efficient frontier และการหาน้ำหนักพอร์ต อ่าน matrix ตั้งโจทย์ optimization และแยกขอบพอร์ตที่มีประสิทธิภาพออกจากพอร์ตที่สร้างได้ทั้งหมด
- MSR, GMV และความคลาดเคลื่อนของค่าประมาณ ผสมสินทรัพย์ปลอดความเสี่ยง เปรียบเทียบวิธีจัดพอร์ต และตรวจการใช้ข้อมูลย้อนหลัง
เมื่อการกระจายการลงทุนยังไม่พอ
การถือหลายสินทรัพย์ยังอาจเจอขาดทุนพร้อมกัน เราจะตรวจความสัมพันธ์ของผลตอบแทน แล้วศึกษากฎปรับวงเงินเสี่ยงตามมูลค่าพอร์ต
- ข้อจำกัดของ Diversification สร้างน้ำหนักตามมูลค่าตลาด คำนวณ rolling correlation และตรวจเวลาของข้อมูล
- CPPI จากศูนย์ คำนวณ Floor, Cushion และ Multiplier ทีละเดือน รวมถึงเหตุการณ์ที่พอร์ตต่ำกว่า floor
- Monte Carlo และการประเมิน CPPI สร้างหลายเส้นทางด้วย GBM และวัดทั้งโอกาสเกิดเงินขาดกับขนาดเงินที่ขาด
ลงทุนให้สัมพันธ์กับวันที่ต้องใช้เงิน
จำนวนเงินและวันจ่ายของเป้าหมายเป็นข้อมูลตั้งต้นของการเลือกสินทรัพย์ เราจะคิดลดภาระ หาสินทรัพย์ที่ช่วยรองรับ และจัดวงเงินสำหรับส่วนที่รับความเสี่ยง
- เงินลงทุนกับเป้าหมายที่ต้องจ่าย เริ่มจาก Present Value และ Funding ratio ก่อนแยกหน้าที่ PSP/GHP
- พันธบัตร กระแสเงินสด และ Duration แยก Coupon, Yield, ราคาและผลตอบแทนรวม แล้วลองจับคู่ภาระด้วย Duration
- จำลองอัตราดอกเบี้ยและราคา ZCB ใช้ CIR โดยแยกความน่าจะเป็นสำหรับสถานการณ์ลงทุนออกจากการคิดราคา
- จัดพอร์ตให้เงินพอกับเป้าหมาย เปรียบเทียบ Fixed Mix, Glidepath และการปรับวงเงินตาม Funding ratio พร้อมตรวจ Shortfall
ทั้งสิบหน้ามี Notebook แยกบท พร้อมตัวอย่างที่สร้างขึ้นใหม่ รันได้จากต้นหน้าโดยไม่ต้องเปิดโค้ดของบทอื่น ตัวเลขใหม่ในชุดนี้เป็นข้อมูลสมมติหรือการจำลองที่ระบุพารามิเตอร์และ seed ไม่ใช่ผลจากตลาดจริง
Advanced · Style & Factors
คอร์สต่อเนื่อง Advanced Portfolio Construction and Analysis with Python เริ่มจากการอธิบายผลตอบแทนด้วยปัจจัยร่วม แล้วพาไปสู่การสร้าง benchmark และทดสอบกฎให้น้ำหนัก แบ่งหัวข้อ Style & Factors เป็นสี่บทเพื่อให้มีเวลาฝึกสูตรและ Python ทีละขั้น
- Factor Investing และ CAPM จากพื้นฐาน คำนวณ excess return, beta, alpha และ OLS ก่อนแยกค่าประมาณจากข้อสมมติของ CAPM
- หลาย Factor และ Fama–French อ่าน SMB/HML ฝึกแบบจำลองหลายปัจจัย และดูกรณีศึกษา Berkshire จากข้อมูลคอร์สปี 1990–2018
- Style Analysis หาส่วนผสม benchmark แยก TE กับ RMSE และติดตามสไตล์ด้วยหน้าต่างย้อนหลัง
- จาก Cap Weight สู่ Smart Beta แยกการเลือกหุ้นจากน้ำหนัก ตรวจความกระจุกตัว การซื้อขาย และ backtest ที่ใช้ข้อมูลตามเวลา
ทั้งสี่บทมี Notebook ที่รันได้แยกกัน ตัวอย่างหลักเป็นข้อมูลสมมติ ส่วนกรณีศึกษา Berkshire ระบุไฟล์ ช่วงข้อมูล หน่วย และวิธีคำนวณแยกไว้ พร้อมสคริปต์สำหรับผู้ที่มี ZIP ของคอร์ส
Advanced · Covariance Estimation
เมื่อรู้แล้วว่า covariance ใช้คำนวณความเสี่ยงพอร์ต บทถัดไปถามว่าควรประมาณมันอย่างไรเมื่อข้อมูลมีจำกัด และความสัมพันธ์ของสินทรัพย์เปลี่ยนไปตามเวลา
- ประมาณ Covariance เมื่อข้อมูลมีจำกัด เริ่มจากตารางผลตอบแทน ตรวจ rank และอธิบายข้อสมมติของ factor covariance
- Shrinkage ผสม sample covariance กับ constant-correlation target ก่อนเปรียบเทียบพอร์ตด้วย rolling backtest
- ความเสี่ยงที่เปลี่ยนตามเวลา ตามรอยข้อมูลแต่ละงวดใน rolling window, EWMA และ GARCH พร้อมแยกค่าพยากรณ์ออกจากผลที่เกิดขึ้นจริง
ตัวอย่างและ Notebook ทั้งสามบทใช้ข้อมูลสมมติที่ระบุวิธีสร้างไว้ คำนวณตามได้โดยไม่ต้องดาวน์โหลดข้อมูลตลาด
Advanced · Expected Returns
Covariance เป็นเพียงส่วนหนึ่งของข้อมูลเข้าของ optimizer บทเรียนชุดนี้พิจารณาว่าควรเชื่อค่าเฉลี่ยผลตอบแทนย้อนหลังแค่ไหน และจะรวมสมมติฐานกับมุมมองเพิ่มเติมอย่างไร
- Expected Return: ค่าเฉลี่ยที่เรายังไม่รู้ แยก SD กับ Standard Error ทดลอง mean shrinkage และตรวจข้อสมมติที่ใช้เปลี่ยน factor loadings เป็นค่าคาดหวัง
- Implied Returns และ Views เริ่มจากน้ำหนักพอร์ต สร้างผลตอบแทนที่สอดคล้องกับแบบจำลอง แล้วเขียนมุมมองแบบระบุสินทรัพย์และแบบเปรียบเทียบ
- Black–Litterman ผสม prior กับ views ตามความไม่แน่นอน แยกความเสี่ยงของผลตอบแทนออกจากความไม่แน่นอนของค่าเฉลี่ย แล้วหาน้ำหนักภายใต้โจทย์ที่ระบุไว้
ทั้งสามบทมี Notebook ที่เริ่มรันแยกกันได้ ตัวอย่าง views เป็นสมมติฐานสำหรับฝึกคำนวณ ไม่มีการคาดการณ์สินทรัพย์จริง
Advanced · Portfolio Optimization in Practice
เมื่อค่าผลตอบแทนและความเสี่ยงยังไม่แน่นอน เราจะเลือกกฎจัดพอร์ตอย่างไร บทเรียนชุดนี้แยกการกระจายเงินออกจากการกระจายความเสี่ยง แล้วทดสอบกฎเหล่านั้นบนข้อมูลและช่วงเวลาเดียวกัน
- Diversification: กระจายเงินด้วยวิธีใด เทียบ Equal Weight, Market Cap, GMV และ Maximum Diversification พร้อมวัดการกระจุกตัวของเงินด้วย ENC
- Risk Contribution คำนวณว่าสินทรัพย์แต่ละตัวมีส่วนต่อความผันผวนของพอร์ตเท่าไร และอ่านส่วนแบ่งที่ติดลบอย่างไร
- Risk Parity เริ่มจาก Inverse Volatility แล้วแก้โจทย์ Equal Risk Contribution และงบความเสี่ยงที่กำหนดไว้
- ทดสอบ Diversification สร้างการทดสอบย้อนหลังที่ใช้เฉพาะข้อมูลก่อนตัดสินใจ ติดตามน้ำหนักที่เปลี่ยน และหักต้นทุนจากเงินลงทุนอย่างสอดคล้องกัน
ตัวอย่างสี่สินทรัพย์และข้อมูลทดสอบเป็นข้อมูลสมมติที่สร้างเพื่อสอนวิธีคำนวณ ผลเปรียบเทียบไม่ได้ยืนยันว่าวิธีใดชนะตลาด
Machine Learning · เริ่มต้นเรียนรู้จากข้อมูล
ชุดต่อเนื่องจากคอร์ส Python and Machine Learning for Asset Management เริ่มที่หนึ่งแถวข้อมูลหมายถึงอะไร แล้วค่อยสร้างโมเดลและตรวจว่าโมเดลใช้ข้อมูลซึ่งรู้แล้วในวันตัดสินใจจริงหรือไม่ แต่ละบทมีคำอธิบาย ตัวอย่างคำนวณ โค้ด Python และโจทย์พร้อมเฉลย
- Machine Learning เริ่มจากข้อมูลและคำถาม แยก feature, target และชนิดของปัญหาก่อนเรียกใช้โมเดล
- Supervised Learning จากตัวอย่างเล็ก เรียน Regression, Classification, Logistic และ KNN พร้อมอ่านค่าความผิดพลาด
- ตรวจโมเดลโดยไม่แอบเห็นอนาคต แบ่ง train, validation และ test ตามเวลา แล้วทดลองปัญหา overfitting
- Lab จัดพอร์ตและทดสอบกับข้อมูลใหม่ คำนวณน้ำหนักจากอดีต เปรียบเทียบกับ Equal Weight และตรวจผลในช่วงที่กันไว้
Machine Learning · ประมาณ Factor Models
เมื่อมีปัจจัยหลายตัว การ fit ได้ใกล้ข้อมูลเดิมอาจมาพร้อม coefficient ที่แกว่งมาก เราจะดูว่าการปรับสเกลและ regularization เปลี่ยนค่าประมาณอย่างไร
- Lab Factor Model: ประมาณค่าและตรวจความเสถียร ใช้ scikit-learn ตรวจ loadings, residual covariance และตัวแปรเกือบซ้ำกัน โดยต่อจากทฤษฎีในบท Factor Investing
- Ridge, Lasso และ Elastic Net อ่าน objective คำนวณ penalty และตรวจหน่วยของ coefficient
- ทดสอบ Factor Model ตามเวลา เลือก hyperparameter ภายใน training folds แล้วเปิดชุดทดสอบครั้งสุดท้าย
Machine Learning · การกระจายพอร์ต
สินทรัพย์หลายชื่ออาจยังรับความเสี่ยงร่วมกัน PCA, clustering และเครือข่ายช่วยมองโครงสร้างนี้ แต่แต่ละวิธีตอบคำถามต่างกัน
- PCA และการกระจายความเสี่ยง แยกส่วนแบ่งความแปรปรวนของข้อมูลออกจากส่วนแบ่งความเสี่ยงของพอร์ต
- จัดกลุ่มสินทรัพย์ เปลี่ยน correlation เป็นระยะทาง เลือกตัวแทนกลุ่ม และวัดผลนอกชุดฝึก
- เครือข่ายความสัมพันธ์ของสินทรัพย์ อ่าน partial correlation, Graphical Lasso และข้อจำกัดของภาพเครือข่าย
Machine Learning · ภาวะตลาด
แบบจำลองภาวะตลาดช่วยแยกสมมติฐานของผลตอบแทนในแต่ละสภาวะ เราจะตรวจทั้งเวลาที่ใช้ข้อมูล ความน่าจะเป็นของการเปลี่ยนภาวะ และผลต่อแผนใช้เงิน
- ภาวะตลาดและข้อมูลที่ใช้มองมัน อ่าน Markov transition แยก filtering จาก smoothing และทดลอง total variation
- จากภาวะตลาดสู่สถานการณ์ลงทุน รวม mean และ covariance ให้ครบทั้งภายในและระหว่างภาวะ ก่อนคำนวณ Expected Shortfall
- จำลองเงินกองทุนที่ต้องจ่ายทุกปี เปรียบเทียบลำดับผลตอบแทน เงินเฟ้อ การจ่ายเงินจริง และความไม่แน่นอนของ Monte Carlo
Machine Learning · พยากรณ์เหตุการณ์
การทำนายภาวะถดถอยต้องเริ่มจากนิยามเหตุการณ์และเวลาที่ข้อมูลประกาศ ชุดนี้ใช้ข้อมูลจำลองที่เปิดสูตรไว้ เพื่อฝึกตรวจขั้นตอนโดยไม่สับสนกับผลพยากรณ์เศรษฐกิจจริง
- ความน่าจะเป็นบอกอะไร กำหนด horizon และ label แล้วคำนวณ Brier, Log Loss, Threshold และ Confusion Matrix
- Lab พยากรณ์เหตุการณ์ทีละเดือน เปรียบเทียบ Logistic, Tree และ Ensemble โดยใช้เฉพาะข้อมูลที่พร้อม ณ เดือนนั้น
- เลือก Feature โดยไม่ใช้คำตอบชุดทดสอบ แยกการเลือกตัวแปรออกจากการประเมินผล พร้อมตรวจความสำคัญของตัวแปรอย่างระมัดระวัง
ทั้งสิบหกบทมี Notebook แยกกัน ตัวอย่างใหม่เป็นข้อมูลสมมติหรือการจำลองที่ระบุ seed ไม่ใช่ผลพยากรณ์ตลาดหรือข้อเสนอให้ซื้อขายสินทรัพย์
บทอ่านประกอบ
อ่าน ความเสี่ยง: แนวคิดและการอ่านผลวัด เพื่อศึกษาที่มาของแนวคิด เลือกตัววัดให้ตรงกับคำถาม และฝึกอ่านผลผ่านห้องทดลองลำดับผลตอบแทน ความเสียหายปลายหาง และ EWMA สูตรและโค้ดพื้นฐานเรียนที่ Returns กับบทความเสี่ยงปลายหาง แล้วใช้บทนี้ฝึกตีความและจัดทำรายงาน
เมื่อเรียน CPPI จากศูนย์ แล้ว อ่าน Portfolio Insurance: เปรียบเทียบวิธีป้องกันพอร์ต เพื่อเทียบ CPPI กับการซื้อ Option, TIPP, Stop Loss และตัวคูณที่ปรับได้ บทนี้เน้นต้นทุน ผลทดสอบ S&P 500 และความชอบของผู้ลงทุน ส่วนวิธีคำนวณ CPPI ทีละงวดและ Python อยู่ในบทพื้นฐาน
บท Portfolio Insurance ใช้วิทยานิพนธ์ของ Paulo José Martins Jorge da Silva (2018) เป็นจุดตั้งต้น แล้วเรียบเรียงคำอธิบายและเพิ่มตัวอย่างให้คำนวณตามได้ ส่วนไหนเป็นข้อค้นพบจากงานวิจัยจะมีที่มาและเลขหน้ากำกับไว้ เพื่อให้อ่านต่อและตรวจกลับได้
อ่านหนังสือเล่มนี้อย่างไร
เปิดบทเรียนจากแถบด้านข้างแล้วอ่านต่อได้ตามลำดับ ถ้าเจอคำที่ยังไม่คุ้น แวะดูหน้าคำศัพท์ แล้วกดกลับมายังตัวอย่างได้ ระหว่างอ่านจะมีเครื่องมือให้ลองปรับค่า แนะนำให้เปลี่ยนทีละตัว แล้วดูว่าผลที่ออกมาตรงกับเหตุผลที่เราคิดไว้หรือไม่
สำหรับบทเรียนตั้งแต่การสร้างพอร์ตไปจนถึงชุด Advanced และ Machine Learning กด “ดาวน์โหลด Notebook” จากสารบัญของหน้าที่กำลังอ่าน เปิดไฟล์ .ipynb ใน Jupyter Notebook หรือ JupyterLab แล้วรันจากช่องแรกลงมา หากอยากเริ่มใหม่ให้ Restart Kernel แล้ว Run All เพื่อไม่ให้ค่าจากการทดลองก่อนหน้าค้างอยู่ Python ของชุดนี้ใช้ NumPy, pandas และ SciPy; ชุด Machine Learning เพิ่ม scikit-learn หากยังไม่มีแพ็กเกจ ให้รัน %pip install numpy pandas scipy scikit-learn==1.6.1 ในช่องของ Jupyter ก่อนแล้วเริ่ม kernel ใหม่ คำสั่งที่ขึ้นต้นด้วย % ใช้ใน Jupyter ไม่ใช่ไฟล์ Python ปกติ
Notebook มีผลรันบันทึกไว้ให้เทียบ แต่ผู้อ่านควรรันใหม่และลองเปลี่ยนค่าทีละตัวด้วย บท Portfolio Insurance มี Notebook ของตัวเอง แยกจากชุดบทเรียนข้างต้น
เป้าหมายที่อยากปกป้องกับการรับประกันผลลัพธ์ · Payoff กับกำไร · ตัวอย่างสมมติกับหลักฐานจากงานวิจัย · ผลของแบบจำลองกับข้อจำกัดของการนำไปใช้
เริ่มอ่านได้ที่ บทแรก — How to Calculate return