[量化投資基本功] 如何計算特定期間的總報酬率與年化報酬率

持有一個投資組合或標的的總報酬是多少? 該如何年化成年報酬率? 本單元我們要來聊聊如何計算特定期間的總報酬率與年化報酬率。

區間選擇

在讀入股價資料後,我們可以透過參數start及end的設定,來決定我們要分析的區間。而在DataFrame中,我們可以透過df.loc[start:end]來擷取我們想要的區間,亦可透過df.iloc[位置1:位置2]來擷取。

小說明:
df.loc[A:B]
: loc為location的意思,A與B分別代表著該index名稱,如日期是幾年幾月幾日。
df.loc['2019-2-28':2020-6-30']
df.iloc[C:D] : iloc代表著index location, C與D別代表著該index的位置。0代表第一個,-1代表最後一個。
df.iloc[3:-1]

總報酬率

總報酬指的是我們一開始投入到持有最後一天的報酬,計算公式如下:

$$TR=\frac{P_T-P_0}{P_0}$$

在程式中,當我們取好特定期間後,我們可以透過下列程式碼計算總報酬

TR=df.iloc[-1]/df.iloc[0]-1

年化報酬率

接下來,我們要看到的是年化報酬率。如果我們持有一檔標的好幾年,那麼我們把每年的報酬相乘,就可以得到我們最終的總報酬。

$$(1+r_1)(1+r_2)…(1+r_N)=1+TR$$

而如果我們想要知道,在我們持有的這段期間當中,平均而言一年的報酬率是多少呢?
很明顯的,年化報酬率絕對不適簡單的TR/N,因為我們還要把複利的效果計算進來!
因此,我們可以想像,如果我們每年都拿到一樣的報酬率(IRR),在N年後可以累積到TR的報酬率。

$$(1+IRR)^N=1+TR$$

其中,這個IRR就是所謂的年化報酬率,也稱作內部報酬率,指的就是平均而言一年我們的報酬率是多少。

既然我們已經會計算TR,接下來只要稍微把公式移項一下,就可以算出我們要的IRR了!

$$IRR=(1+TR)^{\frac{1}{N}}-1$$

因此,我們只要把公式打進python裡面,就可以算出年化報酬率囉!

今天,我們學會了如何用df.loc與df.iloc來擷取我們想要的資料區間,並且學會了如何計算總報酬率與年化報酬率。

程式檔案,歡迎下載GitHub

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *