理財知識:如何挑選 ETF
工具:ETF.com
簡介:常比較的參數
Issuer (發行公司)
Index Tracked (追蹤指數)
Expense Ratio (內扣費)
- 一年的費用率
- 國外通常為總費用率
- 國內通常不是總費用率,還需加上其他費用
- 實際報酬 = 理想報酬 - 內扣費率
Assets Under Management (資產管理規模)
Bid-Ask Spread (買賣價差)
$$
\%=\frac{ask-bid}{ask}\times 100
$$
Tracking Difference (追蹤誤差)
Premium/Discount (溢價折價)
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 (資產配置)
- 分散投資降低風險
- 股票與債券
- 不同全球區域
- 涵蓋率
- 相關係數 彼此為負相關
- 工具
- 持股分析
- 若換網址,可從 MorningStar -> USA -> Tools -> Instant X-Ray
- 回測
成本公式
$$
\begin{align*}
return&=\left [(1-\frac{fee}{money})*\frac{priceFinal}{priceStart}* \frac{(1-\frac{Spread}{2}) * (1-Premium)}{(1+\frac{Spread}{2}) * (1-Discount)} -\frac{fee}{money}\right ]^\frac{1}{year}\\
cost &= \frac{priceFinal}{priceStart}-return + E/R + T/D\\
&= \frac{priceFinal}{priceStart}-\left [(1-\frac{fee}{money})*\frac{priceFinal}{priceStart}* \frac{(1-\frac{Spread}{2}) * (1-Premium)}{(1+\frac{Spread}{2}) * (1-Discount)} -\frac{fee}{money}\right ]^\frac{1}{year} + E/R + T/D\\
\end{align*}
$$
return:實際年報酬率
cost:年成本率
E/R:內扣費率
T/D:追蹤誤差
fee:買賣手續費
money:投資金額
year:投資年數
priceFinal:賣出報酬指數淨值
priceStart:購買報酬指數淨值
Spread:買賣價差(%)
Premium:溢價
Discount:折價
buyPrice:購買價
sellPrice:賣出價
rest:實際購買金額
number:購買股數
gain:獲利金額
idealReturn:理想年報酬率
$$
\begin{align*}
priceStart &= buyPrice * (1-\frac{Spread}{2}) * (1-Premium) \\
buyPrice &= \frac{priceStart }{(1-\frac{Spread}{2}) * (1-Premium)} \\
priceFinal &= sellPrice * (1+\frac{Spread}{2}) * (1-Discount) \\
sellPrice &= \frac{priceFinal }{(1+\frac{Spread}{2}) * (1-Discount)} \\
rest &= money-fee \\
number &= \frac{rest}{buyPrice}\\
gain &= number * sellPrice-fee\\
idealReturn &= (\frac{priceFinal}{priceStart})^\frac{1}{year}\\
return &= (\frac{gain}{money})^\frac{1}{year}\\
&=(\frac{number * sellPrice-fee}{money})^\frac{1}{year}\\
&=(\frac{\frac{rest}{buyPrice}* sellPrice-fee}{money})^\frac{1}{year}\\
&=\left [\frac{\frac{money-fee}{\frac{priceStart}{(1-\frac{Spread}{2}) * (1-Premium)} }* \frac{priceFinal }{(1+\frac{Spread}{2}) * (1-Discount)}-fee}{money}\right ]^\frac{1}{year}\\
&=\left [\frac{(money-fee)*\frac{priceFinal}{priceStart}* \frac{(1-\frac{Spread}{2}) * (1-Premium)}{(1+\frac{Spread}{2}) * (1-Discount)}-fee}{money}\right ]^\frac{1}{year}\\
&=\left [(1-\frac{fee}{money})*\frac{priceFinal}{priceStart}* \frac{(1-\frac{Spread}{2}) * (1-Premium)}{(1+\frac{Spread}{2}) * (1-Discount)} -\frac{fee}{money}\right ]^\frac{1}{year}\\
cost &= idealReturn-return + E/R + T/D\\
&= (\frac{priceFinal}{priceStart})^\frac{1}{year}-return + E/R + T/D\\
&= (\frac{priceFinal}{priceStart})^\frac{1}{year}-\left [(1-\frac{fee}{money})*\frac{priceFinal}{priceStart}* \frac{(1-\frac{Spread}{2}) * (1-Premium)}{(1+\frac{Spread}{2}) * (1-Discount)} -\frac{fee}{money}\right ]^\frac{1}{year} + E/R + T/D\\
\end{align*}
$$
程式碼驗證
Playground
package main
import (
"fmt"
"math"
)
type info struct {
名字 string
投資金額,
投資年數,
買賣手續費,
內扣費率,
追蹤誤差, //取最大絕對值
購買報酬指數淨值,
賣出報酬指數淨值,
買賣價差,
溢價,
折價 float64
購買價,
購買股數,
賣出價,
獲利金額,
理想年報酬率,
實際年報酬率,
年成本率,
驗算 float64
}
func (i *info) 計算年成本率() bool {
i.購買價 = i.購買報酬指數淨值 / (1 - i.買賣價差/2) / (1 - i.溢價)
i.購買股數 = (i.投資金額 - i.買賣手續費) / i.購買價
i.賣出價 = i.賣出報酬指數淨值 / (1 + i.買賣價差/2) / (1 - i.折價)
i.獲利金額 = i.購買股數*i.賣出價 - i.買賣手續費
i.理想年報酬率 = math.Pow(i.賣出報酬指數淨值/i.購買報酬指數淨值, 1/i.投資年數)
i.實際年報酬率 = math.Pow(i.獲利金額/i.投資金額, 1/i.投資年數)
i.年成本率 = i.理想年報酬率 - i.實際年報酬率 + i.內扣費率 + i.追蹤誤差
i.驗算 = i.理想年報酬率 -
math.Pow(
(1-i.買賣手續費/i.投資金額)*i.賣出報酬指數淨值/i.購買報酬指數淨值*
(1-i.買賣價差/2)/(1+i.買賣價差/2)*(1-i.溢價)/(1-i.折價)-
i.買賣手續費/i.投資金額, 1/i.投資年數) +
i.內扣費率 + i.追蹤誤差
i.理想年報酬率 *= 100
i.實際年報酬率 *= 100
i.年成本率 *= 100
i.驗算 *= 100
return i.驗算 == i.年成本率
}
func (i *info) 報表() {
fmt.Println(i.名字)
fmt.Printf("理想年報酬率:%.4f%%\n", i.理想年報酬率)
fmt.Printf("實際年報酬率:%.4f%%\n", i.實際年報酬率)
fmt.Printf("年成本率:%.4f%%\n", i.年成本率)
fmt.Println()
}
func main() {
const (
投資金額 = 5000.0
投資年數 = 20.0
買賣手續費 = 6.95
)
VTI := info{
名字: "VTI",
投資金額: 投資金額,
投資年數: 投資年數,
買賣手續費: 買賣手續費,
內扣費率: 0.04 / 100,
追蹤誤差: 0.02 / 100,
購買報酬指數淨值: 10.0,
賣出報酬指數淨值: 10.0,
買賣價差: 0.01 / 100,
溢價: 0.1 / 100,
折價: -0.06 / 100,
}
if VTI.計算年成本率() {
VTI.報表()
} else {
fmt.Println(VTI.名字, "計算錯誤")
}
SPTM := info{
名字: "SPTM",
投資金額: 投資金額,
投資年數: 投資年數,
買賣手續費: 買賣手續費,
內扣費率: 0.03 / 100,
追蹤誤差: 0.18 / 100,
購買報酬指數淨值: 10.0,
賣出報酬指數淨值: 10.0,
買賣價差: 0.14 / 100,
溢價: 0.36 / 100,
折價: -0.8 / 100,
}
if SPTM.計算年成本率() {
SPTM.報表()
} else {
fmt.Println(SPTM.名字, "計算錯誤")
}
}
範例
假設 VTI 與 SPTM 的比較,券商的手續費為 $6.95,而 SPTM 因優惠而無需手續費
請問何者為比較好的標的?
從
ETF.com 可以查到以下資訊
注意:因查詢時間不同,可能會有不同的資訊
| VTI | SPTM |
發行公司 | Vanguard | SPDR |
追蹤指數 | CRSP US Total Market Index | Russell 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% |
持有資產數目 | 3541 | 2256 |
追蹤策略 | 採樣 | 採樣 |
若從成本角度來看,代入公式
假設投入時間為 20 年,投入金額 $5000,價格無變化,也就是報酬率為 100%
| VTI | SPTM |
年成本率 | 0.0824% | 0.289% |
故在此 case 中,VTI 會是較好的選擇,無論是簡單的比較,又或是細算成本
順帶一提,若手續費為 $2.95/$0,VTI 成本分別為 0.0744%/0.0685%
若是非要更換之,可使用工具,進行回測與持股分析,至少過去是一致的
- 持股分析
- 若換網址,可從 MorningStar -> USA -> Tools -> Instant X-Ray
- 回測
留言
張貼留言