---
# System prepended metadata

title: Project04
tags: ['teach:MF']

---

---
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|疫情控管指數,代表疫情管控的嚴格程度，考量(１)關閉校園(２)關閉工作場所(3) 取消公共聚會(４)限制集會(５)關閉大眾交通運輸(６)要求家中管制(７)限制國際移動(８)限制海外旅遊(９)公開資訊宣導|
|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)





---

---


