金融分析 資料科學 教學

使用 yfinance 分析 NVIDIA 季度數據

使用 Python 與 yfinance 分析 NVIDIA 季度數據

課程目標

  1. 精熟 yfinance 套件,高效獲取 NVIDIA 股票的歷史數據。
  2. 深入理解季度交易數據,並進行財金視角的關鍵分析。
  3. 熟練運用 matplotlibpandas 進行專業數據可視化,解讀 NVIDIA 股價走勢。
  4. 進一步分析NVIDIA的報酬率與移動平均線,並視覺化。

適用對象

  • 具備 Python 基礎(變數、套件導入等)。
  • 對科技股、半導體產業及財務分析有興趣的學員。
  • 具備基礎pandas與matplotlib的操作經驗。

課程時間

  • 約 90 分鐘(含講解與實作)

教案內容

一、課程簡介(5 分鐘)

  • 主題介紹:本次課程將運用 Python 深入分析 NVIDIA 的季度數據,從財金角度解讀其股價表現,探討其在 AI 晶片市場的領先地位。我們將加入進階的資料視覺化,讓分析更具深度。
  • 工具說明:使用 yfinance(獲取股票數據)、matplotlib(數據可視化)和 pandas(數據處理)。

二、環境準備(10 分鐘)

步驟 1:安裝 yfinance 套件

  • 講解:於終端機執行以下指令,安裝 yfinance 套件:
pip install yfinance
  • 實作:學員於終端機執行指令,確認安裝成功。

步驟 2:檢查 Python 環境

  • 確認 matplotlibpandas 已安裝,若未安裝,執行:
pip install matplotlib pandas

三、核心實作:抓取 NVIDIA 季度數據(15 分鐘)

程式碼講解與實作

  • 程式碼
import yfinance as yf

# 下載 NVIDIA(NVDA)股票數據
nvda = yf.Ticker("NVDA")

# 獲取歷年季度交易數據
df = nvda.history(period="max", interval="3mo")

# 顯示前 10 筆數據
print(df.head(10))
  • 逐步解說
    1. import yfinance as yf:導入 yfinance 套件。
    2. yf.Ticker("NVDA"):指定股票代號為 NVIDIA(NVDA)。
    3. .history(period="max", interval="3mo"):獲取最大時間範圍的季度數據。
    4. print(df.head(10)):顯示前 10 筆數據,確認數據獲取。
  • 實作要求:學員執行程式碼,觀察 NVIDIA 自上市以來的股價數據。
  • 範例輸出(部分):
                 Open    High     Low   Close    Volume  Dividends  Stock Splits
Date
1999-01-01   0.424   0.449   0.364   0.403  66900000        0.0           0.0
1999-04-01   0.403   0.509   0.380   0.490  45800000        0.0           0.0
...

四、財金分析:解讀 NVIDIA 季度數據(20 分鐘)

情境設計:NVIDIA 財報分析

  • 故事:假設我們是財金分析師,需要深入分析 NVIDIA 的季度數據,評估其投資價值。
  • 程式碼
import yfinance as yf
import pandas as pd

# NVIDIA(NVDA)股票數據
nvda = yf.Ticker("NVDA")

# 獲取季度數據
nvda_df = nvda.history(period="max", interval="3mo")

# 顯示最近 5 筆季度數據
print("NVIDIA 最近 5 筆季度數據:")
print(nvda_df.tail(5))

# 計算季度平均收盤價
quarterly_avg = nvda_df["Close"].resample("Q").mean()
print("\nNVIDIA 季度平均收盤價:")
print(quarterly_avg.tail(5))

# 計算季度報酬率
quarterly_returns = nvda_df["Close"].resample("Q").last().pct_change()
print("\nNVIDIA 季度報酬率:")
print(quarterly_returns.tail(5))

# 計算移動平均線 (2季)
nvda_df['2季移動平均'] = nvda_df['Close'].rolling(window=2).mean()

#計算移動平均線 (4季)
nvda_df['4季移動平均'] = nvda_df['Close'].rolling(window=4).mean()

print(nvda_df.tail())
  • 講解:引導學員從收盤價、成交量、報酬率、移動平均線等數據,分析 NVIDIA 的營運狀況、市場情緒與趨勢。
  • 實作:學員執行程式碼,觀察 NVIDIA 近期股價變化,並計算季度平均收盤價、季度報酬率與移動平均線。

五、進階可視化數據:繪製 NVIDIA 股價走勢與分析(30 分鐘)

程式碼講解

  • 程式碼
import matplotlib.pyplot as plt

# 繪製 NVIDIA 季度收盤價趨勢
plt.figure(figsize=(12, 6))
plt.plot(df.index, df["Close"], label="NVIDIA 收盤價")
plt.plot(df.index, df["2季移動平均"], label="2季移動平均線")
plt.plot(df.index, df["4季移動平均"], label="4季移動平均線")
plt.title("NVIDIA (NVDA) Quarterly Closing Prices with Moving Averages")
plt.xlabel("Year")
plt.ylabel("Stock Price (USD)")
plt.legend()
plt.grid(True)
plt.show()

#繪製季度報酬率
plt.figure(figsize=(12,6))
quarterly_returns = df["Close"].resample("Q").last().pct_change()
quarterly_returns.plot(kind='bar', color='skyblue')
plt.title("NVIDIA Quarterly Returns")
plt.xlabel("Quarter")
plt.ylabel("Returns")
plt.grid(axis='y')
plt.show()
  • 逐步解說
    1. plt.plot():繪製收盤價與移動平均線趨勢圖。
    2. plt.figure(figsize=(12, 6)):設定圖表大小。
    3. plt.titleplt.xlabelplt.ylabel:添加圖表標題與軸標籤。
    4. plt.legend():加上圖示。
    5. plt.grid(True):加上網格線。
    6. quarterly_returns.plot(kind='bar', color='skyblue'):繪製季度報酬率的柱狀圖。
  • 實作:學員執行程式碼,觀察 NVIDIA 季度股價走勢圖與季度報酬率,並分析移動平均線的交叉。

財金分析:解讀股價趨勢與報酬率

  • 討論:引導學員從股價走勢圖、移動平均線與報酬率,分析 NVIDIA 的成長趨勢、波動性、買賣訊號與潛在風險。

六、課後練習與討論(10 分鐘)

  • 作業
    1. 分析其他科技股(如 AMD、TSM)的季度數據,比較其與 NVIDIA 的股價表現、報酬率與移動平均線。
    2. 嘗試計算 NVIDIA 的其他技術指標(如 RSI、MACD),並進行視覺化分析。
    3. 嘗試使用不同的資料視覺化圖表,例如盒鬚圖、散佈圖等,呈現 NVIDIA 的數據。
  • 討論問題
    1. 移動平均線的交叉,如何作為買賣訊號?
    2. 如何從報酬率分析 NVIDIA 的風險與報酬?