利用Machine Learning 選股新手教學 - FinLab

文章推薦指數: 80 %
投票人數:10人

C. 機器學習訓練資料 Skiptocontent Tags:MACHINELEARNING,PYTHON,機器學習 最近一直在弄MachineLearning,都快忘記寫blog了,哈! 其實要machine選股真的很簡單!這篇blog就會帶大家從頭開始,用最簡單的方式,將MachineLearning實做!這邊只是給大家一個簡單的架構,可以自己去嘗試優化,讓它更聰明!以下是用mac或是linux的commandline完成的,假如有任何錯誤或不懂的地方歡迎聯絡我喔~ 內容目錄 隱藏 1 1.免費取得資料 2 2.架設環境 2.1 為何要安裝pip呢? 2.2 為何要安裝virtualenv呢? 3 3.建置project 4 4.開工! 4.1 A.讀入資料 4.2 B.處理資料 4.3 C.機器學習訓練資料 4.4 D.結果 1.免費取得資料 取得資料的方法很簡單,幫冷清的寒舍小小宣傳一下: 分享任一你覺得很有趣的FinLab文章於FB將分享截圖傳到 [email protected]一兩天內即可獲得data.csv!依照本blog的含金量、data.csv的完整程度,你一定不會後悔的! 2.架設環境 假如你已經會使用python了,那可以直接跳過這個步驟,假如不會的話,可以照著下面的步驟完成: 到官網下載Python3,並且安裝安裝pip安裝virtualenv為何要安裝pip呢? pip可以幫我們下載MachineLearning所需要的package(也就是python的libraries)。

為何要安裝 virtualenv 呢? virtualenv可以幫你產生project的環境,每一個project用自己的libraries,這樣比較不容易有衝突。

3.建置project 首先,先用virtualenv創建project createproject virtualenvfinance_ml cdfinance_ml 接下來必須要開啟工作環境: activateanddeactivateproject sourcebin/activate deactivate 這邊有兩行,一行是開啟環境,一行是結束環境!假如你還要繼續,先不要輸入第二行。

將data.csv複製到當前資料夾,並且安裝pythonpackages installpythonpackages pipinstalljupyter pipinstallpandas pipinstallsklearn pipinstallmatplotlib 4.開工! 首先就是開啟jupyternotebook,並開一個python的環境 startnotebook jupyternotebook 這樣會開啟一個網頁版的GUI介面,只要新增python的notebook就可以用了!接下來進入我們的主題:機器學習程式碼! A.讀入資料 這邊我們用pandas讀入所需要的資料,index_col可以設定要哪一個columns當作index。

這邊的index選擇在data.csv中,第一個未命名的column。

readdata importpandasaspd data=pd.read_csv('data.csv',index_col='Unnamed:0',parse_dates=['buy_date','sell_date']) B.處理資料 我們將資料分成三類,一類是跑回測用的dbacktest,另一類是機器學習用的dtraning,另外一個是traning完用來評估的dtest。

processdata fromsklearn.model_selectionimporttrain_test_split #cleardata將爛資料去掉 data.dropna(how='any',inplace=True) #選擇2015年以後的資料作為回測用 dbacktest=data[data['buy_date']>'2015'] #將其於的資料再分成兩類:dtrain跟dtest dataTrainTest=data[data['sell_date']1) D.結果 你說這樣就結束了!?對呀結束了。

其實machinelearning要簡單真的就只是這樣而已!接下來我們來看一下它預測的准不準: predict result=rf.predict(dtest[features]) print('testdata') print('gainbeforefiltered',dtest['獲利'].mean()) print('gainafterfiltered',dtest['獲利'][result].mean()) print('numstocks',sum(result),'/',len(dtest)) result=rf.predict(dbacktest[features]) print('backtestdata') print('gainbeforefiltered',dbacktest['獲利'].mean()) print('gainafterfiltered',dbacktest['獲利'][result].mean()) print('numstocks',sum(result),'/',len(dbacktest)) 假如一切順利就會看到以下結果: 這邊的gain是指平均的報酬率,也就是所有股票的價格在賣出時是否賺錢,小於一就是虧,大於一就是賺。

結果看起來還滿猛的!竟然有接近7%的報酬率! 但真的是如此嗎?我們把它畫成隨著時間,本金成長的獲利圖: backtest %matplotlibinline dbacktest['預測']=pd.Series(result,index=dbacktest.index) dates=list(set(dbacktest['buy_date'])) dates.sort() history=[] fordindates: history.append(dbacktest[(dbacktest['buy_date']==d)&(dbacktest['預測'])]['獲利'].mean()) pd.Series(history,index=dates).cumprod().plot() 發現其實沒有想像中那麼好。

這是意料之中的結果,畢竟我們的learning時間才幾秒鐘,假如增加n_estimator這個變數,是否可以讓結果更好?假如使用Regression會不會更好?假如改變一下機器學習的參數、或修改一下features,是否可以選到更好的股票呢?就留給各位慢慢玩!以下是可以改進的地方: featureengineering:將features做修正、刪除、normalize等篩選能獲利X%的股票classificationvsregression:可以兩種都試試看不同的model,可以試試SVM、NN、XGBoost等等不同的model都有可以調整超多參數來達到優化利用earlystop來預防overfitting。

我只是列出最基本的,還有很多可以玩的,這也是我這禮拜正在弄的東西,害我都沒時間寫網誌XDD 覺得我們的文章有幫助到您,就把它分享給身邊的人吧! Sharethiscontent Opensinanewwindow Opensinanewwindow Opensinanewwindow Opensinanewwindow FinLab-韓承佑 嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會學術顧問、台北商業大學創新育成中心創業技術顧問與上市科技公司量化交易顧問。

當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。

我們成立FinLab量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。

希望可以在量化投資的路上,當大家的「武器製造商」! YouMightAlsoLike Python新手教學(Part4):台股的好兄弟是?台股相關性研究 2020-07-22 用Python投資加密貨幣:爬蟲下載歷史數據(Part2) 2020-07-20 Python股票5分鐘超簡單選股與回測–讓你投資股票少繳學費! 2020-07-22 利用Pandas輕鬆選股–Python實作教學 2020-07-22 財報爬蟲超簡單–用Python一次抓綜合損益、資產負債、營利分析 2020-07-22 三大法人爬蟲:Python實作教學 2020-07-22 Python時間序列實做! 2020-07-22 Python新手教學(Part2):全球指數一次抓 2020-07-22 每週收到新知識 只要有新文章,立刻用Email通知你 加入 Emailisrequired Emailisnotvalid Thanksforyoursubscription. Failedtosubscribe,pleasecontactadmin. 關於網站 FinLab財經實驗室 股票如何選擇?要怎麼學習量化投資?財報、技術指標如何看?FinLab利用股票分析、財經python教學,讓你在在茫茫股海中,找到專屬於自己的投資方法。

Facebook粉絲專頁 FinLabYouTube頻道 Opensinanewtab 近期文章 FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 2022-05-25/ 0Comments 融資融券主力板塊|Treemap延伸應用|DashBoard製作教學(4) 2022-05-22/ 0Comments Plotly-多重圖組|融資維持率|DashBoard製作教學(3) 2022-05-18/ 0Comments 文章分類 AI看股票(17) FinLabYouTube(4) Python新手教學(21) PYTHON財經(13) Uncategorized(3) 加密貨幣(18) 基本面分析(20) 大盤漲跌(10) 實價登入(3) 技術面(16) 投資新手(5) 生產力(12) 籌碼面(7) 股票策略(23) 財報狗分析(5) 財經PYTHON教學(47) 選股策略(27) 量子電腦(1) Python理財入門課程Python理財進階課程Python加密貨幣實戰課程



請為這篇文章評分?