Table of Contents
2024 年 6 月 2 日,NVIDIA(輝達)執行長黃仁勳來台演講,在演講尾聲,他展示了數張台灣商業夥伴的名單。這一幕激起了社會的廣泛關注,並引發了如「地表最強 AI ETF」、「ETF 含勳量」等創新詞彙的誕生。
不僅如此,黃仁勳的影響力甚至波及到了日常生活,通化夜市的「阿婆水果攤」和四平商圈的「富霸王豬腳飯」也因為他的到訪而成為新聞焦點,充分體現出台灣人對於黃仁勳的憧憬和熱情。
本文旨在利用夏普值來檢測 NVIDIA 在台灣商業夥伴在演講前後的變化,以此分析黃仁勳對其相關供應鏈的影響力。
本文使用 Windows 11 作業系統以及 VS code 作為編輯器,Python 版本 3.11.9 以下。
在金融領域,夏普值(Sharpe Ratio)是衡量投資組合績效的一個重要指標,它衡量的是每單位風險所獲得的超額報酬。那每承受一單位風險獲得的報酬當然是越高越好!所以我們通常會利用夏普值來評估投資組合的長期績效、設定投資目標、衡量基金經理的水平。
夏普值計算公式=( 平均日報酬率 – 無風險利率)/標準差
光寶科、聯電、台達電、鴻海、仁寶、台積電、宏碁、英業達、華碩、所羅門、技嘉、微星、廣達、研華、圓剛、京元電、聯發科、麗臺、德律、欣興、益登、艾訊、緯創、弘憶股、華擎、曜越、神達、日月光投控、和碩、中光電、聰泰、慧友、迎廣、廣運、凌華、立端、醫揚、研揚、緯穎、宸曜、勤誠、新漢、巨大
import tejapi
import pandas as pd
tejapi.ApiConfig.api_key = "Your Key"
tejapi.ApiConfig.api_base = "https://api.tej.com.tw"
tejapi.ApiConfig.ignoretz = True
建立輝達在台商業夥伴的股票代碼
並且抓取其日報酬率(分為演講前後)
coid_list = ['6579', '2353', '6166', '2395', '3711', '3515', '2357', '2417', '3088', '8210', '2324', '5371', '2308', '3048', '5484', '2317', '9921', '2376', '3312', '2356', '6117', '6125', '2449', '6245', '2465', '2301', '2454', '3706', '2377', '6922', '8234', '6569', '4938', '2382', '2359', '3030', '3540', '2330', '2303', '3037', '3231', '6669', '5474']
tablebefore = tejapi.get (
'TWN/APRCD2',
coid = coid_list ,
mdate = {'gte':'2024-05-02','lte':'2024-06-02'},
chinese_column_name = True,
paginate = True,
opts={'columns':['coid','mdate','roia']},
)
tableafter = tejapi.get (
'TWN/APRCD2',
coid = coid_list ,
mdate = {'gte':'2024-06-02','lte':'2024-07-02'},
chinese_column_name = True,
paginate = True,
opts={'columns':['coid','mdate','roia']},
)
dfbefore = pd.DataFrame(tablebefore)
dfafter = pd.DataFrame(tableafter)
計算平均日報酬、標準差以算出夏普值,並計算差異、上升的判斷與否
# 計算平均日報酬、標準差
average_return_rate_before = dfbefore.groupby('證券代碼')['日報酬率 %'].mean()
average_return_rate_after= dfafter.groupby('證券代碼')['日報酬率 %'].mean()
std_return_rate_before = dfbefore.groupby('證券代碼')['日報酬率 %'].std()
std_return_rate_after = dfafter.groupby('證券代碼')['日報酬率 %'].std()
# 計算夏普值
sharpe_ratio_before = average_return_rate_before / std_return_rate_before *100 #在此忽略無風險利率
dfbefore = pd.DataFrame(sharpe_ratio_before).reset_index()
dfbefore.rename(columns={'日報酬率 %': '演講前夏普值 %'}, inplace=True)
sharpe_ratio_after = average_return_rate_after / std_return_rate_after *100
dfafter = pd.DataFrame(sharpe_ratio_after).reset_index()
dfafter.rename(columns={'日報酬率 %': '演講後夏普值 %'}, inplace=True)
# 計算夏普值前後差異
merged_df = pd.merge(dfbefore, dfafter, on='證券代碼')
merged_df['夏普值差異 '] = merged_df['演講後夏普值 %']-merged_df['演講前夏普值 %']
#利用lambda函數確認夏普值是否向上變動
merged_df['是否上升'] = merged_df['夏普值差異 '].apply(lambda x: 'True' if x > 0 else 'False')
merged_df
統計向上及向下的家數,並以長條圖做比較
import matplotlib.pyplot as plt
# 計算上升、下降的家數
sign_counts = merged_df['是否上升'].value_counts()
# 繪製長條圖
fig, ax = plt.subplots()
ax.bar(sign_counts.index, sign_counts.values, color='#00FF7F',alpha=0.8)
# 設定標籤和標題
ax.set_xlabel('是否上升')
ax.set_ylabel('家數')
ax.set_title('夏普值變化的分布')
plt.grid(True)
plt.tight_layout()
# 顯示圖表
plt.show()
利用長條圖視覺化夏普值變動,以觀察確切變化
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 讓圖表的中文可以顯示
plt.figure(figsize=(14, 8))
plt.bar(merged_df['證券代碼'].astype(str), merged_df['演講前夏普值 %'], label='演講前夏普值 %', alpha=0.3)
plt.bar(merged_df['證券代碼'].astype(str), merged_df['演講後夏普值 %'], label='演講後夏普值 %', alpha=0.8)
# 添加標題和標籤
plt.title('各公司演講前後夏普值及其差異')
plt.xlabel('證券代碼')
plt.ylabel('夏普值 %')
plt.legend()
# 顯示圖表
plt.xticks(rotation=90)
plt.grid(True)
plt.tight_layout()
plt.show()
根據上圖,可以觀察到許多公司的夏普值在演講後,多數是下降甚至有的由正轉負。不過其中最亮眼的慧友 ( 5484 ) 夏普值倒是從原本的 0.14 變為 1.27,網傳可能的原因是,在黃仁勳演講公布合作夥伴前,慧友的股價是最便宜的,受到投資人青睞,讓股價步步高升、居高不下,也讓慧友被列為注意股。
我們是怎麼看待夏普值下降這個現象的呢 ? 我們認為市場對於黃仁勳演講對商業夥伴名單產生了過度反應,這反映了投資人基於情緒和短期趨勢的決策,而非基於理性的長期投資策略。這種過度反應常常會導致價格的短期飆升,但隨後市場會逐漸回歸理性,價格也可能回落,導致報酬率之標準差變大,從而讓夏普值下降。
而夏普值的下降意味著這些股票在獲得回報的同時,伴隨著更大的波動性和風險。這提醒投資者在追逐短期收益的同時,應該更加關注風險管理和長期回報。但也不能一竿子打翻所有輝達 AI 供應鏈,仍建議需要長期觀察這些商業夥伴的表現,尤其是他們在與黃仁勳合作後是否能夠實現實質性的業務增長和盈利能力提升,這才是投資回報的根本保障。
本次實作透過 TEJ API 實現夏普值的計算與統整,使用 TEJ API 與 TEJ 資料銀行資料庫所提供的有效資料,讓您在省時又省力的情況下,提供投資人更多元的評估指標。選購 TEJ E-Shop 的相關方案,用高品質的資料庫,建構出適合自己的分析應用或交易策略。
溫馨提醒,本次策略僅供參考,不代表任何商品或投資上的建議。
電子報訂閱