在這篇文章中,我們將介紹如何使用 Python 的 finlab
套件進行選股與回測。只需 5 分鐘,你將學會如何用 Python 挑選股票以及進行簡單的回測,讓你在投資股票時能減少賠錢付學費。最近在看一些比較古典而學術的策略文章,雖然已經眾所皆知,但是好像很少人用,這篇文章將介紹,如何利用 Python 實做建構股票的 portfolio 來實現股票持有的報酬率。
Portfolio Trading 就是選擇一籃子股票,並照著一定的比例買入持有一段時間,這篇文章先用最簡單的篩選法,選出一些股票,並觀察買入後一段時間的變化。
安裝 finlab 套件
首先,你需要安裝 finlab
套件。在終端機或命令提示字元中輸入以下指令:
pip install finlab
匯入套件
在 Python 程式中,我們將匯入 finlab
套件的 data
和 backtest
模組,以取得股票數據和進行回測。
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')
近年來獲利普普,感覺還得加入其它的條件吧?
大家可以新增一些指標,並且用類似的方法做回測喔!
另外,假如想要實做更多有用的指標,可以參考:超簡單108種技術指標,找一個你喜歡的吧!