Quantitative Finance Notes
Quantitative Finance Notes

Optimization Problem

จะเลือกคำตอบที่ดีที่สุดอย่างไร เมื่อมีข้อบังคับว่าคำตอบนั้นต้องทำอะไรได้บ้าง?

“คำตอบโดยประมาณของคำถามที่ถูกต้อง แม้คำถามนั้นมักคลุมเครือ ก็ยังดีกว่าคำตอบที่แม่นยำของคำถามที่ผิด …”

“Far better an approximate answer to the right question, which is often vague, than an exact answer to the wrong question …”

— John W. Tukey · The Future of Data Analysis (1962), น. 13–14

การหาเส้น regression กับการจัดพอร์ตดูเป็นคนละงาน แต่เขียนเป็นโจทย์ optimization ได้ทั้งคู่ งานแรกเลือกความชันและจุดตัดแกนให้ผลรวมความคลาดเคลื่อนยกกำลังสองต่ำที่สุด งานที่สองอาจเลือกน้ำหนักสินทรัพย์ให้ variance ต่ำที่สุด โดยต้องได้ผลตอบแทนคาดหวัง 10% และใช้งบลงทุนครบ 100%

ก่อนคำนวณ เราจึงต้องระบุว่าจะเลือกค่าอะไร วัดคำตอบด้วยเกณฑ์ไหน และมีข้อจำกัดใดบ้าง สามส่วนนี้คือ decision variables, objective function และ constraints การเพิ่มข้อห้ามขายชอร์ตเพียงข้อเดียวอาจทำให้น้ำหนักพอร์ตเปลี่ยน หรือทำให้เป้าหมายผลตอบแทนบางระดับไม่มีคำตอบ

บทนี้เริ่มจากภาพของโจทย์สองตัวแปร แล้วใช้ regression ฝึกอ่าน gradient และ Hessian ก่อนนำ Lagrange และ KKT ไปแก้ตัวอย่างสินทรัพย์สมมติสี่ตัว ผู้อ่านที่ต้องการทบทวนความหมายของ expected return และ covariance สามารถย้อนดูบท Portfolio Theory ได้

เขียนโจทย์ให้ครบก่อนกด Solve

โจทย์ optimization ทั่วไปเขียนได้ว่า

min⁡xf(x)subject togj(x)≤bj,hk(x)=ck.\begin{aligned} \min_{\mathbf x}\quad &f(\mathbf x)\\ \text{subject to}\quad &g_j(\mathbf x)\le b_j,\\ &h_k(\mathbf x)=c_k. \end{aligned}

องค์ประกอบมีสามส่วน

  • ff คือ objective function ที่ต้องการให้ต่ำสุดหรือสูงสุด เช่น variance ของพอร์ต
  • x\mathbf x คือเวกเตอร์ decision variables เช่น น้ำหนักสินทรัพย์แต่ละตัว
  • gj(x)g_j(\mathbf x) และ hk(x)h_k(\mathbf x) คือ constraints เช่น น้ำหนักรวม 100%, ห้ามน้ำหนักติดลบ หรือ tracking error ไม่เกินเพดาน

การเปลี่ยนโจทย์ max⁡f(x)\max f(\mathbf x) เป็น min⁡[−f(x)]\min[-f(\mathbf x)] ไม่เปลี่ยนจุดที่เหมาะสม และการคูณ objective ด้วยค่าบวกพร้อมบวกค่าคงที่ก็ไม่เปลี่ยน x∗\mathbf x^* แต่ค่าของ objective หลังแปลงต้องแปลงกลับก่อนตีความ

เปรียบเทียบ feasible set ของ unconstrained, equality และ inequality พร้อมการเขียนน้ำหนักเทียบ benchmark

Objective เดิมไม่ได้รับประกันคำตอบเดิม เมื่อ feasible set เปลี่ยน จุดที่ดีที่สุดอาจย้ายจากก้นแอ่งไปอยู่บนเส้นหรือขอบเขตที่อนุญาต

ข้อจำกัดต้องใช้หน่วยเดียวกับข้อมูล ตัวอย่างเช่น μ\mu ต่อปีต้องจับคู่กับ covariance ต่อปี และ target return 10% ต้องเขียนเป็น 0.10 หากสูตรใช้หน่วยทศนิยม การป้อน 10 ลงในสูตรเดียวกันจะเปลี่ยนโจทย์ไปหนึ่งร้อยเท่า

เห็น minimum ผ่าน gradient และ Hessian

เริ่มจากโจทย์ที่ยังไม่มี constraints ถ้า ff เรียบและจุดเหมาะสมอยู่ภายในโดเมน gradient ที่จุดนั้นต้องเป็นศูนย์

∇f(x∗)=0.\nabla f(\mathbf x^*)=\mathbf 0.

เงื่อนไขนี้คัดจุดที่เป็นไปได้ แต่ยังแยก minimum, maximum และ saddle point ไม่ได้ Hessian รวบรวมอนุพันธ์อันดับสองของ ff

Hf(x)=[∂2f∂xi∂xj]i,j.H_f(\mathbf x)= \left[ \frac{\partial^2 f}{\partial x_i\partial x_j} \right]_{i,j}.

ถ้า Hessian เป็น positive definite ที่ stationary point ฟังก์ชันโค้งขึ้นทุกทิศทางและจุดนั้นเป็น strict local minimum ถ้าเป็น negative definite จะได้ strict local maximum ส่วน Hessian ที่มีทั้งทิศบวกและลบชี้ไปที่ saddle point

เส้นตัดของ f=x²+y² เทียบกับ f=x²−y² ทั้งคู่มี gradient เป็นศูนย์ที่จุดกำเนิด แต่ความโค้งตามแกนต่างกัน

ทั้งสองกรณีมี gradient เป็นศูนย์ที่จุดกึ่งกลาง แต่เส้นตัดผ่านจุดนั้นแสดงว่าฝั่ง minimum โค้งขึ้นทั้งสองทิศทาง ส่วน saddle โค้งขึ้นทิศหนึ่งและโค้งลงอีกทิศหนึ่ง

Mean–variance แบบไม่มี constraint บนน้ำหนักสินทรัพย์เสี่ยง

ให้ rr เป็นผลตอบแทนสินทรัพย์ปลอดความเสี่ยง μ\boldsymbol\mu เป็นเวกเตอร์ผลตอบแทนคาดหวังของสินทรัพย์เสี่ยง และ Σ\Sigma เป็น covariance matrix น้ำหนักที่ไม่ได้ลงในสินทรัพย์เสี่ยงจะอยู่ในสินทรัพย์ปลอดความเสี่ยง โจทย์จึงเขียนเป็น

max⁡w[r+w⊤(μ−r1)−λ2w⊤Σw],λ>0.\max_{\mathbf w} \left[ r+\mathbf w^\top(\boldsymbol\mu-r\mathbf 1) -\frac{\lambda}{2}\mathbf w^\top\Sigma\mathbf w \right], \qquad \lambda>0.

First-order condition ให้

μ−r1−λΣw∗=0.\boldsymbol\mu-r\mathbf 1-\lambda\Sigma\mathbf w^*=\mathbf 0.

เมื่อ Σ\Sigma กลับด้านได้

w∗=1λΣ−1(μ−r1).\boxed{ \mathbf w^*=\frac{1}{\lambda} \Sigma^{-1}(\boldsymbol\mu-r\mathbf 1). }

Hessian ของ objective คือ −λΣ-\lambda\Sigma ถ้า Σ\Sigma positive definite ฟังก์ชันจะ concave อย่างเคร่งครัดและคำตอบนี้เป็น global maximum เพียงจุดเดียว ค่า λ\lambda เพิ่มสองเท่าจะลดน้ำหนักสินทรัพย์เสี่ยงทุกตัวลงครึ่งหนึ่งในโจทย์นี้ โดยน้ำหนักส่วนที่เหลือย้ายไปสินทรัพย์ปลอดความเสี่ยง

สูตรนี้ยังไม่ได้บังคับ long-only เพดานน้ำหนัก เงินกู้ หลักประกัน หรือต้นทุนซื้อขาย หากผลลัพธ์มีน้ำหนักรวม 160% จะหมายถึงกู้ 60% ที่อัตรา rr ภายใต้สมมติฐานของแบบจำลอง

Regression ก็เริ่มจาก objective

การประมาณ beta หรือ factor exposure เป็นโจทย์ optimization อีกแบบ ให้ YY เป็นผลตอบแทนสินทรัพย์ XX เป็นเมทริกซ์ปัจจัย และ β\boldsymbol\beta เป็นสัมประสิทธิ์

Y=Xβ+ε.Y=X\boldsymbol\beta+\boldsymbol\varepsilon.

Ordinary Least Squares เลือก β\boldsymbol\beta เพื่อลดผลรวม residual ยกกำลังสอง

min⁡β(Y−Xβ)⊤(Y−Xβ).\min_{\boldsymbol\beta} (Y-X\boldsymbol\beta)^\top(Y-X\boldsymbol\beta).

First-order condition ให้ normal equations

X⊤Xβ^=X⊤Y.X^\top X\widehat{\boldsymbol\beta}=X^\top Y.

ถ้า XX มีคอลัมน์เป็นอิสระเชิงเส้นครบ

β^OLS=(X⊤X)−1X⊤Y.\widehat{\boldsymbol\beta}_{\mathrm{OLS}} =(X^\top X)^{-1}X^\top Y.

จุดข้อมูลสมมติ เส้น OLS และระยะ residual แนวตั้งที่ถูกยกกำลังสองรวมกันใน objective

Residual บวกและลบหักล้างกันได้เมื่อรวมตรง ๆ OLS จึงรวมกำลังสองของระยะแต่ละจุด เส้นนี้เป็นตัวอย่างเชิงสอน ไม่ใช่ regression จากหลักทรัพย์จริง

Regression ที่ได้ beta จากข้อมูลย้อนหลังยังไม่พิสูจน์ CAPM ค่า beta และ alpha เปลี่ยนตามช่วงข้อมูล ความถี่ ตัวแทนตลาด และตัวแปรที่ใส่ใน XX

GLS เมื่อ residual มี covariance ไม่เท่ากับ s2Is^2I

ให้

E[ε∣X]=0,Var⁡(ε∣X)=Ω,\mathbb E[\boldsymbol\varepsilon\mid X]=\mathbf 0, \qquad \operatorname{Var}(\boldsymbol\varepsilon\mid X)=\Omega,

โดย Ω\Omega positive definite Generalized Least Squares ใช้ระยะ Mahalanobis

min⁡β(Y−Xβ)⊤Ω−1(Y−Xβ),\min_{\boldsymbol\beta} (Y-X\boldsymbol\beta)^\top \Omega^{-1}(Y-X\boldsymbol\beta),

จึงได้

β^GLS=(X⊤Ω−1X)−1X⊤Ω−1Y.\widehat{\boldsymbol\beta}_{\mathrm{GLS}} =(X^\top\Omega^{-1}X)^{-1}X^\top\Omega^{-1}Y.

ถ้า Ω=CC⊤\Omega=CC^\top จาก Cholesky decomposition ให้ Y∗=C−1YY^*=C^{-1}Y, X∗=C−1XX^*=C^{-1}X และ ε∗=C−1ε\boldsymbol\varepsilon^*=C^{-1}\boldsymbol\varepsilon จะได้

Var⁡(ε∗∣X)=C−1ΩC−⊤=I.\operatorname{Var}(\boldsymbol\varepsilon^*\mid X) =C^{-1}\Omega C^{-\top}=I.

จากนั้นใช้ OLS กับ Y∗=X∗β+ε∗Y^*=X^*\boldsymbol\beta+\boldsymbol\varepsilon^* ได้คำตอบ GLS การแปลงนี้หมุนและปรับสเกล residual ให้ covariance เป็นเอกลักษณ์

กลุ่ม residual รูปวงรีก่อน whitening กลายเป็นวงกลมหลังคูณด้วย inverse Cholesky

วงรีแสดง residual ที่มี scale และ correlation ต่างกัน หลัง whitening ระยะ Euclidean ในพิกัดใหม่เท่ากับ Mahalanobis distance ในพิกัดเดิม

ในงานจริง Ω\Omega มักต้องประมาณ จึงได้ Feasible GLS ความแม่นของผลลัพธ์ขึ้นกับแบบจำลอง covariance ที่เลือกด้วย

Lagrange ใส่ equality constraints เข้าไปในสมการ

ภาพเหมือน Joseph-Louis Lagrange

Joseph-Louis Lagrange วิธีตัวคูณลากร็องจ์นำข้อจำกัดแบบเท่ากันมาเขียนร่วมกับ objective ทำให้เราหาคำตอบจากเงื่อนไขอนุพันธ์ได้ ภาพเส้นสัมผัสด้านล่างแสดงว่าทำไม gradient สองชุดจึงเกี่ยวข้องกัน ภาพสาธารณสมบัติ · Wikimedia Commons · ไม่ทราบผู้สร้างภาพ

สมมติโจทย์มีข้อจำกัด gj(x)=bjg_j(\mathbf x)=b_j เราสร้าง Lagrangian

L(x,λ)=f(x)+∑j=1mλj[gj(x)−bj].\mathcal L(\mathbf x,\boldsymbol\lambda) =f(\mathbf x) +\sum_{j=1}^{m}\lambda_j[g_j(\mathbf x)-b_j].

แล้วแก้ระบบ

∇xL=0,∂L∂λj=gj(x)−bj=0.\nabla_{\mathbf x}\mathcal L=\mathbf 0, \qquad \frac{\partial\mathcal L}{\partial\lambda_j} =g_j(\mathbf x)-b_j=0.

ที่จุดสัมผัส gradient ของ objective ขนานกับ gradient ของ constraint ให้ v∗(b)v^*(\mathbf b) เป็นค่า objective ที่เหมาะสม ภายใต้เงื่อนไข regularity และ Lagrangian แบบที่เขียนข้างบน เรามี ∂v∗/∂bj=−λj\partial v^*/\partial b_j=-\lambda_j เครื่องหมายจะเปลี่ยนหากตั้ง Lagrangian คนละแบบ

เส้น equality constraint สัมผัส contour ต่ำสุดที่ทำได้ โดย gradient ของ objective และ constraint ขนานกัน

จุดที่ต่ำกว่านี้อยู่นอกเส้น constraint ส่วนจุดอื่นบนเส้นเดียวกันตัด contour ระดับสูงกว่า จุดสัมผัสจึงแก้ทั้ง stationarity และ constraint พร้อมกัน

ลองเลื่อนเส้นข้อจำกัด

ใช้ f(x,y) = (x − 1)² + 2(y − 1)² ซึ่งมีจุดต่ำสุดที่ (1,1) เลือกระหว่างไม่มีข้อจำกัด, x + y = c และ x + y ≤ c แล้วเลื่อนค่า c เพื่อดูว่าจุดต่ำสุดที่เลือกได้ย้ายไปอย่างไร เส้นวงรีแต่ละเส้นแสดงระดับของ objective เดียวกัน

ที่ c = 1 คำตอบบนขอบคือ (1/3, 2/3) ทั้งกรณี equality และ inequality แต่เมื่อ c = 3 ข้อจำกัด inequality เปิดทางให้เลือก (1,1) ได้แล้ว ส่วน equality ยังบังคับให้คำตอบอยู่บนเส้น x + y = 3 เราจะกลับมาอ่านเงื่อนไขนี้เป็น complementary slackness ในหัวข้อ KKT

สร้าง covariance matrix จาก volatility และ correlation

ตัวอย่างหลักใช้สินทรัพย์สมมติ X1,…,X4X_1,\ldots,X_4 และผลตอบแทน simple return ระยะหนึ่งปี

สินทรัพย์ X1X_1 X2X_2 X3X_3 X4X_4
ผลตอบแทนคาดหวัง μi\mu_i 5% 7% 15% 27%
ส่วนเบี่ยงเบนมาตรฐาน σi\sigma_i 7% 12% 30% 60%

Correlation matrix คือ

R=(10.80.50.40.810.70.50.50.710.80.40.50.81).R= \begin{pmatrix} 1&0.8&0.5&0.4\\ 0.8&1&0.7&0.5\\ 0.5&0.7&1&0.8\\ 0.4&0.5&0.8&1 \end{pmatrix}.

สร้างเมทริกซ์แนวทแยง S=diag⁡(0.07,0.12,0.30,0.60)S=\operatorname{diag}(0.07,0.12,0.30,0.60) แล้วคำนวณ

Σ=SRS.\boxed{\Sigma=SRS.}

เพราะ SS เป็นเมทริกซ์แนวทแยง เราจึงมี S⊤=SS^\top=S ค่าแนวทแยงของ Σ\Sigma คือ variance และค่านอกแนวทแยงคือ covariance

Σ=(0.00490.006720.01050.01680.006720.01440.02520.03600.01050.02520.09000.14400.01680.03600.14400.3600).\Sigma= \begin{pmatrix} 0.0049&0.00672&0.0105&0.0168\\ 0.00672&0.0144&0.0252&0.0360\\ 0.0105&0.0252&0.0900&0.1440\\ 0.0168&0.0360&0.1440&0.3600 \end{pmatrix}.

Correlation matrix รวมกับ volatility ผ่านสูตร SRS แล้วได้ covariance matrix ของสินทรัพย์สมมติสี่ตัว

สีเข้มช่วยเปรียบเทียบขนาดภายในแต่ละเมทริกซ์ ส่วนตัวเลขเป็นค่าที่ใช้คำนวณจริง Correlation ไม่มีหน่วย ขณะที่ covariance ใช้หน่วยผลตอบแทนยกกำลังสอง

Covariance matrix ต้องเป็น positive semidefinite เพราะ w⊤Σw\mathbf w^\top\Sigma\mathbf w คือ variance และห้ามติดลบ หากเมทริกซ์เกือบ singular การกลับเมทริกซ์โดยตรงจะขยายความคลาดเคลื่อน ควรแก้ระบบสมการและตรวจ condition number แทน

ลด variance โดยกำหนดผลตอบแทนเป้าหมาย

ให้ mm เป็นผลตอบแทนคาดหวังเป้าหมาย และอนุญาตให้ขายชอร์ตได้ โจทย์ risky-only คือ

min⁡w12w⊤Σw\min_{\mathbf w}\frac12\mathbf w^\top\Sigma\mathbf w

subject to

μ⊤w=m,1⊤w=1.\boldsymbol\mu^\top\mathbf w=m, \qquad \mathbf 1^\top\mathbf w=1.

ตั้ง

L=12w⊤Σw−λ(μ⊤w−m)−γ(1⊤w−1).\mathcal L=\frac12\mathbf w^\top\Sigma\mathbf w -\lambda(\boldsymbol\mu^\top\mathbf w-m) -\gamma(\mathbf 1^\top\mathbf w-1).

First-order condition ให้

Σw−λμ−γ1=0,\Sigma\mathbf w-\lambda\boldsymbol\mu-\gamma\mathbf 1=\mathbf 0,

ดังนั้น

w∗=Σ−1(λμ+γ1).\mathbf w^*=\Sigma^{-1} (\lambda\boldsymbol\mu+\gamma\mathbf 1).

กำหนดสเกลาร์

A=1⊤Σ−11,B=μ⊤Σ−11,C=μ⊤Σ−1μ.A=\mathbf 1^\top\Sigma^{-1}\mathbf 1, \quad B=\boldsymbol\mu^\top\Sigma^{-1}\mathbf 1, \quad C=\boldsymbol\mu^\top\Sigma^{-1}\boldsymbol\mu.

เมื่อ AC−B2>0AC-B^2>0

λ=Am−BAC−B2,γ=C−BmAC−B2.\lambda=\frac{Am-B}{AC-B^2}, \qquad \gamma=\frac{C-Bm}{AC-B^2}.

ตัวอย่างสี่สินทรัพย์ให้

A≈239.3440,B≈9.61846,C≈0.550281.A\approx239.3440, \quad B\approx9.61846, \quad C\approx0.550281.

เมื่อ m=10%m=10\% จะได้ λ≈0.365279\lambda\approx0.365279, γ≈−0.0105013\gamma\approx-0.0105013 และ

w∗≈(0.5284120.1728880.1597640.138935).\boxed{ \mathbf w^*\approx \begin{pmatrix} 0.528412\\ 0.172888\\ 0.159764\\ 0.138935 \end{pmatrix}.}

น้ำหนักรวม 100% ผลตอบแทนคาดหวัง 10% และ volatility ประมาณ 16.1328%

น้ำหนักของสินทรัพย์ X1 ถึง X4 ที่ทำให้ variance ต่ำสุดภายใต้ target return 10% และ budget 100%

คำตอบนี้เป็นบวกทุกตัวโดยบังเอิญ ขอบเขตของโจทย์ยังอนุญาตให้ short และคำตอบเปลี่ยนทันทีเมื่อ target หรือ inputs เปลี่ยน

ในโค้ดควรแก้ระบบสมการเชิงเส้นหรือ KKT system แทนการสร้าง Σ−1\Sigma^{-1} เต็มก้อน แล้วตรวจผลย้อนกลับว่า 1⊤w=1\mathbf 1^\top\mathbf w=1 และ μ⊤w=m\boldsymbol\mu^\top\mathbf w=m ภายใน tolerance ที่กำหนด

จาก target หนึ่งค่าไปสู่ทั้ง frontier

เมื่อปล่อยให้ mm เปลี่ยนไป variance ต่ำสุดของแต่ละ target คือ

σP2(m)=Am2−2Bm+CAC−B2.\boxed{ \sigma_P^2(m)= \frac{Am^2-2Bm+C}{AC-B^2}. }

Global minimum-variance portfolio อยู่ที่

mGMV=BA,wGMV=Σ−11A,σGMV2=1A.m_{\mathrm{GMV}}=\frac{B}{A}, \qquad \mathbf w_{\mathrm{GMV}} =\frac{\Sigma^{-1}\mathbf 1}{A}, \qquad \sigma_{\mathrm{GMV}}^2=\frac1A.

สำหรับตัวอย่างนี้

wGMV≈(1.274887−0.2631130.016339−0.028113),\mathbf w_{\mathrm{GMV}}\approx \begin{pmatrix} 1.274887\\ -0.263113\\ 0.016339\\ -0.028113 \end{pmatrix},

ผลตอบแทนคาดหวังประมาณ 4.0187% และ volatility 6.4638% น้ำหนัก X1X_1 127.49% มาจากการ short X2X_2 และ X4X_4 โจทย์คณิตศาสตร์ยอมรับคำตอบนี้เพราะเรายังไม่ได้ห้าม short หรือกำหนด gross exposure

Efficient frontier ของตัวอย่างสี่สินทรัพย์ แสดง GMV พอร์ตเป้าหมาย 10% จุด tangency และเส้นจากอัตราปลอดความเสี่ยง 2.5%

ครึ่งบนเหนือ GMV เป็น efficient branch ภายใต้ชุดสินทรัพย์และการอนุญาต short นี้ จุด target 10% เป็นคำตอบของ equality-constrained problem หนึ่งค่า

น้ำหนักของ X1 ถึง X4 บน minimum-variance frontier เมื่อเลื่อน target return โดยส่วนที่ต่ำกว่าศูนย์คือสถานะ short

เมื่อ Target สูงขึ้น Optimizer ปรับ long–short หลายขาเพื่อให้ budget และ target เท่ากันพร้อมลด variance จึงต้องอ่านการเปลี่ยนแปลงของน้ำหนักทุกขาร่วมกัน

เพิ่มสินทรัพย์ปลอดความเสี่ยง

เมื่อ r=2.5%r=2.5\% และต้องการผลตอบแทน mm น้ำหนักสินทรัพย์เสี่ยงที่ลด variance คือ

w∗(m)=(m−r)Σ−1(μ−r1)(μ−r1)⊤Σ−1(μ−r1).\mathbf w^*(m)= \frac{(m-r)\Sigma^{-1}(\boldsymbol\mu-r\mathbf 1)} {(\boldsymbol\mu-r\mathbf 1)^\top \Sigma^{-1}(\boldsymbol\mu-r\mathbf 1)}.

ที่ m=10%m=10\%

w∗≈(0.8873520.0812630.1548430.121649).\mathbf w^*\approx \begin{pmatrix} 0.887352\\ 0.081263\\ 0.154843\\ 0.121649 \end{pmatrix}.

น้ำหนักสินทรัพย์เสี่ยงรวม 124.5108% น้ำหนักสินทรัพย์ปลอดความเสี่ยงจึงเป็น 1−1.245108=−24.5108%1-1.245108=-24.5108\% ซึ่งแปลว่ากู้เงินภายใต้สมมติฐานที่กู้ได้ที่ 2.5% โดยไม่มีข้อจำกัด

Tangency portfolio ของสินทรัพย์เสี่ยง normalize จากทิศทางเดียวกัน

wT=Σ−1(μ−r1)1⊤Σ−1(μ−r1)≈(0.7126710.0652660.1243610.097701).\mathbf w_T= \frac{\Sigma^{-1}(\boldsymbol\mu-r\mathbf 1)} {\mathbf 1^\top\Sigma^{-1}(\boldsymbol\mu-r\mathbf 1)} \approx \begin{pmatrix} 0.712671\\ 0.065266\\ 0.124361\\ 0.097701 \end{pmatrix}.

พอร์ตนี้มีผลตอบแทนคาดหวังประมาณ 8.5236%, volatility 12.8731% และ Sharpe ratio ประมาณ 0.4679 ดูความหมายของ frontier, CAL และ tangency เพิ่มเติมได้ใน บท Portfolio Theory

KKT บอกว่า constraint ใดกำลังบังคับคำตอบ

ข้อจำกัด long-only เขียนเป็น −wi≤0-w_i\le0 เพดานน้ำหนักเขียนเป็น wi−ui≤0w_i-u_i\le0 และข้อจำกัด gross exposure มักต้องเพิ่มตัวแปรช่วยเพื่อจัดการค่าสัมบูรณ์

สำหรับโจทย์

min⁡xf(x)subject togj(x)≤0,hk(x)=0,\min_{\mathbf x}f(\mathbf x) \quad\text{subject to}\quad g_j(\mathbf x)\le0, \quad h_k(\mathbf x)=0,

Karush–Kuhn–Tucker conditions ประกอบด้วย

∇f(x∗)+∑jνj∇gj(x∗)+∑kλk∇hk(x∗)=0,\nabla f(\mathbf x^*) +\sum_j\nu_j\nabla g_j(\mathbf x^*) +\sum_k\lambda_k\nabla h_k(\mathbf x^*)=\mathbf0,
gj(x∗)≤0,hk(x∗)=0,νj≥0,g_j(\mathbf x^*)\le0, \qquad h_k(\mathbf x^*)=0, \qquad \nu_j\ge0,
νjgj(x∗)=0.\boxed{\nu_jg_j(\mathbf x^*)=0.}

Complementary slackness บอกว่า constraint ที่ยังเหลือช่องว่างต้องมี multiplier เป็นศูนย์ ส่วน multiplier บวกเกิดได้เมื่อ constraint ชนขอบ ใน convex quadratic portfolio problem ที่ constraints เป็น affine และมีจุด feasible ตามเงื่อนไข regularity KKT ใช้ยืนยัน global optimum ได้

Target return 20% ให้ unconstrained portfolio short X1 แต่ long-only optimum บังคับน้ำหนัก X1 เท่ากับศูนย์และย้ายคำตอบไปที่ขอบ feasible set

ในตัวอย่าง target 20% คำตอบ unconstrained มี w1=−71.96%w_1=-71.96\% ส่วน long-only ทำให้ constraint w1≥0w_1\ge0 binding และเลือก w1=0w_1=0

พอร์ต long-only สำหรับ target 20% คือ

wlong-only≈(00.0263160.5394740.434211),\mathbf w_{\mathrm{long\text{-}only}} \approx \begin{pmatrix} 0\\0.026316\\0.539474\\0.434211 \end{pmatrix},

มี volatility ประมาณ 40.3829% สูงกว่าคำตอบที่อนุญาต short เล็กน้อย ข้อจำกัดทำให้พอร์ตลงทุนได้ตามกติกา แลกกับ objective ที่แย่ลงหรือเท่าเดิม

130–30 บอก net และ gross exposure

พอร์ต 130–30 ถือสถานะ long รวม 130% และ short รวม 30%

∑imax⁡(wi,0)=1.30,−∑imin⁡(wi,0)=0.30.\sum_i\max(w_i,0)=1.30, \qquad -\sum_i\min(w_i,0)=0.30.

Net exposure เท่ากับ 100% และ gross exposure เท่ากับ 160% ชื่อนี้ยังไม่กำหนดเองว่าควร long หรือ short ตัวใด ต้องมี objective, ข้อจำกัดรายสินทรัพย์ ต้นทุนยืม และกติกา rebalance เพิ่มเติม

แยก benchmark ออกจาก active positions

ให้ wB\mathbf w_B เป็นน้ำหนัก benchmark และ wP\mathbf w_P เป็นน้ำหนักพอร์ต กำหนด active weights

Δw=wP−wB.\Delta\mathbf w=\mathbf w_P-\mathbf w_B.

ถ้าพอร์ตและ benchmark ลงทุนครบ 100% ทั้งคู่

1⊤Δw=0.\boxed{\mathbf 1^\top\Delta\mathbf w=0.}

ผลตอบแทนพอร์ตแยกเป็น

RP=wB⊤R+Δw⊤R=RB+RA.R_P=\mathbf w_B^\top\mathbf R +\Delta\mathbf w^\top\mathbf R =R_B+R_A.

Tracking error ภายใต้ covariance Σ\Sigma คือ

TE⁡=Δw⊤ΣΔw.\operatorname{TE} =\sqrt{\Delta\mathbf w^\top\Sigma\Delta\mathbf w}.

ตัวอย่าง active mean–variance problem ใช้

max⁡Δw[Δw⊤α−λA2Δw⊤ΣΔw]\max_{\Delta\mathbf w} \left[ \Delta\mathbf w^\top\boldsymbol\alpha -\frac{\lambda_A}{2} \Delta\mathbf w^\top\Sigma\Delta\mathbf w \right]

subject to 1⊤Δw=0\mathbf 1^\top\Delta\mathbf w=0 และข้อจำกัดน้ำหนักหรือ tracking error ที่กองทุนใช้จริง

พอร์ตสุดท้ายเกิดจาก benchmark บวก active overweight และ underweight ที่รวมเป็นศูนย์ พร้อมเปรียบเทียบ net และ gross exposure ของ 130–30

Active weight บวกคือ overweight เทียบ benchmark และค่าลบคือ underweight ค่าลบจะเป็น short ก็ต่อเมื่อน้ำหนักพอร์ตสุดท้าย wP,iw_{P,i} ต่ำกว่าศูนย์ ผลรวม active weights เป็นศูนย์เพราะ benchmark รับ budget 100% ไว้แล้ว

Target เดียวกัน เมื่อห้ามขายชอร์ต

ใช้ค่าเฉลี่ยและ covariance ของสินทรัพย์สี่ตัวข้างต้น เปรียบเทียบพอร์ต variance ต่ำสุดที่ target เดียวกัน แล้วสังเกตว่าสินทรัพย์ใดมีน้ำหนักลดลงถึงศูนย์

ค่าเฉลี่ยของสินทรัพย์อยู่ระหว่าง 5% กับ 27% พอร์ตที่น้ำหนักไม่ติดลบและรวมเป็นหนึ่งจึงให้ผลตอบแทนคาดหวังนอกช่วงนี้ไม่ได้ หากเปิดขายชอร์ต ข้อจำกัดนี้หายไป แต่ขนาดสถานะและความเสี่ยงอาจเพิ่มขึ้นมาก

ตรวจ optimizer ก่อนเชื่อน้ำหนัก

จุดที่ต้องตรวจ วิธีตรวจ
หน่วยของ μ,Σ,r\mu,\Sigma,r ใช้ช่วงเวลาและรูปแบบทศนิยมเดียวกันทุกตัว
Constraint residuals คำนวณ 1⊤w−1\mathbf1^\top\mathbf w-1, μ⊤w−m\boldsymbol\mu^\top\mathbf w-m และ inequality violations หลัง solve
Covariance เกือบ singular ตรวจ eigenvalues/condition number ใช้ linear solve, regularization หรือ factor model ที่มีเหตุผลรองรับ
น้ำหนักไวต่อ expected returns ขยับ μ\mu และ Σ\Sigma ทีละน้อย แล้วเทียบ turnover, gross exposure และ objective
Solver status แยก optimal, infeasible, unbounded และ numerical failure ไม่ใช้คำตอบล่าสุดเงียบ ๆ
In-sample fit ทดสอบนอกช่วงที่ใช้ประมาณค่าและคิดต้นทุนซื้อขาย
Benchmark ตรวจว่า active weights รวมเป็นศูนย์และใช้ benchmark ตัวเดียวกับรายงานผล

การตรวจ residual ยืนยันว่าโปรแกรมแก้โจทย์ตามที่ตั้งไว้ได้ ส่วนผลตอบแทนหลังลงทุนยังขึ้นกับความคลาดเคลื่อนของ μ\mu, Σ\Sigma และต้นทุนที่แบบจำลองอาจไม่ได้รวมไว้ จึงต้องทดสอบพอร์ตกับข้อมูลที่ไม่ได้ใช้ประมาณค่าและสถานการณ์ที่ต่างจากช่วงฝึกด้วย

ลองคำนวณต่อ

  1. ตรวจว่าน้ำหนัก target 10% รวมเป็นหนึ่ง และใช้ μ⊤w\boldsymbol\mu^\top\mathbf w คำนวณผลตอบแทนกลับ
  2. ใช้ γ=−0.0105013\gamma=-0.0105013 ใน Σ−1(λμ+γ1)\Sigma^{-1}(\lambda\boldsymbol\mu+\gamma\mathbf1) แล้วสังเกตว่าการเปลี่ยนเครื่องหมาย γ\gamma ทำให้ constraints ผิดอย่างไร
  3. น้ำหนักสินทรัพย์เสี่ยงสำหรับ target 10% เมื่อมี r=2.5%r=2.5\% รวมเป็นเท่าไร และต้องถือสินทรัพย์ปลอดความเสี่ยงเท่าไร
  4. ที่ target 20% long-only solution มี constraint ใด binding และ complementary slackness บอกอะไรเกี่ยวกับ multiplier ของ constraint นั้น
  5. ถ้า benchmark และพอร์ตลงทุนครบ 100% ทั้งคู่ จงพิสูจน์ว่า active weights รวมเป็นศูนย์
ดูแนวคำตอบ
  1. น้ำหนักรวมประมาณ 1 และ expected return ประมาณ 0.10 ส่วน volatility ประมาณ 0.161328
  2. เมื่อเปลี่ยนเป็น γ=+0.0105013\gamma=+0.0105013 คำตอบจะไม่ใช่น้ำหนักชุดที่รายงานและไม่รักษา target/budget ตามระบบสมการเดิม
  3. Risky weights รวมประมาณ 1.245108 จึงมี risk-free weight ประมาณ −0.245108 หรือกู้ 24.5108%
  4. Constraint w1≥0w_1\ge0 binding ที่ w1=0w_1=0 และ multiplier สามารถเป็นบวกได้ ส่วน constraint ที่ยัง slack ต้องมี multiplier ศูนย์
  5. 1⊤Δw=1⊤wP−1⊤wB=1−1=0\mathbf1^\top\Delta\mathbf w=\mathbf1^\top\mathbf w_P-\mathbf1^\top\mathbf w_B=1-1=0

ทำต่อใน Python

ดาวน์โหลด Notebook ของบท Optimization Problem เพื่อสร้าง covariance, แก้ target-return portfolio, ตรวจ GMV และ tangency, ทำ GLS whitening และเปรียบเทียบ unconstrained กับ long-only solution ตัวอย่างทั้งหมดใช้ Python standard library และรันซ้ำได้

อ่านต่อ: Black–Litterman Portfolio

เมื่อกำหนด objective และ constraints ได้แล้ว ขั้นต่อไปคือเลือก expected returns ที่จะส่งเข้า optimizer บท Black–Litterman Portfolio ใช้สินทรัพย์สมมติและ covariance ชุดเดียวกัน เพื่อหา prior จากพอร์ตตลาดและผสมมุมมองของผู้ลงทุนพร้อมความไม่แน่นอน

ลองปรับความไม่แน่นอนของ views และ risk aversion ได้ใน ห้องทดลอง Black–Litterman

เอกสารประกอบ

  • Fundamentals of Optimization and Application to Portfolio Selection, CQF, เนื้อหาเรื่อง objective, regression, Lagrange, KKT และ active portfolio

ข้อมูลสมมติและวิธีตรวจตัวเลข

ภาพการ์ตูน Nuthdanai Wangpratham

ผู้เขียน · QuantCorner

Nuthdanai Wangpratham

แบ่งปันความรู้ด้าน Quantitative Finance และ AI เพื่อให้การเรียนรู้เรื่องการลงทุนเริ่มต้นได้จากตัวอย่างที่ลองทำตามได้

อ่านบทนี้แล้วอยากเรียนรู้ต่อ? ติดตามผู้เขียนและ QuantCorner ได้ที่นี่

ค้นหาในสมุดบันทึก