琴子 [財經程式設計] 將股票資料載入 R Session

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

本文說明如何將股票資料載入 R session,以利後續資料分析。

手動從 Yahoo Finance 下載股票資料

雖然網路上有教學文章在教人如何使用 Python、R 等軟體工具從網路上下載股票資料,建議還是手動下載 CSV 表格後,再自行載入 R session 比較好。

如果有實際寫過財經程式就會知道,這個過程往往無法一次到位,需要反覆修改、測試。下載股票資料是相對耗時的指令,不應該重覆這道指令。將股票資料載到本地端,就省下重覆抓取股票資料的時間。

Yahoo Finance,在其搜尋框輸入標的代號。選擇 Historical Data (歷史資料)。時距 (time period) 直接選擇最大 (max)。顯示 (show) Historical Prices (歷史價格)。頻率 (frequency) 為 Daily (每日)。按下 Apply (套用) 後,選擇下方 Download (下載):

Yahoo Finance 歷史資料的下載界面

下載後會得到 CSV 表格。多多會按照 asset-date.csv 的方式為表格重新命名。日後要找資料時,才知道該筆股票資料的最後日期為何。

將股票資料載入 R Session

只有兩行 R 指令,相當簡單:

itot <- read.csv("C:/Users/user/Downloads/ITOT-20230625.csv", header=TRUE, stringsAsFactors=FALSE)
itot$Date <- as.Date(itot$Date)

以本例來說,股票資料存在變數 itot 中。該變數的資料型態是 data frame。ITOT 是 iShares 的美國巿場 ETF。由於這檔 ETF 是 Core 系列 ETF,所以管理費很低。

第二行指令的目的是將 Date 欄位的字串轉為 date (日期),日後比較易於處理時間相關的運算。

讀入表格時,一定要保留標頭 (header)。日後有可能進行兩筆股票間的比較。有一致的標頭才能夠進行表格操作。

R 使用 factor 資料型態的目的是為了節省系統資源。但 factor 比字串 (string) 難處理。在資料量不大時,保留字串格式沒有什麼壞處。

股票資料格式

承上,這裡利用 R 語言內建的 head 函式來看股票資料長什麼樣子:

> head(itot)
        Date    Open    High     Low   Close Adj.Close Volume
1 2004-01-23 25.1750 25.2400 24.9775 24.9775  17.45020  66800
2 2004-01-26 25.0600 25.3175 25.0600 25.3175  17.68775  10800
3 2004-01-27 25.3250 25.3400 25.1125 25.1125  17.54452  28800
4 2004-01-28 25.2000 25.2025 24.7425 24.7425  17.28602  29200
5 2004-01-29 24.8350 24.8775 24.7175 24.8775  17.38035  13200
6 2004-01-30 24.7925 24.8175 24.7500 24.8175  17.33842 178400

由於我們下載的資料的頻率是每日 (daily),每天會產生一筆資料。每筆資料有以下欄位

  • Open:開盤價
  • High:當日最高價
  • Low:當日最低價
  • Close:收盤價
  • Adj.Close:校正後的收盤價
  • Volume:交易量。以股來計算

請根據自身的想法來選擇合適的數據來運算。一般來說,做長線投資的話,都是看收盤價。

關於作者 琴子喜歡觀察市場邏輯,也喜歡沉靜地彈鋼琴。旅行時總習慣記錄風景背後的脈絡,投資時則偏好慢慢思考而非追高殺低。

現實中關注全球經濟與資產配置,虛擬世界則熱衷於在《黑色沙漠》裡操作漁業與貿易鏈,研究市場機制與角色配置的效率極限。

「理性投資」是琴子整理思緒、檢視決策的地方。不是為了給建議,而是希望留下清楚的腳印,提醒自己:判斷永遠比預測重要。