台股超簡單 Python 技巧,三行程式碼:打造年報酬 +20% 的選股策略!

不蓋你,台股 Python 量化交易真的只要三行!我創立 FinLab 以來,一直想要打造一個優質的 Python 回測服務,挑戰技術上的突破,為台灣的小資金融做出更進一步的貢獻。只需要 pip install finlab 就可以下載所有歷史資料、經過兩三行的選股程式碼,就可以模擬歷史績效囉!讓你用短短三天的時間,從零到一百,實戰台使用 Python。

為什麼要做 FinLab Python Package?

Python 最大的優點就是開源,有很多 ML 和資料分析的 Packages 可以使用,但 Python 永遠都不可能像 XQ、Multicharts 一樣方便。寫爬蟲、清洗資料、回測策略,最精簡也需要上千行程式碼才能完成。但使用 FinLab Package 只要三行:

台股終極 Python Pacakge 三行完成程式碼!
台股終極 Python 超方便 Package,三行完成程式碼!

而 Python 的量化平台在台灣,大部分是高手搭建自己用,很少會拿出來跟大家分享,原因很簡單,自己賺錢都賺不完了,何必做成 2C 的平台呢?開源出來對高手有任何好處嗎?沒有。而事實上,就算有人自告奮勇,製作這樣的平台,很多也都是以冷清或失敗收場(美國 Quantopian)。導致於一般想接觸量化投資的大眾,就只能使用 Python 以外的服務,例如 XQ、Multicharts、等。

目標是做出改變台灣投資環境生態的 Python Package

雖然這不會是我最賺錢的專案,但卻是最想要成功的專案,要如何讓此專案永續經營,並且跟使用者、開發者達到互利互惠,才是最終的目的。要是今天我不做了,FinLab 還是可以繼續下去,讓越來越多人用 Python 來選股。

從 2015 年,就想要做一個量化選股平台,但那時有太多的阻礙了,雲端技術都沒有到位,現在終於水到渠成了!有安裝的 Python 環境:Colab,有 cloud function、storage 在台灣可以節省成本,有 5G 加速下載歷史資料的時間,有 Kubernetes 平衡大家使用回測負載。只能說沒有這些功能,我們也沒辦法做出一個像樣的產品(感謝 Google XD)。

這只是一個起點,時代的腳步是不等人的,未來還有更多的領域想要整合,更多的技術,像是 AI、虛擬貨幣、期權等等。也需要大家的共襄盛舉,請督促我們更近一步將 Python 選股、投資交易發揚光大!

三步驟:台股創造 20% 年化報酬策略

現在就開始使用 FinLab Package 吧!其實安裝 FinLab Package 的方式非常簡單,只要打開 Google Colab,並且輸入

!pip install finlab

就可以開始使用了,接下來就來示範,三行獲得 20% 報酬率的選股策略!

1. 獲取資料

假如我們想要獲得台灣上市上櫃所有的股價,可以輸入:

from finlab import data
data.get('price:收盤價')
image

是不是真的超快超方便!別急,更精彩的還在後頭!

選股策略

假如我們想要選出創 300 天新高的股票,要怎麼選擇呢?只要一行即可完成:

position = close >= close.rolling(300).max()
position
image 17
產生清單

當中的 position 是一個 True 或 False 的表,代表某檔股票當天是否創新高,創新高就為 True,反之則為 False。由於創三百天新高是滿高門檻的,所以可以看到上述股票都是呈現 False,也就是沒有創新高。

歷史回測

最後,假如我們真的想要回測,也就是驗證創新高 300 天的股票,持有一個月,會有怎麼樣的績效,我們可以用以下的方法模擬:

from finlab import backtest

backtest.sim(position, resample='M')
image 18
回測結果

瞬間完成了回測。怎麼樣?沒有騙你吧,真的是三行(不算 import )完成了 20% 年化報酬的回測了。假如你一言不合想要直接用,介面也會顯示目前持股,只要照著持股操作,就可以獲得與模擬相似的報酬率。

image 19
按照回測邏輯給出的近期清單

這個在我 2015 年夢寐以求的簡便系統,如今已經完成,想知道模組如何使用可以參考這篇 入門文章 喔!我們有詳細的 API 文檔 與豐富的 資料庫 等你來探索。也可以追蹤我們 FinLab 獲得更多新知,來增加自己的量化交易報酬率吧!

FinLab - 韓承佑

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