台灣股市與Python的融合
台灣股市,作為亞洲重要的股票交易市場之一,擁有其獨特的市場結構和交易特性。隨著科技的進步,Python成為了股市分析中不可或缺的工具。然而一般人撰寫 Python 策略時,根據我的經驗,非常容易遇到以下的問題:
- 不知道要寫哪種策略
- 策略怎麼寫都表現不好
- 每次寫策略都從 0 開始,很累!
假如你也有以上的問題,那這篇文章就是來幫助你快速上手台股選股策略,你會獲得一個選股範本,這個範本是針對台股的特性而編寫而成,雖然選取了非常多 (100 檔)以上的股票,但還是維持顯著的超額報酬表現,另外一個重點是,這個範本完全只由價量來篩選,在台股中就已經有顯著的效果。這樣的範本非常適合再修改成其他種類的策略。
本文將介紹如何使用Python進行台灣股市的選股策略分析,並探討高動能與低波動策略在台股市場中的應用及其優勢。
台灣股市概況
台灣股市,以其活躍的交易和廣泛的上市公司種類著稱。從傳統製造業到高科技產業,台股市場匯聚了各行各業的代表企業。瞭解市場的基本結構和運作規則,是進行有效選股的前提。
Python於股市分析的應用
Python以其強大的數據處理和分析能力,在股市數據分析中發揮著重要作用。從數據獲取、數據清洗到複雜的算法運算,Python 提供了一個高效且靈活的平台,幫助投資者深入挖掘數據背後的信息。
選股策略基礎概念
選股策略是指用一定的標準和方法從眾多股票中選擇出投資標的,簡單的例子就是,我只買 10 元以下的股票,且殖利率大於 3 的股票。
然而以上的方法可能不會賺錢,怎麼樣的策略會賺錢呢?有效的選股策略應該考慮市場環境、公司基本面和技術分析等多方面因素。
本文注重在技術分析,會參考在台灣股市中最重要,且最有用的兩個指標,
- 投資者通常尋求高動能股票以追求高回報
- 同時也會考慮低波動股票以降低投資風險。
利用這兩個概念,來製作選股策略,發現在台股市場中非常的有效果!而且可以篩選出大量的股票標的,這些標的有很好的超額報酬,以下是我們實驗的結果,你可以自行判斷高風險與低波動,在台股市場中的作用。好在,我們 finlab 已經幫你處理好所有資料了,你可以直接安裝 finlab package 來下載 10 年以上的數據進行分析和驗證。
數據獲取與處理
使用Python進行股市分析的第一步是數據的獲取和處理。這包括從各種數據源獲取股票價格、成交量等信息,並進行必要的數據清洗和轉換,以便進一步分析。在 finlab package 的加持之下,使用者可以短短幾行就完成這個步驟:
from finlab import data
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
這篇文章由於是一個選股策略範本,所以目的在於用最簡單的資料,選取最多的股票,並且這些股票大量包含超額報酬。或許資深讀者會覺得這也太簡單了吧!沒錯,起手是就是這麼簡單,但真有效,接下來我們就來製作指標並且來分析。
低波動的計算與回測
短期波動和長期波動的計算是選股策略中的重要部分。短期波動通常反映了市場對某股票近期的反應,而長期波動則顯示了股票在較長時間內的價格穩定性。Python可以幫助快速計算這些指標:
std20 = (close
.pct_change()
.rolling(20).std()
.rank(axis=1, pct=True)
[close.notna()])
為選股提供參考。一般來說,我們會希望選出來的股票「長期波動低」這並僅僅只是比較安全而已,甚至還可能讓選股策略的報酬率更好,以下是我們將波動程度按照低到高分 5 組進行回測的結果,可以發現波動度越低的股票標的,價格穩定緩步上升,長期來講能夠獲得比較好的報酬率:
台股市場的動能分析
台股市場非常單純,大部分的股票流動性低,只需要有幾千萬台幣,拉抬股價是非常簡單的事情,這也造就了主力買股票時,必須要分天買進,這時候就容易造成股票數天上漲,我們在這種狀之下就可以來吃主力的豆腐。我個人最喜歡用的台股指標是「RSV」指標,在分析台股市場中的高動能股票可以幫助投資者捕捉市場上升趨勢,從而獲得潛在的高回報。Python的數據分析能力使得這一過程更加高效和精準:
rsv60 = ((close - close.rolling(60).min()) / (close.rolling(60).max() - close.rolling(60).min())[close.notna()])
跟低波動的分析一樣,我們可以將 RSV 高到低分成五組來回測,可以發現長期下來 RSV 高會優於 RSV 低的報酬率,用這種方式,就可以很好的分辨出高動能,或是說,維持在高檔盤整的股票標的。
組合條件設定與調整
接下來,我們可以來結合高動能以及低波動,在Python中設定和調整選股策略的條件是至關重要的。這些條件包括但不限於股票的動能、波動性和交易量等。透過靈活調整這些條件,投資者可以根據市場環境和個人風險偏好來優化自己的投資策略。
Python選股模型實作
實際上手實作Python選股模型,可以使理論知識轉化為實際操作。利用Python編寫的選股模型不僅可以進行數據分析,還可以根據設定的條件自動選出潛在的投資標的。
策略回測與分析
策略的回測是檢驗其有效性的關鍵步驟。Python提供的回測工具可以模擬策略在過去的表現,幫助投資者評估其風險和回報潛力。
from functools import reduce
from finlab import data
from finlab import backtest
with data.universe('TSE_OTC'):
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
# 短期波動
std20 = (close
.pct_change()
.rolling(20).std()
.rank(axis=1, pct=True)
[close.notna()])
# 長期波動
std60 = (close
.pct_change()
.rolling(60).std()
.rank(axis=1, pct=True)
[close.notna()])
# 股價相對高低
rsv60 = ((close - close.rolling(60).min())
/ (close.rolling(60).max()
- close.rolling(60).min())[close.notna()])
conds = [
# 增加你想測試的選股條件
# 可調整
rsv60.rank(axis=1, pct=True) > 0.9, # 高動能
std20.rank(axis=1, pct=True) < 0.8, # 低波動
std20 > std60, # 短期價格變化大
# 台股必備,不需調整
close > close.average(60),
volume > 100_000,
]
position_cond = reduce(lambda i, j: i & j, conds)
# 也可以做一些排序
position = close[position_cond].is_smallest(200)
r = backtest.sim(position, resample='M',
fee_ratio=1.425/1000*0.3, upload=False)
r.display()
雖然報酬率只有 14%,但是選的標的非常多,有將近100檔左右,這樣的選股效果算是非常顯著的。你只要根據這樣的架構,加入其他的選股條件,相信能夠達到非常不一般的選股績效。
風險控制與管理
在執行任何投資策略時,風險控制都是必不可少的。Python不僅可以幫助識別風險較低的投資機會,還可以進行投資組合的風險管理,以確保投資組合的整體風險水平符合投資者的承受能力。
FAQ
投資組合優化技巧
有效的投資組合優化是提高回報和降低風險的關鍵。使用Python,投資者可以進行資產配置、風險分散等策略,以優化其投資組合。這涉及到對不同股票的相關性分析,以及根據市場環境調整持股比例。
市場動態與策略調整
股市是一個不斷變化的環境,因此及時調整選股策略是非常重要的。Python的數據分析能力可以幫助投資者迅速捕捉市場趨勢的變化,並相應調整其選股策略,以應對市場的變動。
未來趨勢預測與策略調整
展望未來,台灣股市的發展趨勢及其對選股策略的影響是投資者關注的重點。利用Python進行趨勢預測,可以使投資者在市場變化前做出預判,從而及時調整策略,把握投資機會。
常見問題與解答
如何使用Python進行台灣股市的選股分析?
可以利用 finlab package 快速實作各式各樣的策略,我們在策略平台上也放了非常多的策略範本供大家使用
高動能與低波動策略在台股市場中的表現如何?
這是非常淺顯易懂,簡單好用長年有效的指標,適合拿來搭配籌碼面、基本面來製作各式各樣的策略。
Python在選股策略中的哪些功能最為關鍵?
回測,因為你才知道選出來的股票有沒有超額報酬,才能進而打敗市場。
如何進行有效的策略回測?
要將每個指標單獨驗證(就像是這篇文章的方式),確保這些單獨的指標,在市場上可以找到超額報酬。胡亂拼湊無效的指標,只會事半功倍喔!
在變化的市場環境中,如何調整選股策略?
用盡量長的歷史資料,回測出可信的績效,才能夠將策略使用的長長久久,適時的衡量策略風險,從低風險的開始研究,再慢慢往上小額嘗試高風險策略。
結論與未來展望
台灣股市擁有其獨特的市場特性,而Python作為一種強大的數據分析工具,在股市選股策略中發揮著重要作用。本文介紹了使用Python進行台灣股市選股策略的方法,包括高動能與低波動策略的分析。隨著技術的進步和市場的變化,未來將有更多機會和挑戰出現在台灣股市投資者面前。透過不斷學習和適應,投資者可以在這個充滿機會的市場中取得成功。
用程式自動下單
這個策略需要每天去看公司實施庫藏股的資料,每天去公開資訊交易站查詢,有點麻煩,為何不用我們提供的下單工具來輕鬆下單呢?其實下單的方式非常簡單,首先要在永豐先通過 API 申請後,只需要短短幾行就可以完成:
import os
from finlab.online.sinopac_account import SinopacAccount
from finlab.online.order_executor import OrderExecutor, Position
# 設定帳號金鑰
os.environ['SHIOAJI_API_KEY'] = '永豐證券API_KEY'
os.environ['SHIOAJI_SECRET_KEY'] = '永豐證券SECRET_KEY'
os.environ['SHIOAJI_CERT_PERSON_ID']= '身份證字號'
os.environ['SHIOAJI_CERT_PATH']= '永豐證券憑證路徑'
os.environ['SHIOAJI_CERT_PASSWORD'] = '永豐證券憑證密碼' # 預設與身份證字號
# 以 30 萬台幣計算當前帳戶應該有的股票
fund = 300000
target_position = Position.from_report(report, fund)
# 進行下單
acc = SinopacAccount()
order_executor = OrderExecutor(target_position, acc)
order_executor.create_orders()
只要短短幾行,程式就會幫你計算現在應該有的部位,並且進行「買賣」只需要在適當的時間(例如開盤、收盤)執行,程式就會自動下單買進賣出,將你的帳戶部位調整成獲利的形狀!再也不用自己計算每檔股票要買幾張了!非常的方便喔!
程式預設使用當前價格進行「限價單」但你也可以透過客製化的方式,調整成「漲跌停」、「零股」、「融資券」,非常的簡單方便,讓你在股市中複製好策略的績效!