Python 股票 5 分鐘超簡單選股與回測 – 讓你投資股票少繳學費!

在這篇文章中,我們將介紹如何使用 Python 的 finlab 套件進行選股與回測。只需 5 分鐘,你將學會如何用 Python 挑選股票以及進行簡單的回測,讓你在投資股票時能減少賠錢付學費。最近在看一些比較古典而學術的策略文章,雖然已經眾所皆知,但是好像很少人用,這篇文章將介紹,如何利用 Python 實做建構股票的 portfolio 來實現股票持有的報酬率。

Portfolio Trading 就是選擇一籃子股票,並照著一定的比例買入持有一段時間,這篇文章先用最簡單的篩選法,選出一些股票,並觀察買入後一段時間的變化。

安裝 finlab 套件

首先,你需要安裝 finlab 套件。在終端機或命令提示字元中輸入以下指令:

pip install finlab

匯入套件

在 Python 程式中,我們將匯入 finlab 套件的 databacktest 模組,以取得股票數據和進行回測。

from finlab import data, backtest

取得股票數據

使用 data.get() 函數取得股票數據,方法如下:

price_data = data.get('price:收盤價')

你可以根據需要替換成其他股票數據,例如:price:開盤價price:最高價 等。

選擇投資策略

在本教程中,我們將使用簡單的投資策略:選擇市場中 10 日均線價格最高的前 20% 股票。首先,計算 10 日均線:

moving_average = price_data.rolling(10).mean()

接著,找出每天市場中 10 日均線價格最高的前 20% 股票:

top_20_percent_stocks = moving_average > moving_average.quantile(0.8, axis=1)

回測投資策略

使用 backtest.sim() 函數回測投資策略,方法如下:

result = backtest.sim(top_20_percent_stocks, resample='M')

在這裡,top_20_percent_stocks 是選擇的投資組合,resample='M' 表示每月調整投資組合。假如你都看不懂,建議你先去看 finlab package 的新手教學

什麼!回測竟然只要這麼少行!!是的因為我們是平均分散所有要買的股票,所以只要把選出來的股價做平均,買入這個平均指數就可以了。由於有了前面的假設,結果會是一樣的。

完整的範例

from finlab import data, backtest

price_data = data.get('price:收盤價')
moving_average = price_data.rolling(10).mean()
top_20_percent_stocks = moving_average > moving_average.quantile(0.8, axis=1)
result = backtest.sim(top_20_percent_stocks, resample='M')
image 14

近年來獲利普普,感覺還得加入其它的條件吧?
大家可以新增一些指標,並且用類似的方法做回測喔!

另外,假如想要實做更多有用的指標,可以參考:超簡單108種技術指標,找一個你喜歡的吧!

除了開高低收,想要有更多數據做回測嗎?也歡迎到
財報爬蟲
月營收爬蟲
來找找喔!

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!