You are on page 1of 9

國立成功大學

工程科學系
數值方法期末專題
股價預測漲跌幅

指導教授:游濟華
作者:沈正崴

民國一百一十一年六月十五號

1
目錄

一、 摘要 .............................................. 2

二、 研究動機與研究問題 ................................ 3

三、研究方法及步驟 ....................................... 3

1. 設定預測目標....................................... 3

2. 蒐集資料數據....................................... 3

3. 選擇 AI 模型........................................ 4

4. 標記預測目標....................................... 5

5. 資料處理........................................... 5

6. AI 學習、測驗 ...................................... 5

7. 測驗結果........................................... 6

8. 預測目標股價....................................... 6

四、成果與討論 ........................................... 7

1. 介面設計........................................... 7

2. 輸出資料(結果) .................................... 7

3. 問題與討論......................................... 8

4. 未來規劃........................................... 9

五、心得 ................................................................................................. 9

2
一、摘要
近年來投資理財風氣盛行,更有句名言說道「你不理財 財不理你」,
只要能夠善用手邊的理財工具,就能夠幫助自己在日積月累的努力下,滾
出大財富。
由於普通的投資人(一般稱為散戶),在一般的情況下只會想要快速地
賺錢,想要低買高賣,因此作者想要設計出一個程式能夠預測個股未來四
天的漲跌,來幫助投資人投資。

二、研究動機與研究問題
因應投資理財風氣盛行,更是有非常自稱為「投顧專家」的老師傳簡
訊或打電話給我,說有飆股的訊息,只需要加賴就可以免費索取,或是在
YouTube 有許多財經專家會介紹如何使用各式各樣的指標來判斷股票的趨
勢,例如:KD、量價關係…等等,但是始終沒有一個簡潔有力的方法。
因此想要研究出能夠利用模型來做出一款成功率高,且簡單就能夠執
行的程式,並且同時修了數值方法中的機器學習,想研究出自己的機器學
習模型來幫助自己,也同時能夠省下許多時間。

三、研究方法及步驟
以下為本次專題研究及實現的流程圖:

1. 設定預測目標:
本次目標設為「在未來四天內的收盤價格相較於今天是漲還
是跌」,研究的股票對象是「美國上市股票」,有 FB、MCD(麥當
勞)、AAPL(蘋果)、GOOG(Google)、MSFT(微軟)、TSLA(特斯拉)、
DIS(迪士尼)、TSM(台積電)、UMC(聯電)。
2. 蒐集資料數據:

3
a. 資料越多:AI 能參考、學習的樣本越多,越能歸納出優
良的邏輯公式。
b. 資料越廣:生成的因子越多,差異性越大,越有機會拼湊
出預測能力佳的因子組合
c. import yfinance 來取得資料。並且只取用「開」、
「高」、「低」、「收」、「成交量」來做討論。

d.
3. 選擇 AI 模型:
從眾多的 AI 模型中選擇「決策樹」,因為決策樹有良好的視
覺化,初學者也能夠理解決策樹是怎麼運行的。
例如:一顆決策樹

決策樹近似於人類的思考流程,對於一個 AI 的決策樹,能夠
根據無數個條件,無限個參數的綜合考量後,決定一個最適合的
結論。
在 yfinance 裡,有非常多的指標可以拿來當作機器學習使用
的參數,本次所選用的四項指標為「MACD」、「RSI」、「MOM」、
「STOCH」

4
4. 標記預測目標:
在原始眾多的資料上,標記著「答案」,以利 AI 知道該往哪
方向做學習。本次專題中設定,漲為 1;跌為 0。

5. 整理剩餘的資料(資料的預處理):
a. 資料的預處理通常分為三種,分別是「缺值的處理」、「類
別數據的處理」、「數據標準化」。由於本次專題的資料較
為簡單,所以只需要對缺值做處理,因為資料中含有 Nan
值。

b. 把資料切成二等分,分成「訓練集」與「測試集」,其中
各佔 70%與 30%。由於我們的預測目標是 4 日後的漲跌,
所以資料中的最後五筆是還沒有正確答案的,不管 AI 在
那五天做出什麼預測,我們都無從評斷它的正確與否,所
以不能包含於在測試集當中,並且同時將最後的這五筆資
料儲存,以利後續資料的預測。

6. 讓 AI 學習→測驗:
a. 接下來要將資料給 AI 做學習,因為我將資料分為兩部分
的關係,所以將會進行學習→測驗。
在 python 匯入 sklearn,創造一個決策樹。

b. max_depth = 7,代表這棵決策樹要長多「深」,或指這棵
決策樹要長多「高」

5
c. 讓決策樹學習與測驗

d. 計算準確率

7. 測驗結果:
混淆矩陣:可以藉由混淆矩陣來了解測試答案的狀況,
例如:

(True 跌)真實「跌」
,而 A.I. 正確預測「跌」的次數一共 50 次,
(False 漲)真實「跌」
,但 A.I. 錯誤預測「漲」的次數一共 10 次,
(True 漲)真實「漲」
,而 A.I. 正確預測「漲」的次數一共 18 次,
(False 跌)真實「漲」
,但 A.I. 錯誤預測「跌」的次數一共 22 次。
藉由模型的學習,我們可以得知測試集資料經過預測的結果。
本次專題的混淆矩陣,以下舉 FB 與 MCD 為例。

並且可以藉由混淆矩陣來計算準確率。
8. 預測目標股票:
以下舉 FB 與 MCD 為例,經過機器學習後,AI 根據模型所預測的結
果和準確率。

6
最後將以上結果結合 tkinter 來實現查詢多種股票的功能。
四、成果與討論
1. 介面設計
在 GUI 介面中,顯示主要是透過以上的「機器學習」來預測股價,
並且透過下拉式選單給使用者選取想要預測的股票。

2. 輸出資料(結果)
Example1:MCD 為麥當勞,顯示資料為未來四天個股的表現,並且
同時顯示本次模型的預測成功機率。

7
並且在同一個 GUI 可以重複查詢,以下為 Example2:TSLA(特斯
拉) 未來四天個股的表現。

3. 問題與討論
1. 我認為最大的問題在於模型無法快速的反應時事,因為股票會
隨著美國/全球的經濟新聞或個股的財報而受到影響,但是對
於機器學習的模型而言,機器學習只針對於數據(data)上的表
現,意即用過去的資料來推斷未來,而無法追上時事,導致於
預測的準確性降低很多,
2. 因為本次專題機器學習所參考的指標為「MACD」、「RSI」、
「MOM」、「STOCH」,實際上在 yfinance 裡還有一百八十幾個指

8
標可以拿來使用,也就是說,一定會存在更好的排列組合,以
用來做機器學習的指標。
3. 在專題的一開始,我原本是採取 2000 年至今的資料去做預
測,但是預測的準確率約只有 43%到 46%的成功機率,後來我
做出了一些的調整,嘗試不同的啟用年度(本人嘗試了從
2005、2010、2015、2020、2021 至今的資料),再去觀察準確
率,發現在前期成功機率並沒有顯著的提升,當嘗試到 2020
年時,準確率提升至約 50%到 55%之間,可以觀察到即使樣本
數提高了,但是準確率依舊沒有提高,可以驗證出在股市中歷
史幾乎很難重演,即使有著類似的情況,過去與未來的股價發
展是沒有絕對的關係的。但是我又多嘗試了 2021 年,發現準
確率又掉回 40%到 50%之間,我推論是因為今年股市整體的情
況跟去年差異不大的關係,但是今年股市整體的情況差異極
大,所以導致這種現象的發生。
4. 未來規劃
由於成功的機率不是非常的高,即使在過程中,我有成功的
讓準確率上升,但是上升的幅度依然有限,在未來我會想要更進
一步的學習機器學習,找出本次機器學習的盲點,並且改善它,
同時嘗試更多的參考指標,以增加專題的準確率。
對於 GUI,我會想要增加更多的功能,或是增加更多能遇刺
的股票。

五、心得
透過這一個期末專題,我學會了簡單的機器學習,透過程式去篩選出
需要的資料,並且建立自己的 GUI,展現出研究的成果,雖然在過程中非
常的艱難,但是在做出成品的那一刻,心裡卻是甜美的。同時也非常感謝
過程中幫助我的教授及助教們,因為有教授的指導及課堂的經驗累積,能
讓我在這門課的最後做出一個屬於自己的專題成果。

You might also like