2017 年 AIDS 年會:應用實例-價格預測

Pei Lee
6 min readNov 22, 2017

--

基本上這兩場演講在方法上都算是走一個比較中規中矩的路線。

一、文字分析在財務上的應用-以股價預測為例 / 楊立偉 台灣大學工商管理學系 教授

這場主要是由楊立偉分享兩組台大工管系學生所作出來的成果。

在股價分析上大致可分為四個面向:

  • 基本面:財務報表、營業報告、交易資料
  • 技術面:股票走勢等時間序列分析,例如:XQ 操盤高手
  • 消息面:重大消息
  • 環境面:景氣、利率、匯率等

而這次的主題主要是從消息面著手。至於為什麼社群訊息能預測股價?

1. 公司內部訊息由社群傳播
2. 群眾決定市場
3. 不論真確度都值得參考

參考的論文為《Twitter mood predicts stock market 86.7% Accuracy》。資料的準備上,蒐集看漲及看跌文章,2016年 1–11 月財經文章約 9 萬篇,並根據幾天後股市的漲跌來做驗證貼標籤。

A 組學生

  1. 以每日均價的標準差進行排名,找出標準差最大的前四十名,作為有明顯漲跌波動的選股。
  2. 人工提名十初個形容股市漲跌的字詞,例如:走低、震盪、利多、利空、跌破等,並找出包含這些詞的文章。
  3. 各自依 2-4 gram 作切割合併,依 TF*DF 卡方排序,合併刪除過於相近的字詞(例如子字串)。

(中間步驟沒聽到)

4. 分別以 1、3、7 天後的股價作分類模型,以漲跌幅作為目標,實作後以 1 天後準確度最高。

5. 採 KNN、SVM、Random Forest,最佳結果為 Random Forest:

  • Number of Trees:500
  • Number of Variables / Tree:sqrt(n),n = number of terms

6. 驗證方法 K Fold Validation:

  • K = 5
  • 5 fold X 5 round = 25 iterations
  • Accuracy Rate = Average of All Iterations

B 組學生

  1. 挑選散戶熱門,並且新聞討論熱度較高的股票。
  2. 篩選含選定個股名稱的文章作為語料,各自依 2–4 gram 作切割合併,依 DF 卡方排序,選出前幾名的詞。
  3. 加入考慮大盤趨勢的三個特徵變數:
  • 台股收盤指數
  • 即期買匯
  • 即期賣匯

4. 加入是否假日發佈的特徵變數:若在假日發佈,投資人可能有較長時間作驗正,因而調整對股價的預期。

5. 建立特徵矩陣:實驗 Top 300、500、1000 個字詞數,準確率無明顯變化,故採 Top 300 字詞,加上其他 4 個特徵。

6. 準備訓練資料集:

  • Step 1:計算日報酬率的平均值及標準差:mean±1/2*sigma 作為漲跌的判斷值
  • Step 2:將每篇文章標籤上新聞發佈前最後一次開市的股價
  • Step 3:將每篇文章標籤上新聞發佈後三天股市的收盤價
  • Step 4:計算各篇文章在發佈後三日的報酬率,小於 mean-1/2*sigma為跌,大於mean+1/2*sigma為漲,介於中間為一般波動。

7. 實驗結果:各模型平均準確率 SVM 0.61、KNN 0.64、Decision Tree 0.80。

以上是這場演講的主要簡報內容,其實個人覺得沒有交代得很清楚,不過看起來的作法推測應該是藉由 N-gram 來斷字,找公司名稱,取代以往要建立詞庫的方式。接著列出人工定義的看漲跟看跌的詞,例如:走低、震盪、利多等等,把這些詞當作欄位屬性,有是 1 沒有是 0; B 組學生有再把自己的專業領域知識加入,放了其他變數。最後根據實際股價漲跌,來看包含這些字的文章,是否真的如實漲了或跌了。簡單來說,一篇文章出來後,去驗證他說得準不準,如果準,以後這樣的文章出來後,就能知道隔幾天股市會漲會跌。

N-gram 是一直有耳聞但還沒嘗試過的小技巧,感覺之後應該有機會能夠試試看,以下這篇文章覺得這位大大把 N-gram 能做的事說得蠻清楚的:

以文字分析而言,這是一個有趣的嘗試,不過感覺離實際應用還有一段距離。雖然一開始整體文章有 9 萬篇,但學生挑出了必須含有股市漲跌字詞的文章,這樣剩下的文章有幾篇?能預測的標的數量感覺蠻有限。另外有沒有可能其實那間公司發生了什麼事情,所以股價早已經跌了,然後相關的新聞出來後,股價再繼續跌,這樣也會被當成文章有預警效果嗎?這是初步的一些想法,不過無論如何還是覺得這樣的嘗試蠻好的。

二、以深度學習估算車牌競標成交價 / 周恩誌 香港中文大學經濟系 講師暨計算設施主任

這場演講的講者周恩誌為經濟學背景,因此對於他怎麼會使用深度學習來處理車牌價格問題覺得有點興趣。一開始研究的動機是想要了解車牌拍賣價格是否有下午效應?意即上下午平均價格不一。而會將問題定義為一個 RNN 能夠處理的範疇,主要在於車牌上面英文數字的排列順序,對於車牌價格的影響非常大。例如數字「168」帶有中文「一路發」的概念,因此價格就會較「861」或「186」等來得高上不少,基於這樣的理由而使用了 RNN 模型。周恩誌說對於一個經濟學學者而言,這個問題就像是一個翻譯:「將車牌號碼翻譯成價格」。

資料集為 1997 Jan — 2010 Jul 香港車牌拍賣記錄 52,926 筆,其中有 5.1% 車牌沒有賣出,剩 50,698 筆,欄位內容有車牌號碼、售價、拍賣日期。將資料分成三份:64% 訓練 16% 選擇模型 20% 測試,以訓練集訓練了 40 次。模型設計上使用 Bidirectional RNN,每次輸入車牌上的一個字元,周恩誌表示 Batch Normalization 有助加速訓練,無需使用 LSTM,然後將輸出結果相加。模型評估上使用 Root Mean Square Error。至於參數則為:

  • Character Embedding:12, 32, 64, 128, 256
  • 每層神經單元數:64, 128, 256, 512, 1024, 2048
  • RNN 層數:1, 3, 5, 7, 9
  • Fully-connected 層數:1, 3
  • Dropout rate:0, 0.05, 0.1

對於深度學習還很不熟,所以沒辦法在技術層面上有什麼想法,但社會科學領域的學者能夠在碰到實際問題時,試圖以深度學習來做解答,個人很喜歡這樣的一個嘗試。

--

--

Pei Lee
Pei Lee

Written by Pei Lee

Data Team Lead @ Retail & E-commerce Industry

No responses yet