[理財] 如何挑選 ETF

理財知識:如何挑選 ETF
工具:ETF.com

簡介:常比較的參數

Issuer (發行公司)
  • 公司架構
    • 推薦 Vanguard 的架構,買進即為股東
  • 誠信度
Index Tracked (追蹤指數)
  • 如何編製
  • 區域
  • 涵蓋率
Expense Ratio (內扣費)
  • 一年的費用率
    • 國外通常為總費用率
    • 國內通常不是總費用率,還需加上其他費用
  • 實際報酬 = 理想報酬 - 內扣費率
Assets Under Management (資產管理規模)
  • 理論上規模越大,越能購買資產,則越能貼近指數
Bid-Ask Spread (買賣價差)
%=askbidask×100
  • 買家的最高價 與 賣家的最低價 的差值
    • 影響買賣成本
Tracking Difference (追蹤誤差)
  • 與指數的誤差
    • 貼近指數最好,即使超越指數也不好
  • 發行公司的操作能力
Premium/Discount (溢價折價)
  • ETF 市價與 NAV(淨值) 的差價
    • 可說是 ETF 與 基金 的誤差
Holdings (持有資產)
  • 數目
  • 類型
  • 國家
Strategy (追蹤策略)
  • 主要分類
    • 主動(最差)
    • 採樣(次等)
    • 完全複製(最好)
  • ETF.com 中的分類
    • Active (主動)
    • Vanilla (單純複製或採樣)
    • Currency Hedged (貨幣避險)
    • Bullet Maturity
    • Buy-write
    • Copycat (模仿)
    • Depositary Receipts
    • Dividends
    • Duration Hedged
    • Equal
    • ESG
    • Exchange-specific
    • Extended Term
    • Fixed Asset Allocation
    • Fundamental
    • Growth
    • High Beta
    • Laddered
    • Low Volatility
    • Momentum
    • Time Since Launch
    • Value
    • Volatility Hedged
    • Multi-factor
    • Optimized commodity
    • Price-weighted
    • Target Duration
    • Target Tenor
    • Technical
Portfolio (資產配置)
  • 分散投資降低風險
    • 股票與債券
    • 不同全球區域
    • 涵蓋率
    • 相關係數 彼此為負相關
  • 工具

成本公式

return=[(1feemoney)priceFinalpriceStart(1Spread2)(1Premium)(1+Spread2)(1Discount)feemoney]1yearcost=priceFinalpriceStartreturn+E/R+T/D=priceFinalpriceStart[(1feemoney)priceFinalpriceStart(1Spread2)(1Premium)(1+Spread2)(1Discount)feemoney]1year+E/R+T/D return:實際年報酬率
cost:年成本率
E/R:內扣費率
T/D:追蹤誤差
fee:買賣手續費
money:投資金額
year:投資年數
priceFinal:賣出報酬指數淨值
priceStart:購買報酬指數淨值
Spread:買賣價差(%)
Premium:溢價
Discount:折價
buyPrice:購買價
sellPrice:賣出價
rest:實際購買金額
number:購買股數
gain:獲利金額
idealReturn:理想年報酬率
priceStart=buyPrice(1Spread2)(1Premium)buyPrice=priceStart(1Spread2)(1Premium)priceFinal=sellPrice(1+Spread2)(1Discount)sellPrice=priceFinal(1+Spread2)(1Discount)rest=moneyfeenumber=restbuyPricegain=numbersellPricefeeidealReturn=(priceFinalpriceStart)1yearreturn=(gainmoney)1year=(numbersellPricefeemoney)1year=(restbuyPricesellPricefeemoney)1year=[moneyfeepriceStart(1Spread2)(1Premium)priceFinal(1+Spread2)(1Discount)feemoney]1year=[(moneyfee)priceFinalpriceStart(1Spread2)(1Premium)(1+Spread2)(1Discount)feemoney]1year=[(1feemoney)priceFinalpriceStart(1Spread2)(1Premium)(1+Spread2)(1Discount)feemoney]1yearcost=idealReturnreturn+E/R+T/D=(priceFinalpriceStart)1yearreturn+E/R+T/D=(priceFinalpriceStart)1year[(1feemoney)priceFinalpriceStart(1Spread2)(1Premium)(1+Spread2)(1Discount)feemoney]1year+E/R+T/D
程式碼驗證
Playground
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "math"
  6. )
  7.  
  8. type info struct {
  9. 名字 string
  10.  
  11. 投資金額,
  12. 投資年數,
  13. 買賣手續費,
  14. 內扣費率,
  15. 追蹤誤差, //取最大絕對值
  16. 購買報酬指數淨值,
  17. 賣出報酬指數淨值,
  18. 買賣價差,
  19. 溢價,
  20. 折價 float64
  21.  
  22. 購買價,
  23. 購買股數,
  24. 賣出價,
  25. 獲利金額,
  26. 理想年報酬率,
  27. 實際年報酬率,
  28. 年成本率,
  29. 驗算 float64
  30. }
  31.  
  32. func (i *info) 計算年成本率() bool {
  33. i.購買價 = i.購買報酬指數淨值 / (1 - i.買賣價差/2) / (1 - i.溢價)
  34. i.購買股數 = (i.投資金額 - i.買賣手續費) / i.購買價
  35.  
  36. i.賣出價 = i.賣出報酬指數淨值 / (1 + i.買賣價差/2) / (1 - i.折價)
  37. i.獲利金額 = i.購買股數*i.賣出價 - i.買賣手續費
  38.  
  39. i.理想年報酬率 = math.Pow(i.賣出報酬指數淨值/i.購買報酬指數淨值, 1/i.投資年數)
  40. i.實際年報酬率 = math.Pow(i.獲利金額/i.投資金額, 1/i.投資年數)
  41.  
  42. i.年成本率 = i.理想年報酬率 - i.實際年報酬率 + i.內扣費率 + i.追蹤誤差
  43.  
  44. i.驗算 = i.理想年報酬率 -
  45. math.Pow(
  46. (1-i.買賣手續費/i.投資金額)*i.賣出報酬指數淨值/i.購買報酬指數淨值*
  47. (1-i.買賣價差/2)/(1+i.買賣價差/2)*(1-i.溢價)/(1-i.折價)-
  48. i.買賣手續費/i.投資金額, 1/i.投資年數) +
  49. i.內扣費率 + i.追蹤誤差
  50.  
  51. i.理想年報酬率 *= 100
  52. i.實際年報酬率 *= 100
  53. i.年成本率 *= 100
  54. i.驗算 *= 100
  55.  
  56. return i.驗算 == i.年成本率
  57. }
  58.  
  59. func (i *info) 報表() {
  60. fmt.Println(i.名字)
  61. fmt.Printf("理想年報酬率:%.4f%%\n", i.理想年報酬率)
  62. fmt.Printf("實際年報酬率:%.4f%%\n", i.實際年報酬率)
  63. fmt.Printf("年成本率:%.4f%%\n", i.年成本率)
  64. fmt.Println()
  65. }
  66.  
  67. func main() {
  68. const (
  69. 投資金額 = 5000.0
  70. 投資年數 = 20.0
  71. 買賣手續費 = 6.95
  72. )
  73.  
  74. VTI := info{
  75. 名字: "VTI",
  76. 投資金額: 投資金額,
  77. 投資年數: 投資年數,
  78. 買賣手續費: 買賣手續費,
  79. 內扣費率: 0.04 / 100,
  80. 追蹤誤差: 0.02 / 100,
  81. 購買報酬指數淨值: 10.0,
  82. 賣出報酬指數淨值: 10.0,
  83. 買賣價差: 0.01 / 100,
  84. 溢價: 0.1 / 100,
  85. 折價: -0.06 / 100,
  86. }
  87. if VTI.計算年成本率() {
  88. VTI.報表()
  89. } else {
  90. fmt.Println(VTI.名字, "計算錯誤")
  91. }
  92.  
  93. SPTM := info{
  94. 名字: "SPTM",
  95. 投資金額: 投資金額,
  96. 投資年數: 投資年數,
  97. 買賣手續費: 買賣手續費,
  98. 內扣費率: 0.03 / 100,
  99. 追蹤誤差: 0.18 / 100,
  100. 購買報酬指數淨值: 10.0,
  101. 賣出報酬指數淨值: 10.0,
  102. 買賣價差: 0.14 / 100,
  103. 溢價: 0.36 / 100,
  104. 折價: -0.8 / 100,
  105. }
  106. if SPTM.計算年成本率() {
  107. SPTM.報表()
  108. } else {
  109. fmt.Println(SPTM.名字, "計算錯誤")
  110. }
  111.  
  112. }

範例

假設 VTI 與 SPTM 的比較,券商的手續費為 $6.95,而 SPTM 因優惠而無需手續費
請問何者為比較好的標的?
ETF.com 可以查到以下資訊
注意:因查詢時間不同,可能會有不同的資訊
VTISPTM
發行公司VanguardSPDR
追蹤指數CRSP US Total Market IndexRussell 3000 Index
內扣費0.04%0.03%
資產管理規模$86.54B$520.2M
平均買賣價差0.01%($0.01)0.14%($0.26)
最大追蹤誤差0.01%/-0.02%0.13%/-0.18%
最大溢價折價0.1%/-0.06%0.36%/-0.8%
持有資產數目35412256
追蹤策略採樣採樣
若從成本角度來看,代入公式
假設投入時間為 20 年,投入金額 $5000,價格無變化,也就是報酬率為 100%
VTISPTM
年成本率0.0824%0.289%
故在此 case 中,VTI 會是較好的選擇,無論是簡單的比較,又或是細算成本
順帶一提,若手續費為 $2.95/$0,VTI 成本分別為 0.0744%/0.0685%

若是非要更換之,可使用工具,進行回測與持股分析,至少過去是一致的

留言