網頁

2024年1月3日 星期三

用 Python 製作股票績效比較圖表

程式碼如下:

 
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
 
# 製作美股代碼與名稱的字典
tickers_dict = {'NVDA':'Nvidia', 'META':'Meta', 'TSLA':'Tesla',
'AMZN':'Amazon', 'AAPL':'Apple', 'MSFT':'MicroSoft',
'GOOGL':'Google'}
 
tickers_list = list(tickers_dict.keys())
legend_text = []
list(map(lambda x:legend_text.append(tickers_dict[x]), tickers_list))
 
# 下載股價收盤價格,區間從2023/01/01~2023/12/31 
df = yf.download(tickers_list, start="2023-01-01", end="2023-12-31")['Close']
print(df.tail())
 
# 利用cumprod函數畫出回報率圖表
((df.pct_change() + 1).cumprod()-1).plot(figsize=(10, 7))
# 圖表名稱
plt.title('1 Years Returns', fontsize=16)
 
# 定義 X軸 Y軸 的名稱
plt.ylabel('Cumulative Returns', fontsize=14)
plt.xlabel('Year', fontsize=14)

# 圖表要呈現格線
plt.grid(which="major", color='k', linestyle='-.', linewidth=0.5)
plt.show()
 

 輸出結果:

看起來2023年度績效最好的是Nvidia,最差的是Apple。

如果Y軸要以百分比來表示可以將:

 
 (df.pct_change() + 1).cumprod()-1).plot(figsize=(10, 7))
 

改成:

 
data = ((df.pct_change() + 1).cumprod() -1 )
ax = data.plot(figsize=(10, 7))
vals = ax.get_yticks()
ax.set_yticklabels(['{:.0%}'.format(x) for x in vals])
 

輸出結果:

以Nvidia (美股代號:NVDA) 2023/01/03收盤價143.15,到2023/12/29收盤價495.22來算

回報率為245.94%


沒有留言:

張貼留言