Photo by Kelly Sikkema on Unsplash
Table of Contents
在投資市場中,往往都會忽略一個關鍵問題:交易其實是有成本的!手續費與滑價看似不起眼,但卻可能在不知不覺間吞噬你的獲利。我們今天就要用最簡單易懂的方式,帶你認識什麼是手續費和滑價,並教你如何用 TQuant Lab 精準控制這些交易成本,讓你的投資策略事半功倍!不管你對量化交易有多陌生,放心,跟著我們的步驟,馬上就能輕鬆上手!
手續費,其實在我們的日常生活中隨處可見。比如,當你轉帳給朋友,銀行可能會收取轉帳手續費;又或者你在 ATM 提款,有些銀行會收取跨行手續費。這些都是我們支付服務費用的一種形式。
在交易中也是一樣,每當我們買賣股票、期貨或其他金融商品,券商會收取一筆手續費作為交易服務的費用。就像轉帳需要付銀行手續費一樣,這筆費用看起來很小,但累積起來卻可能對你的投資回報產生不小的影響。所以,了解手續費並學會計算,是每個投資新手必須掌握的一個重要概念!
from zipline.api import set_commission
from zipline.finance import commission
def initialize(context):
set_commission(commission.<其中一種commission models>)
程式碼中的commission models就是將以下五種模型依照使者用需求去做選用
這種方式不收取任何手續費,通常會出現在模擬交易或某些優惠活動中。
這種方式是按照交易金額的比例來收取手續費,每交易一元的股票所需支付的固定費用。預設為 0.0015 元。舉例來說,我們今天將cost設定為0.002,那麼買賣 10,000 元的股票就會支付 20 元手續費。
這種模式是根據每筆交易來收取固定的手續費。不管交易金額大小,都會支付相同的費用。預設為 0 元。舉例來說,我們今天將cost設定為50,那麼無論買賣 1,000 元還是 1,000,000 元的股票,手續費都固定是 50 元。
這種方式是根據你交易的股數來計算手續費,每一股會收取固定的費用。例如,假設每股手續費是 0.01 元,那麼買賣 1,000 股 的股票,手續費就是 10 元。
此外,這種計算方式通常可以設定一個「最低手續費」,也就是參數 min_trade_cost,預設情況下沒有最低收費限制(即為 0)。設定「最低手續費」的目的,是確保即使交易量很小,也能達到基本的收費標準。
延續上面的例子,假設我們設定 min_trade_cost = 15.0,但計算出來的手續費只有 10 元,這時候模型會自動將手續費調整為 15 元,以符合最低手續費的要求。
在台灣股票市場,進行股票交易時主要會產生 兩個直接成本:手續費 和 證交稅。
假設你在台灣股票市場進行一筆交易:
50×1,000×0.1425%×1=71.25 元
由於手續費高於最低手續費 20 元,所以實際收取手續費為 71.25 元(實際交易時若有小數點皆採無條件捨去)。
50×1,000×0.3%=150 元
滑價(Slippage)是指你下單時所預期的價格和實際成交價格之間的差異。這種現象通常發生在市場價格快速波動或流動性不足的情況下,特別是當你的下單量較大、標的交易量較小時更容易出現。
在交易中,滑價是一種中性現象,並不一定是壞事。當市場價格對你有利時,滑價可以幫你節省成本或提高收益;而當市場價格對你不利時,滑價則可能增加你的交易成本或降低收益。
假設你準備買入 100 股股票,預期價格是 50 元/股:
雖然滑價難以完全避免,但我們可以透過以下方式來降低不利滑價的影響:
為了更貼近真實交易的狀況,TQuant Lab提供了四種滑價模型,讓你可以根據需求設定不同的滑價情境,詳請請見後續教學”回測四大架構的基本設定 initialize的具體設定有什麼”:
from zipline.api import set_slippage
from zipline.finance import slippage
def initialize(context):
set_slippage(slippage.<其中一種slippage models>)
程式碼中的slippage models就是將以下四種模型依照使用者需求去做選用
這種滑價模型設定一個固定的價差(spread)來模擬交易成本,不能設定成交量限制。
這個模型根據交易量佔當天總成交量的比例(volume share)來計算滑價,並考慮價格影響。
這種模型使用固定基點(basis points)來計算滑價,並設置交易量限制。
這種模型不設定任何滑價
程式交易是什麼?程式交易教學、優缺點及常見策略懶人包 – TEJ台灣經濟新報
電子報訂閱