--- title: Project04 tags: teach:MF --- # ML and FinTech: Project by 陳敬文 #### keywords: Stock price forecast, Binary Classification model, covid-19 --- ## Motivations (Talk 1) --- [疫情再起衝擊台股 利空頻傳 短線震盪整理](https://ec.ltn.com.tw/article/paper/1471741) 在疫情肆虐下,各種產業面臨巨變與轉型,金融市場也因此風波不斷,股價的漲跌屢屢創歷史新高,也因此我想藉由機器學習的方式,以1.新增病例數 2.新增病例死亡數 3.疫苗施打數 4.期間防疫級數 5.解封指數 等資料,預測股市的漲或跌。 ## EDA (Talk 2) Datas are collected from: 1. [COVID-19全球疫情地圖](https://covid-19.nchc.org.tw/dt_owl.php?dt_name=4&countrycode=USA) 2. [Market Watch](https://www.marketwatch.com/investing/index/djia/download-data) |Feature| Name | description | |-------| -------- | -------- | |X0|new_cases|每日新增確診者數| |X1|new_deaths|每日新增確診者死亡數| |X2|new_vaccinations|每日新增疫苗接種劑數| |X3|stringency_index|疫情控管指數,代表疫情管控的嚴格程度,考量(1)關閉校園(2)關閉工作場所(3) 取消公共聚會(4)限制集會(5)關閉大眾交通運輸(6)要求家中管制(7)限制國際移動(8)限制海外旅遊(9)公開資訊宣導| |X4|Unblock|解封指數,表示疫情擴散的嚴重程度,公式為:{確診人數/康復人數*(1-致死率)}-1,小於1時可解封| |y|DJI|道瓊指數,美股三大指數之一| #### 由於美國的病例較多且起伏明顯,故選擇美國病例與股市為訓練資料,變數的選擇是假設疫情對股市造成兩個層面的影響:(1)新聞媒體(2)民生經濟。 ### Heat plot: #### 1. 原本資料的參數大多高度相關,因此除去大部分變數 <img src="https://i.imgur.com/vrt4LdA.png" width="80%"> #### 2. 調整後的變數間關聯性較少,可望減少相似的特徵。 <img src="https://i.imgur.com/pLClFGe.png" width="60%"> ### Data Analysis: ![](https://i.imgur.com/O1YhyL1.png) ### Pair Plot: ![](https://i.imgur.com/84NdH92.png) ### Line Chart: ![](https://i.imgur.com/1U89d8r.png) ![](https://i.imgur.com/6EyJXTE.png) ![](https://i.imgur.com/mP2dfbD.png) ### Histogram: <img src="https://i.imgur.com/HOL04tU.png" width="50%"> <img src="https://i.imgur.com/3qpNnqg.png" width="50%"> <img src="https://i.imgur.com/ZB9ny1l.png" width="50%"> <img src="https://i.imgur.com/Wc4zgfO.png" width="50%"> ## Problem formulation (Talk 3) ### Problem formulation 使用機器學習模型,以COVID19相關變數預測股市的漲或跌。 模型包含: 1. KNN 2. Random Forest 3. XGBoost 4. Neural Network ### Benckmark method 1. Logistic Regression 2. Bayes Classification ## Analysis (Talk 4) #### 資料處理 1. 將stringency_index中的None值改為平均值 2. 將DJI轉換成漲或跌(1 or 0) 3. 對每個feature進行Normalization 4. 由於資料量不足,為增加預測的可信度,採用k-fold cross validation評估準確度 #### 結果 1. Logistic Regression ![](https://i.imgur.com/lKfZx8B.png) 2. Bayes Classification ![](https://i.imgur.com/ovJVNZx.png) 3. KNN ![](https://i.imgur.com/o5yn7X9.png) 4. RandomForest ![](https://i.imgur.com/4jPgC1n.png) 5. XGBoost ![](https://i.imgur.com/yMEZIH3.png) 6. Neural Network ![](https://i.imgur.com/EwEST7P.png) ## Conclusion (Talk 4) | Model | Training Score | Testing Score | | -------- | -------- | -------- | |Logistic Regression| 0.5715 | 0.5555 | |Bayes Classification|0.5453|0.5328| |KNN|0.742|0.6605| |RandomForest|0.9731|0.5905| |XGBoost|0.8236|0.4897| |Neural Network|0.571|0.5555| 1. 資料並沒有明顯分群,在Logistic regression分類結果較差 2. Feature間彼此相關,與貝氏分類器的假設不同,可能是結果較差的原因 3. KNN的準確性最高,而且在訓練集比較沒有overfitting的現象 4. 對需要更新參數的模型而言,預測的準確性較差 5. RandomForest發生了overfitting 6. 漲跌可能會受到前幾天的影響,NN改成RNN或LSTM可能會比較好 ## Reference ## Code and Data [colab code](https://colab.research.google.com/drive/15Vaerm_BOoMYuRU4MWUZWn_j2hyQPPFU#scrollTo=mGa4S9cgFeyb) --- ---