用Python計算「All in 0050股息再投入」的績效

更新 發佈閱讀 9 分鐘
投資理財內容聲明

先用yfinance抓取0050由2014-11-01到2024-11-01的股價,程式碼如下:

import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
df_0050 = yf.download("0050.TW",start='2014-11-01',end='2024-11-01')
df_0050['Close'].plot()

plt.title('0050.TW')
plt.xlabel('Date')
plt.ylabel('')
# Show the plot
plt.show()
vocus|新世代的創作平台

模擬用100萬All in 0050(包含零股買入),再把0050的股息再投入(股息發放日再All in 0050零股),看績效如何,之後用ffn分析結果。

# Dividends data
Dividends_0050 = {
'Date': [
'2024/08/09', '2024/02/21', '2023/08/11', '2023/03/07', '2022/08/19',
'2022/03/04', '2021/08/24', '2021/03/09', '2020/08/24', '2020/03/06',
'2019/08/22', '2019/03/08', '2018/08/27', '2018/03/13', '2017/08/31',
'2017/03/14', '2016/08/30', '2015/11/26', '2014/11/27'
],
'Dividends': [
1, 3, 1.9, 2.6, 1.8, 3.2, 0.35, 3.05, 0.7, 2.9,
0.7, 2.3, 0.7, 2.2, 0.7, 1.7, 0.85, 2, 1.55
]
}
dividends_df = pd.DataFrame(Dividends_0050)
dividends_df['Date'] = pd.to_datetime(dividends_df['Date'])
dividends_df.set_index('Date', inplace=True)
dividends_df.index = dividends_df.index.tz_localize('UTC')

# Drop the 'Ticker' level from the multi-level columns
df_0050 = df_0050[['Close']]
df_0050.columns = df_0050.columns.droplevel(1) # remove Ticker
df_0050 = df_0050[['Close']].rename(columns={'Close': 'Price'})

merged_df = df_0050.merge(dividends_df, left_index=True, right_index=True, how='left')
merged_df['Dividends'].fillna(0, inplace=True)
merged_df['shares'] = 0
merged_df['buy_today'] = 0
merged_df['remain_cash'] = 0.0
merged_df['value'] = 0

initial_cash = 1000000 # 100W

START_DATE = '2022-01-01'
END_DATE = '2023-01-01' # Convert Date column to datetime if it isn't already

filtered_df = merged_df.loc[START_DATE:END_DATE]

# 零股算法
# 第一天
merged_df.reset_index(inplace=True) # number index
merged_df.loc[0, 'buy_today'] = int( initial_cash / merged_df.loc[0, 'Price'] )
merged_df.loc[0, 'remain_cash'] = initial_cash - int( merged_df.loc[0, 'buy_today'] * merged_df.loc[0, 'Price'] )
merged_df.loc[0, 'shares'] = merged_df.loc[0, 'buy_today']
merged_df.loc[0, 'value'] = initial_cash
for i in range(1, len(merged_df)):
if(merged_df.at[i, 'Dividends'] != 0):
cash_today = merged_df.at[i-1, 'remain_cash'] + merged_df.at[i, 'Dividends'] * merged_df.at[i-1, 'shares']
merged_df.at[i, 'buy_today'] = int( cash_today / merged_df.at[i, 'Price'] )
merged_df.at[i, 'remain_cash'] = cash_today - int( merged_df.at[i, 'buy_today'] * merged_df.at[i, 'Price'] )
merged_df.at[i, 'shares'] = merged_df.at[i-1, 'shares'] + merged_df.at[i, 'buy_today']
# total value
merged_df.at[i, 'value'] = int( merged_df.at[i, 'remain_cash'] + merged_df.at[i, 'shares'] * merged_df.at[i, 'Price'] )
else:
merged_df.at[i, 'buy_today'] = 0
merged_df.at[i, 'remain_cash'] = merged_df.at[i-1, 'remain_cash']
merged_df.at[i, 'shares'] = merged_df.at[i-1, 'shares']
merged_df.at[i, 'value'] = int( merged_df.at[i, 'remain_cash'] + merged_df.at[i, 'shares'] * merged_df.at[i, 'Price'] )

import ffn
result_df = merged_df.copy()
result_df.set_index('Date', inplace=True)
perf = result_df['value'].calc_stats()
print(perf.display())
vocus|新世代的創作平台
vocus|新世代的創作平台

可以看出10年的報酬率308%,最大回檔約-33%

這個績效比起我上一篇「台灣發行量加權股價報酬指數」還贏過38%,原本以為會很接近。看來買0050還勝過買大盤。

比較一下0050指數佔加權指數的比重多少?

根據加權指數歷史資料臺灣50指數歷史資料,計算一下103/11/03和113/11/01的0050指數佔加權指數的比重多少?

print("103/11/03 0050佔加權指數比重: %.2f%%" % ((6572.20 / 9004.86) * 100))
print("113/11/01 0050佔加權指數比重: %.2f%%" % ((18928.25 / 22780.08) * 100))
vocus|新世代的創作平台

可見0050指數的佔比在這10年間增加了10%,難怪會跑贏大盤。






留言
avatar-img
Leo的沙龍
1會員
5內容數
Leo的沙龍的其他內容
2024/11/24
最近看大盤績效這麼好,又看到有人討論有小孩的人每個月會花多少錢,突然在思考如果把養小孩的錢換成投資大盤,那績效哪個好呢? 以下純粹以投資人的角度去理性計算,不考慮生命的對國家和家庭的價值,希望不要對我有道德批判。 假設養育一個人到大學畢業由0歲到22歲需要花費500萬,對比於投資大盤的話,相當於
2024/11/24
最近看大盤績效這麼好,又看到有人討論有小孩的人每個月會花多少錢,突然在思考如果把養小孩的錢換成投資大盤,那績效哪個好呢? 以下純粹以投資人的角度去理性計算,不考慮生命的對國家和家庭的價值,希望不要對我有道德批判。 假設養育一個人到大學畢業由0歲到22歲需要花費500萬,對比於投資大盤的話,相當於
2024/11/16
到證交所網站的臺灣50指數歷史資料(https://www.twse.com.tw/en/indices/ftse/tai50i.html)抓取,程式碼如下: import requests import pandas as pd import matplotlib.pyplot as plt f
Thumbnail
2024/11/16
到證交所網站的臺灣50指數歷史資料(https://www.twse.com.tw/en/indices/ftse/tai50i.html)抓取,程式碼如下: import requests import pandas as pd import matplotlib.pyplot as plt f
Thumbnail
2024/11/12
近來看到有位教授出書推廣市值型ETF,但他不推薦槓桿ETF。他說根據"Leveraged ETFs: A risky double that doesn't multiply by two"這篇論文的模擬結果,雖然兩倍槓桿承受了兩倍風險,但是獲利卻只有1.5倍,所以不推薦買槓桿ETF。 讓我有
Thumbnail
2024/11/12
近來看到有位教授出書推廣市值型ETF,但他不推薦槓桿ETF。他說根據"Leveraged ETFs: A risky double that doesn't multiply by two"這篇論文的模擬結果,雖然兩倍槓桿承受了兩倍風險,但是獲利卻只有1.5倍,所以不推薦買槓桿ETF。 讓我有
Thumbnail
看更多
你可能也想看
Thumbnail
目前(2024/4)按照原本的想法把元大金出清 換成ETF報酬率32%。 元大金大概是2-3年前股災時買進 領了3年股息加配股 在這個時候轉換成ETF 我認為可以接受這個報酬率, 等到下次股災來的時候再把元大金買回來。 景氣循環股就是可以這樣不斷的操作, 低點大量買進,高點慢慢出
Thumbnail
目前(2024/4)按照原本的想法把元大金出清 換成ETF報酬率32%。 元大金大概是2-3年前股災時買進 領了3年股息加配股 在這個時候轉換成ETF 我認為可以接受這個報酬率, 等到下次股災來的時候再把元大金買回來。 景氣循環股就是可以這樣不斷的操作, 低點大量買進,高點慢慢出
Thumbnail
【投資多層思考,以0050 VS.0056來說】#股息流文5,群上討論到有創作者節目介紹0050跟0056的比較,當然其中0056長年配息穩定,先不考慮配息還原股價的情況下,提到0056的股價2023年1月份跟發行時2007年價格差不多,建議小資應該追求最大化的資本利得,高股息ETF就沒有
Thumbnail
【投資多層思考,以0050 VS.0056來說】#股息流文5,群上討論到有創作者節目介紹0050跟0056的比較,當然其中0056長年配息穩定,先不考慮配息還原股價的情況下,提到0056的股價2023年1月份跟發行時2007年價格差不多,建議小資應該追求最大化的資本利得,高股息ETF就沒有
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
眼看著要接近過年了,年關將至,而你手中的不管是市值型的ETF0050或是國民的高股息ETF0056等等,相信今年1月都有不錯的亮眼成績了,因為去年一整年,雖然景氣不是很好,但在股市中確實領到了股息,之前的文章已經說過,只要大到不會倒,且年年有配息情況,就是可以避免股災來的損失,且迎接新的2024。
Thumbnail
眼看著要接近過年了,年關將至,而你手中的不管是市值型的ETF0050或是國民的高股息ETF0056等等,相信今年1月都有不錯的亮眼成績了,因為去年一整年,雖然景氣不是很好,但在股市中確實領到了股息,之前的文章已經說過,只要大到不會倒,且年年有配息情況,就是可以避免股災來的損失,且迎接新的2024。
Thumbnail
今天一位讀者問到:0056和0050,一個是領股息,一個是做價差的嗎 這邊用比較簡單快速明瞭的方式做說明 0050和0056都可以領股息,長期持有之下,兩者股價也都會成長 未來如果需要用錢,賣掉都可以賺到價差 那差別在哪裡呢 從上圖可以看到,長期而言,0050的股價成長性高於0056 0
Thumbnail
今天一位讀者問到:0056和0050,一個是領股息,一個是做價差的嗎 這邊用比較簡單快速明瞭的方式做說明 0050和0056都可以領股息,長期持有之下,兩者股價也都會成長 未來如果需要用錢,賣掉都可以賺到價差 那差別在哪裡呢 從上圖可以看到,長期而言,0050的股價成長性高於0056 0
Thumbnail
大家好,我是小畢,相信很多人選擇0050作為台灣指數投資的標的,其持股是台灣上市前50 大市值的個股,所以可以做到貼近大盤走勢和績效,但如果今天手上有一筆資金要投資0050的話,通常會有的疑問就是要單筆投入還是定期定額買進呢?畢竟選擇單筆投入就是深怕買進後市場開始下跌,而有買在高點的擔憂,比較保險的
Thumbnail
大家好,我是小畢,相信很多人選擇0050作為台灣指數投資的標的,其持股是台灣上市前50 大市值的個股,所以可以做到貼近大盤走勢和績效,但如果今天手上有一筆資金要投資0050的話,通常會有的疑問就是要單筆投入還是定期定額買進呢?畢竟選擇單筆投入就是深怕買進後市場開始下跌,而有買在高點的擔憂,比較保險的
Thumbnail
對臺灣中型100 ETF進行了很多分析,包括近期的股票走勢、持股分佈、投資報酬率、歷史配息等。 並且還提供了定期定額和定期定值2.0版的比較。
Thumbnail
對臺灣中型100 ETF進行了很多分析,包括近期的股票走勢、持股分佈、投資報酬率、歷史配息等。 並且還提供了定期定額和定期定值2.0版的比較。
Thumbnail
昨天一位學生讀者私訊提到 他最近想開始存股,不知道要從何開始 於是我建議他從資產規模前三大的ETF0050、0056、00878開始 這裡也提供自己存股0056的績效參考 2022年10月4日陸續買入9張,均價26.3 2022年領了一次股息18900元,個人持有成本殖利率7.9% 20
Thumbnail
昨天一位學生讀者私訊提到 他最近想開始存股,不知道要從何開始 於是我建議他從資產規模前三大的ETF0050、0056、00878開始 這裡也提供自己存股0056的績效參考 2022年10月4日陸續買入9張,均價26.3 2022年領了一次股息18900元,個人持有成本殖利率7.9% 20
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
先用yfinance抓取0050由2014-11-01到2024-11-01的股價,程式碼如下: import pandas as pd import yfinance as yf import matplotlib.pyplot as plt df_0050 = yf.download("005
Thumbnail
先用yfinance抓取0050由2014-11-01到2024-11-01的股價,程式碼如下: import pandas as pd import yfinance as yf import matplotlib.pyplot as plt df_0050 = yf.download("005
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News