[量化投資基本功]如何打造正金字塔部位結構? 息收型標的存股法!

打造正金字塔部位結構的方法主要有兩種,一種是針對強勢股,向上加碼法。另一種則是針對股息收益型標的,希望能夠在相對低檔持有更多部位,打造未來領息的基礎,這種計畫長期投資打造領息部位的基礎,則適合採用逢低加碼法。今天,就讓我們一起來認識這種逢低加碼打造正金字塔部位的投資方法,影片中我們會以台股高股息0056ETF為例,介紹兩種打造金字塔部位的投資方式,並分享在Python中如何回測!

什麼是逢低加碼金字塔部位投資法?

什麼是正金字塔的部位結構呢? 簡單來說,我們可以想像一下金字塔的形狀,底部大,頭部小,代表的就是部位大小。我們希望能夠在價格低檔時買入更多的部位,價格高檔時則少量買入,以有效降低平均成本。這樣的部位結構就像是金字塔一樣,故被稱為金字塔投資法,也有些人會稱之為三角形投資法。金字塔部位結構在投資領域中是相當重要的一環,先前分享的定期定額也是透過這樣的概念,定期投入固定金額,便可在行情相對低檔時買到更多單位,讓持有部位趨於正金字塔結構。

那麼,究竟要如何架構這個逢低加碼法呢? 舉例來說,我們可以當股價由高點下跌10%時,買入2倍單位的標的,累計下跌20%時,再買入4被單位的標的,以此類推。這樣就能夠達到在價格愈低時,我們持有愈多的單位,有效降低平均成本。當然,這些下跌多少百分比,要加碼多少單位都是各位可以依照自身需求去做調整的,原則就是愈低檔的時候需要買入的單位數一定要更多。所以說,採用這個投資法還有一個基礎認知就是銀彈一定要夠。詳細加碼部分歡迎參考影片解說,影片中我們會詳細解說兩種加碼方式。

哪些標的適合採用逢低加碼的金字塔部位投資法?

要提醒各位讀者的是,逢低加碼法最主要適用於長期投資穩健標的(如息收商品,被動式ETF,有息收的產業龍頭股等等)。長期投資中因景氣循環標的不免上下波動,而逢低加碼的目的主要是希望能夠在標的相對低檔的時候持有更多的單位數,以有效降低平均成本。所以對於存股族來說,若是投資在有息收的標的上面,將能夠用相對便宜的價格累積更多部位,以達到增加未來現金流量的目的。然而,如果是想藉由短線價差套利的讀者來說,這個方法就相當不合適,很有可能導致愈攤愈平的效果。

如何在Python裡計算逢低加碼金字塔部位投資法的損益?

在這邊,我們以台股高股息ETF(0056)為例,分享如何回測過去5年逢低加碼金字塔部位投資法的績效損益。

資料描述

標的: 台灣高股息ETF (0056)
資料: 採收盤價 (不含息收)
時間: 2016/3/31-2021/3/31

引入模組

首先,我們一樣要引入一些模組,包含計算以及繪圖的套件。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

參數設定

在這邊我們可以設定下跌多少百分比,我們要加碼多少倍等參數。另外,也可以指定回測區間。在這邊,我們以期初先買進一單位為例,累計下跌10%加碼2倍,累計下跌20%加碼4倍,以此類推。

base=1
down=-0.1
N=2
start='2016-03-31'
end='2021-03-31'

計算累計下跌幅度

接下來,我們用股價資料來計算累計跌幅的部分。計算方法與上篇分享的計算最大跌幅類似,差別在於我們最後不用對跌幅取minimum。(延伸閱讀:[量化投資基本功] 如何回測最大跌幅? 在Python中要怎麼快速計算?)

df=data.copy()
df=df.loc[start:end]
df['dr']=df.pct_change(1)
df['r']=df['dr'].add(1).cumprod()
df['dd']=df['r'].div(df['r'].cummax()).sub(1)

進行回測

接下來,我們依據參數設定部分所提供的條件,進行加碼動作。這部分程式碼的寫法與定期定額類似。(延伸閱讀:[量化投資基本功] 定期定額績效如何優化? 用python以定期定額架構打造定期不定額的逢低加碼策略回測!)

程式碼如下,這邊因排版問題,縮排可能會跑掉,如果有需要可以直接下載文末程式檔。

total_cost_list=[]
unit_list=[]
pre_NAV_list=[0]
TR_list=[0]
unit_add=0

for i,price in enumerate(df['Price']):
if i==0:
unit=base
total_cost=unitprice unit_list.append(unit) total_cost_list.append(total_cost) else: if df['dd'].iloc[i]3 and df['dd'].iloc[i-1]>down3 and unit_add3:
unit=unit+N3 total_cost+=N3price unit_add=N3
elif df['dd'].iloc[i]<down2 and df['dd'].iloc[i-1]>down2 and unit_add<N2: unit=unit+N2
total_cost+=N2price
unit_add=N2 elif df['dd'].iloc[i]down and unit_addprice
unit_add=N
pre_NAV=unit_list[i-1]*price
TR=pre_NAV/total_cost_list[-1]-1
total_cost_list.append(total_cost)
unit_list.append(unit)
pre_NAV_list.append(pre_NAV)
TR_list.append(TR) df['total_cost']=total_cost_list
df['unit']=unit_list
df['pre_NAV']=pre_NAV_list
df['total_return']=TR_list

df.tail()

繪圖

fig,ax=plt.subplots(figsize=(10,5))
ax.plot(df[‘total_return’])
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.show()

如何增加進場次數?

在上述回測結果中我們可以看到,這5年間僅僅加碼了2次。如果我們是要長期持有,且希望累積更多的單位數以打造股息收入的話,該如何加碼在相對低檔呢? 這邊提供一個解決方案,我們可以keep住每一次的高點,每一次創新高我們都重新計算,這樣就可以在股價回檔時,有更多的機會可以加碼。當然啦,以一個健康標的來說,長期而言會呈現向上趨勢,因此當加碼機會來臨時,並不一定能比前一次的加碼低,整體成本會稍微墊高,所以報酬率不會像上面這麼漂亮。但這就是一個trade-off,在這樣的方法下我們能夠得到更多的進場機會,持有更多部位,以整體獲利絕對值來看不一定會比較差唷。

total_cost_list=[]
unit_list=[]
pre_NAV_list=[0]
TR_list=[0]
unit_add=0
maxr=df['r'].iloc[1]

for i,price in enumerate(df['Price']):
if i==0:
unit=base
total_cost=unitprice unit_list.append(unit) total_cost_list.append(total_cost) else: if df['r'].iloc[i]>maxr: maxr=df['r'].iloc[i] unit_add=0 else: if df['dd'].iloc[i]3 and df['dd'].iloc[i-1]>down3 and unit_add3:
unit=unit+N3 total_cost+=N3price unit_add=N3
elif df['dd'].iloc[i]<down2 and df['dd'].iloc[i-1]>down2 and unit_add<N2: unit=unit+N2
total_cost+=N2price
unit_add=N2 elif df['dd'].iloc[i]down and unit_addprice
unit_add=N
pre_NAV=unit_list[i-1]*price
TR=pre_NAV/total_cost_list[-1]-1
total_cost_list.append(total_cost)
unit_list.append(unit)
pre_NAV_list.append(pre_NAV)
TR_list.append(TR) df['total_cost']=total_cost_list
df['unit']=unit_list
df['pre_NAV']=pre_NAV_list
df['total_return']=TR_list

df.tail()

今天,我們學會了以逢低加碼打造正金字塔部位結構的策略,並學會如何在Python中進行回測。最後再次提醒大家,這樣的方式適合用在打造未來現金流量的長期投資中,一定要挑選穩健的投資標的(如配發股息的ETF,息收商品等等)。對於價差交易而言,千萬別採取這樣的策略,可能會帶來愈攤愈平的效果。我們之後有機會分享向上加碼法,將適用於想賺取價差交易的讀者。

程式檔案,歡迎下載Github

聲明: 本網站所提供之資料僅供參考,所有回測為歷史資料模擬之結果,不代表未來實際績效。任何人據此等資料而做出或改變投資決策,須自行承擔結果。

Share

發佈留言

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