如何使用他們的標準普爾 500 指數和擴展股票市場基金複製 Vanguard 的總股票市場指數?
我想用我的 401(k) 的一部分來估計整個美國股市。我可以使用兩個低成本指數共同基金:追踪標準普爾 500 指數(大盤股)的VIIIX和追踪標準普爾完成指數(中小盤股)的VIEIX 。
我應該使用什麼相對權重讓這兩個基金相當於VTSMX 之類的?除了 50:50 之外,如何確定這一點?
簡短的回答
該比率與 VTSMX 的市值分佈相當接近,儘管它並不完美,因為您可以使用的兩個基金 VIIIX 和 VIEIX 在其持股方面有些重疊。標準普爾 500 指數和完成指數沒有。使用標準普爾 500 指數和完成指數作為相對權重,VIIIX 和 VIEIX 分別為 (14.7+3.4)/14.7 = 81.2% 和 1-0.812 = 18.8%。
我們可以使用以下兩種方法中的任何一種來驗證這是否接近最佳分配。基於此,可以肯定地說,將 81% 分配給 VIIIX 和 19% 分配給 VIEIX 應該可以很好地複制 VTSMX。請記住,由於費用比率(以及其他因素),您複製的投資組合的回報可能與目標投資組合的回報不完全匹配。
長答案
據晨星稱,VTSMX的市值分佈如第一列所示。
Market Cap % of Portfolio Benchmark Category Avg. Giant 41.42 44.96 53.38 Large 30.50 33.25 28.92 Medium 19.47 20.04 15.70 Small 6.20 1.74 1.85 Micro 2.41 0.02 0.15
Morningstar 將 VTSMX 置於大型混合類別中,因此右側列中的類別平均值適用於該類別。基準指數是羅素1000指數。
Market Cap % (VIIIX) % (VIEIX) Giant 51.28 0.43 Large 36.20 5.38 Medium 12.43 48.06 Small 0.09 32.62 Micro 0.00 13.51
我們希望找到 VIIIX 和 VIEIX 的分配,即總和為 1 的兩個百分比,從而為我們提供市值分佈盡可能接近 VTSMX 的投資組合。有幾種方法可以解決這個問題;兩者都返回相同的解決方案:
方法1:在Excel中尋找目標
使用 Excel 的目標搜尋功能,我發現將投資組合的 80.5712423979149% 分配給 VIIIX,將剩餘的 (19.4287576%) 分配給 VIEX 會產生這種分佈(顯示在“複製”列中),這非常接近。第二個數據列是 VTSMX,即您嘗試複製的基金。
Market Cap % (replicated) % (VTSMX) "% Error" Giant 41.40 41.42 0.0471 Large 30.21 30.50 0.9441 Medium 19.35 19.47 0.6037 Small 6.41 6.20 3.3899 Micro 2.62 2.41 8.9139
這給了我在上面的簡短答案中列出的大約 81% 到 VIIIX 和 19% 到 VIEIX 的分配。百分比誤差(計算為分配之間的差異的絕對值除以 VTSMX 中的分配)隨著市值的減少而增加,但這不應該打擾您。由於分配隨著市值的減少而減少,即使誤差隨著市值的降低而增加,該誤差在基金實際價值中所佔的比例也越來越小。
這不是一個完美的系統,因為我在這裡稍微濫用了“加權百分比錯誤”的概念,但希望這個想法很清楚。
方法 2:矩陣
在這種特定情況下,矩陣提供了一種更加穩健且合乎邏輯的策略。從數學的角度來看,這是我們試圖解決的問題:
其中
w1
和w2
分別是您想要在 401K 投資組合中分配的 VIIIX 和 VIEIX 的百分比。乍一看,您似乎可以簡單地求解最後一個方程w2
並將該值代入前四個方程中的任何一個來求解w1
; 不幸的是,如果你用第四個等式嘗試這個策略,你會得到一個值w1 = 4.2816
,但是如果你用第三個等式嘗試這個,你會得到w1 = 0.87716
。如果您嘗試w1
在任何其他方程式中使用來自第四個方程式的值(除了第五個,這無關緊要),您會發現它不起作用。w1
來自第三個等式或第二個或第一個等式的 也是如此。看來我們有問題。然而,一切並沒有失去。如果你曾經學過代數課程,你會看到上面的方程組看起來像這個矩陣方程:
我在等式左側標記了數值矩陣
A
以節省空間。線性代數理論對每個人來說可能並不像對我一樣令人興奮,所以我會保持簡短。由於A
是一個秩為2 的 5x2 矩陣,因此它有一個左逆矩陣,我們可以這樣計算:有了我們的左逆,我們可以快速找到矩陣方程的解,如下所示:
這為我們提供了與 Excel 相同的解決方案。了解這是解決問題的“最佳”解決方案也很重要;換句話說,我們發現 VIIIX 和 VIEIX 的權重盡可能地複制了 VTSMX 的市值分佈。
如果您曾經學習過統計學或計量經濟學課程,您可能會將左逆的計算和應用視為權重的普通最小二乘 (OLS)估計;這意味著在這種情況下,“最接近”意味著我們找到的權重最小化了我們複製的投資組合和 VTSMX 之間差異(“誤差”或“殘差”)的平方和。
雖然矩陣/OLS 方法似乎更複雜,但我將其包括在內,因為如果您嘗試使用兩個以上的基金複製投資組合,它的計算速度可能比使用 Excel 快得多。在複製中使用兩個以上基金的情況下,矩陣/OLS 方法也可以很好地擴展。此外,在這種情況下,我們將標準普爾 500 指數和完成指數的相對權重用作指導,但是一旦我們開始添加更多基金,並且它們之間可能有更多重疊的持股,計算簡單的比率可能幾乎不會奏效。然而,在更複雜的情況下,即使是簡單的線性回歸也可能不起作用,您需要使用約束回歸和線性/二次規劃的方法來完成這項工作(如果它確實有效)。
結果/投資組合比較
如果您將權重替換
w1
為w2
在 Excel 中或使用矩陣中找到的原始方程組或矩陣方程的左側(在統計術語中,您正在計算線性預測值)您可以看到您複製的投資組合與 VTSMX 中的市值分配不完全匹配;具體而言,它過度分配給大、小和微型股,而對大中型股公司分配不足。
我很好奇複製的投資組合將如何針對 VTSMX 執行,因此我在 MATLAB 中執行了一個快速仿真來比較每個投資組合的性能。首先,我做了幾個假設:
- 在十年期開始時,您在每個投資組合中投資 10,000 美元。對於同一時期的每個月,您額外投資 1,000 美元。
- 我使用公式對巨型/大型、大型、中型/中型、小型和微型股的平均年回報
1 + annual = (1 + monthly)^12
進行了去年化處理。另一種選擇是找到一組達到VTSMX平均 10 年回報的權重。- 我以與計算預測值相同的方式計算了複製投資組合的加權費用比率。使用VIIIX (0.02%) 和VIEIX (0.12%) 的費用率,我得出的加權費用率為 0.039%。
- 我忽略了通貨膨脹,因為它應該同樣適用於 VTSMX 和複製的投資組合
- 我忽略了交易成本;我認為這是購買共同基金時的安全假設。
仿真結果:
如您所見,複製的投資組合與 VTSMX 非常匹配。VTSMX 投資組合的最終價值為 185,561.89 美元;對於複製的投資組合,它是 185,992.72 美元。
複製投資組合的表現優於 VTSMX 投資組合,部分原因是複制投資組合由機構股票組成,其費用比率遠低於 VTSMX 使用的投資者股票(市值分佈也有影響)。即使您投資了VTSAX,即與 VTSMX 相當的 Admiral Shares,其費用比率低得多,僅為 0.05%,加權費用比率仍然較低,為 0.039318,您的回報率仍然超過基準基金(在這種情況下為 VTASX)。VTSAX 和複製的投資組合的最終結果分別為 185,580.43 美元和 185,992.72 美元。距離已經縮小,但 Vanguard 基金不足以擊敗您的投資組合。
注意事項
儘管這些平均回報可能無法準確代表 VTSMX 或您複製的投資組合中的持股量,並且每個市值的平均回報統計數據可能代表的持股量與 Vanguard 基金的持股量略有不同,但這些細微差別在此範例中不會造成問題,因為我’我使用相同的基準來估計 VTSMX 和複製投資組合的回報。
程式碼
這是用於仿真的 MATLAB 程式碼;我在 Excel 中製作了圖表。
clear %% Funds available for replication VIIIX = [51.28;36.2;12.43;0.09;0] / 100; VIEIX = [0.43;5.38;48.06;32.62;13.51] / 100; expVIIIX = 0.02/100; expVIEIX = 0.12/100; %% Replication target VTSMX = [41.42;30.5;19.47;6.2;2.41] / 100; expVTSMX = 0.17/100; %% Calculation of weights w1 and w2 A = [VIIIX VIEIX]; w = A \ VTSMX; %% Market cap distribution, weighted expense ratio of replicated portfolio REPPORT = A * w; expREPPORT = [expVIIIX expVIEIX] * w; %% De-annualized average returns and expense ratios avgAnnRet = [0.0646;0.0572;0.0624;0.0848;0.0616]; avgMonRet = (1 + avgAnnRet).^(1/12) - 1; expMonVTSMX = (1 + expVTSMX)^(1/12) - 1; expMonREPPORT = (1 + expREPPORT)^(1/12) - 1; %% Simulation % Parameters startYear = 2010; endYear = 2020; initialInv = 10000; monthlyInv = 1000; % Initial investments, weighted by market cap valVTSMX = initialInv * VTSMX; valREPPORT = initialInv * REPPORT; data = zeros((endYear - startYear)*12+1, 2); for month=startYear:1/12:endYear valVTSMX = monthlyInv * VTSMX + valVTSMX.*(1+avgMonRet); valREPPORT = monthlyInv * REPPORT + valREPPORT.*(1+avgMonRet); data(round(12*(month-startYear))+1, :) = [sum(valVTSMX)*(1-expMonVTSMX), ... sum(valREPPORT)*(1-expMonREPPORT)]; end xlswrite('returns.xls', data, 'Data', 'A2');