現在有資料可以制定選擇權的價差單,甚至可以用tick提供最即時的價格,進行組合,製作出我們的即時價差單。
本日程式碼使用:d28_spread.py
首先先取得預設值,這樣每更新一次tick,就可以組成當下的價差單,因此新增:set_init_spread_price()
def set_init_spread_price(self, left_leg, right_leg):
"""Get the two legs' price which is the call option spread."""
option1 = self.api.snapshots(left_leg)
option2 = self.api.snapshots(right_leg)
self.lef_leg_price = option1[0]["sell_price"]
self.right_leg_price = option2[0]["buy_price"]
其中lef_leg_price
是指賣方的那隻腳,相反的買方那隻就是right_leg_price
,這樣就可以用snapshot
取得當下的預設值,也就可以拿去下單囉。
當然我們可以即時取得商品行情,並且隨著行情計算出當下的獲利情況,這時使用quote_callback
並改寫:
def quote_callback(self, topic: str, quote: dict):
"""Get the quote info and change the oder price.
The quote's format is v0: quote is a dict and the value is a list.
"""
if topic.find("16300") > 0:
self.lef_leg_price = quote["AskPrice"][0] # 取得ask的第一個值
elif topic.find("16350") > 0:
self.right_leg_price = quote["BidPrice"][0] # 取得bid的第一個值
print(
f"價差組合:16300-sell={self.lef_leg_price}_16350-buy={self.right_leg_price}_diff={self.lef_leg_price-self.right_leg_price}"
)
這印出的資料就表示我們組成的價差單,以及他的獲利情況:
價差組合:16300-sell=202.0_16350-buy=158.0_diff=44.0
價差組合:16300-sell=202.0_16350-buy=158.0_diff=44.0
價差組合:16300-sell=202.0_16350-buy=158.0_diff=44.0
這便可以看到我們賣方收取的點數為202,而買方付出的點數為158,中間的最大獲利就是會44點。當然虧損就是2500元(還要加上手續費和稅金)