iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
永豐金融APIs

永豐證API X Python系列 第 28

【D28】熟練一下廚具-bid and ask #3:製作臺指選擇權價差單

前言

現在有資料可以制定選擇權的價差單,甚至可以用tick提供最即時的價格,進行組合,製作出我們的即時價差單。

本日程式碼使用:d28_spread.py


取得預設值:snapshot

首先先取得預設值,這樣每更新一次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取得當下的預設值,也就可以拿去下單囉。

根據tick,組成即時價差單

當然我們可以即時取得商品行情,並且隨著行情計算出當下的獲利情況,這時使用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元(還要加上手續費和稅金)


上一篇
【D27】熟練一下廚具-bid and ask #2:選擇權價差單如何組成
下一篇
【D29】食材、廚具準備好了,準備上桌
系列文
永豐證API X Python30

尚未有邦友留言

立即登入留言