iT邦幫忙

2024 iThome 鐵人賽

DAY 3
1

在量化投資中,金融數據是基礎。獲取、清洗並處理這些數據是構建量化策略的第一步。今天將介紹如何使用 Python 獲取金融數據,並進行基本的數據檢視和處理,還會講解如何使用 Python 進行數據的基本視覺化。另外本系列文章除去特別情況皆會使用 Colab 來執行呈現結果,今日 Colab 連結在此

1. 使用 yfinance 下載金融數據

yfinance 是一個常用的 Python 庫,用於從 Yahoo Finance 下載歷史金融數據,包括股票價格、指數、匯率等。

安裝 yfinance

首先,你需要安裝 yfinance 庫:

pip install yfinance

下載股票數據

以下是一個下載單隻股票(例如蘋果公司,代碼 AAPL)的示例:

import yfinance as yf

# 下載蘋果公司的歷史數據
stock_data = yf.download('AAPL', start='2020-01-01', end='2024-01-01')

# 檢視前五行數據
print(stock_data.head())

應該可以看到以下畫面:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549tvBdABycOO.png

下載多隻股票數據

你也可以同時下載多隻股票的數據:

# 下載多隻股票的歷史數據
stocks = ['AAPL', 'GOOGL', 'MSFT']
stock_data = yf.download(stocks, start='2020-01-01', end='2024-01-01')

# 檢視數據結構
print(stock_data.head())

應該可以看到以下畫面:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549c0fLTwKZlF.png

2. 探索數據結構

yfinance 下載的數據格式通常為 pandas.DataFrame,數據會包括以下幾列:

  • Open: 開盤價
  • High: 最高價
  • Low: 最低價
  • Close: 收盤價
  • Adj Close: 調整後收盤價(考慮股息和分拆影響)
  • Volume: 交易量

你可以檢視數據的形狀和結構:

# 檢查數據形狀
print(stock_data.shape)

# 檢查列標籤
print(stock_data.columns)

我們依照上面的3個股票的資料得到下面結果:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549AfxkOhCj8K.png

3. 處理時間序列數據

股票價格數據是一種典型的時間序列數據。處理這些數據的關鍵之一是正確處理時間索引(即日期)。檢查數據是否按時間順序排列:

# 確認數據是否按日期排序
print(stock_data.index.is_monotonic_increasing)

如果數據沒有按順序排列,你可以手動排序:

# 按日期排序數據
stock_data = stock_data.sort_index()

4. 篩選特定的數據列

根據你的需求,你可能只需要收盤價或某個特定的價格列,例如 Adj Close(調整後收盤價)。你可以提取這一列:

# 提取調整後的收盤價
adj_close = stock_data['Adj Close']
print(adj_close.head())

依照上面的3個股票的資料得到下面結果:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549SaBUYhXlfK.png

5. 繪製股票收盤價走勢圖

在進行視覺化之前,確保已安裝 matplotlib,這是 Python 中常用的視覺化工具。

pip install matplotlib seaborn

我們將提取 APPL 的 Adj Close(調整後收盤價)列,並使用 matplotlib 繪製其走勢圖。

import matplotlib.pyplot as plt
import yfinance as yf


# 下載蘋果公司(AAPL)的歷史數據
stock_data = yf.download('AAPL', start='2020-01-01', end='2024-01-01')

# 提取調整後的收盤價
adj_close = stock_data['Adj Close']

# 繪製收盤價走勢圖
plt.figure(figsize=(10, 6))
plt.plot(adj_close, label='AAPL Adj Close')
plt.title('AAPL 調整後收盤價走勢圖')
plt.xlabel('日期')
plt.ylabel('調整後收盤價')
plt.legend()
plt.grid(True)
plt.show()

可以得到下面圖:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549VadUWoDnOL.png

如果要同時顯示多隻股票的也沒問題。

import matplotlib.pyplot as plt
import yfinance as yf


# 下載多隻股票的歷史數據
stocks = ['AAPL', 'GOOGL', 'MSFT']
stock_data = yf.download(stocks, start='2020-01-01', end='2024-01-01')

# 提取調整後的收盤價
adj_close = stock_data['Adj Close']

# 繪製收盤價走勢圖
plt.figure(figsize=(10, 6))
plt.plot(adj_close, label=['AAPL Adj Close', 'GOOGL Adj Close', 'MSFT Adj Close'])
plt.title('各個調整後收盤價走勢圖')
plt.xlabel('日期')
plt.ylabel('調整後收盤價')
plt.legend()
plt.grid(True)
plt.show()

可以得到下面圖:
https://ithelp.ithome.com.tw/upload/images/20240917/20120549ILHb1xi2Yd.png

6. 儲存數據

在處理數據後,你可以將其保存到本地文件,以便後續分析使用:

# 將數據保存為 CSV 文件
stock_data.to_csv('stock_data.csv')

如果是在colab應該可以點選旁邊檔案欄,看到 stock_data.csv已經被順利存下來囉~
https://ithelp.ithome.com.tw/upload/images/20240917/20120549UisfPOOQTn.png

6. 第二天任務

  • 安裝 yfinance,下載一隻或多隻股票的歷史數據,並進行檢視。
  • 探索數據結構,確認你下載的數據是按時間順序排列的。
  • 提取調整後收盤價數據,這在後續回測和策略分析中會經常用到。
  • 視覺化股票走勢:繪製調整後收盤價的走勢圖,觀察價格的變化。
  • 保存數據,確保你的數據文件可以在未來重複使用。

這樣,你將掌握如何獲取和保存金融數據,這是量化投資的第一步。在接下來的幾天中,我們將學習如何對這些數據進行處理、分析和應用於投資策略。


上一篇
Day1:量化投資介紹與目標設定
下一篇
Day3:數據清洗、處理與技術指標計算
系列文
打開就會 AI 與數據分析的投資理財術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言