逆向投資策略之動態跌幅門檻效果研究

返回分析系統

3.2 資料來源與樣本選擇

本節說明本研究的資料來源、樣本選擇標準、研究期間設定與資料處理方式。嚴謹的資料處理是確保研究結果有效性的基礎,特別是在逆向投資策略研究中,使用正確的價格資料對於跌幅計算與報酬評估至關重要。

一、樣本選擇標準

1.1 選擇依據

本研究選擇台灣與美國兩市場的大型權值股與主流 ETF 作為研究樣本,選擇依據如下:

代表性:大型權值股代表市場主要資金流向,是機構投資人與散戶投資人最常關注的標的。針對這些標的進行研究,其結果具有較高的實務參考價值。

流動性:大型股與主流 ETF 具有較高的交易量與流動性,回測時假設的進出場價格更接近實際可執行的價格,減少流動性偏誤(Liquidity Bias)的影響。

資料品質:主流標的的價格資料較為完整且可靠,資料來源多元,可進行交叉驗證,降低資料錯誤的風險。

投資人關注:本研究關注的散戶投資人群體最常接觸的投資標的即為大型權值股與 ETF,研究結果可直接應用於實務投資決策。

1.2 樣本組成

本研究樣本共包含 116 檔標的,涵蓋美國與台灣兩個市場:

美國市場(63 檔)

類別 標的範例 數量
科技股AAPL, MSFT, GOOGL, AMZN, NVDA, META, ORCL, CRM, CSCO, INTC, AMD, ADBE, IBM 等15+
金融股JPM, BAC, V, MA, WFC, GS, MS, BLK 等10+
醫療股UNH, JNJ, PFE, LLY, ABBV, MRK, TMO 等8+
消費股WMT, HD, MCD, NKE, KO, PG, PEP, COST, AMZN 等10+
能源/工業XOM, CVX, BA, CAT, GE, UPS 等10+
通訊服務GOOGL, META, DIS, NFLX, CMCSA 等6+
ETFVOO, QQQ, DIA, VT4
個股小計59

台灣市場(53 檔)

類別 標的範例 數量
半導體2330 台積電, 2454 聯發科, 3034 聯詠, 2303 聯電 等10+
電子2317 鴻海, 2382 廣達, 2308 台達電, 2357 華碩 等15+
金融2881 富邦金, 2882 國泰金, 2884 玉山金, 2886 兆豐金 等10+
傳產1301 台塑, 1303 南亞, 2912 統一超 等10+
其他各產業代表性權值股5+
ETF0050 元大台灣50, 0056 元大高股息2
個股小計51

1.3 排除條件

為確保資料品質與研究有效性,本研究設定以下排除條件:

排除條件 門檻值 說明
資料完整度不足< 95%缺失交易日比例過高,可能影響回測準確性
上市時間過晚晚於 2008 年無足夠的歷史資料進行 Walk-Forward 驗證
已下市或長期停牌最後交易日早於測試期結束前 30 天無法進行完整回測
存在極端異常價格單日報酬 > 50%可能為資料錯誤,需人工審核

1.4 樣本分類

為回應 RQ5(市場差異)與 RQ6(產品類型差異),本研究將樣本依兩個維度進行分類:

市場分類

產品類型分類

交叉分類表

美國市場 台灣市場 合計
ETF426
個股5951110
合計6353116

二、資料來源

2.1 主要資料來源

本研究使用兩個專業金融資料 API 作為主要資料來源:

美股資料:Financial Modeling Prep(FMP)API

項目 說明
提供商Financial Modeling Prep
資料類型美國股票歷史價格(日頻)
API 端點https://financialmodelingprep.com/stable
資料欄位date, open, high, low, close, adjClose, volume
請求限制免費版 250 次/天
資料品質專業級,已調整股利與分割

台股資料:FinMind API

項目 說明
提供商FinMind 金融資料平台
資料類型台灣股票歷史價格(日頻)
API 端點https://api.finmindtrade.com/api/v4
資料欄位date, open, high, low, close, Trading_Volume
請求限制免費版 600 次/小時
資料品質需額外取得調整後價格

2.2 備援資料來源

為確保資料完整性,本研究設定以下備援來源:

市場 主要來源 備援來源
美股FMP APIyfinance(Python 套件)
台股FinMind API台灣證券交易所公開資訊觀測站

2.3 資料欄位需求

本研究所需的價格資料欄位如下:

欄位名稱 說明 必要性 用途
date交易日期必要時間索引
high當日最高價必要計算近期最高價(用於跌幅計算)
close收盤價參考資料驗證用
adj_close調整後收盤價必要跌幅計算、報酬率計算
volume成交量可選流動性篩選(備用)

三、調整後收盤價的重要性

3.1 adj_close 的定義

調整後收盤價(Adjusted Close Price, adj_close)是經過以下企業行動(Corporate Actions)調整後的價格:

  1. 現金股利(Cash Dividend):除息時向下調整歷史價格
  2. 股票股利(Stock Dividend):除權時向下調整歷史價格
  3. 股票分割(Stock Split):分割時按比例調整歷史價格
  4. 增資配股(Rights Issue):配股時向下調整歷史價格

3.2 為何必須使用 adj_close

使用未調整的收盤價(close)進行跌幅策略研究,會產生嚴重的假跌幅訊號問題:

案例說明:假設某股票除息前收盤價為 100 元,配發現金股利 5 元。

情境 除息前價格 除息後價格 看起來的跌幅 真實跌幅
使用 close10095-5%0%(實際是股利發放)
使用 adj_close1001000%0%(正確反映)

若使用未調整價格,在除息日當天會產生假的「大跌」訊號,觸發錯誤的進場決策。使用調整後價格可避免此問題。

3.3 adj_close 的計算原理

調整後價格的計算採用向後調整(Backward Adjustment)方法:

$\text{adj\_close}_t = \text{close}_t \times \prod_{i=t+1}^{T} \frac{1}{\text{調整因子}_i}$

其中,調整因子反映了股利發放、股票分割等企業行動的影響。

實際案例:台積電(2330)於 2023 年配發現金股利 11.5 元

四、研究期間

4.1 期間設定

本研究的時間範圍設定如下:

期間類型 起始日期 結束日期 用途
資料收集期2005-01-012024-10-31完整價格資料範圍
觀察期(最長)2005-01-012014-12-31Walk-Forward 最長訓練期(L=10)
測試期2015-01-012024-10-31策略績效評估期間(10 年)

4.2 期間選擇的依據

觀察期(2005-2014)

測試期(2015-2024)

4.3 Walk-Forward 期間切分

本研究採用滾動窗口的 Walk-Forward 驗證,期間切分如下(以 L = 3 年為例):

測試年度 訓練期 測試期
20152012-20142015
20162013-20152016
20172014-20162017
.........
20242021-20232024

五、資料驗證程序

5.1 資料完整性檢查

對於每檔股票,執行以下完整性檢查:

完整度計算公式:
完整度 = 實際交易日數 / 預期交易日數 × 100%

判定標準:
- 完整度 ≥ 95%:通過
- 完整度 < 95%:排除或人工審核

5.2 調整後價格驗證

驗證 adj_close 資料的合理性:

  1. 調整比例檢查:計算 adj_close / close 的比例,識別可能的調整日期
  2. 連續性檢查:檢查調整後價格的日報酬是否存在異常跳動(排除真實的除權息調整)
  3. 極端報酬檢查:標記單日報酬超過 ±20% 的資料點,進行人工審核

5.3 異常值檢測

檢測以下類型的資料異常:

異常類型 檢測條件 處理方式
極端報酬單日報酬 > 50%人工審核確認
無效價格價格 ≤ 0排除該筆資料
High-Low 錯誤最高價 < 最低價排除該筆資料
重複資料同日期多筆記錄保留最新一筆

5.4 資料品質報告

資料驗證完成後,產出以下資料品質摘要:

項目 數值
候選股票數約 130 檔
通過驗證數116 檔
排除數約 14 檔
通過率約 89%
總資料筆數約 550,000 筆
資料完整度(平均)> 98%

六、資料處理流程

6.1 資料載入

資料從資料庫載入時,採用以下標準化流程:

  1. 連接資料庫:使用 Laravel 專案的 MariaDB 資料庫
  2. 查詢價格資料:從 daily_prices 表取得 adj_close、high 等欄位
  3. 關聯股票資訊:從 stocks 表取得 symbol、market、stock_type 等欄位
  4. 資料格式化:轉換為標準的 DataFrame 格式

6.2 缺失值處理

對於少量的缺失交易日(如節假日後的資料延遲),採用以下處理方式:

6.3 資料輸出格式

處理後的資料以標準化格式輸出:

欄位 資料類型 說明
stock_idINTEGER股票內部識別碼
symbolVARCHAR股票代號
dateDATE交易日期
priceDECIMAL調整後收盤價(adj_close)
highDECIMAL當日最高價
marketVARCHAR市場(US/TW)
stock_typeVARCHAR產品類型(ETF/STOCK)

七、小結

本節說明了本研究的資料來源與樣本選擇,主要內容包括:

  1. 樣本組成:116 檔標的,涵蓋美國(63 檔)與台灣(53 檔)兩市場,包含大型權值股與主流 ETF。
  2. 資料來源:美股使用 FMP API,台股使用 FinMind API,兩者均提供專業級的調整後價格資料。
  3. 調整後價格的重要性:使用 adj_close 可避免除權息產生的假跌幅訊號,確保跌幅計算與報酬評估的準確性。
  4. 研究期間:觀察期 2005-2014 年,測試期 2015-2024 年,共 10 年的樣本外測試。
  5. 資料驗證:透過完整性檢查、調整後價格驗證與異常值檢測,確保資料品質。

下一節將詳細說明動態跌幅門檻策略的設計,包括跌幅計算公式、門檻設定方式與投資執行規則。