# 末日期權合約列表

get_option_zero_dte_contract(owner, strike_date_timestamp, chain_info, sort_type=None, is_asc=None, filter_list=None)

  • 介紹

    獲取末日期權合約列表,返回指定標的在指定行權日的 0DTE 期權合約詳情,包含希臘值、盈虧平衡點及盈利概率等數據。

  • 參數

    參數 類型 說明
    owner str 標的股票代碼
    strike_date_timestamp int 行權日期時間戳(Unix 秒)
    chain_info dict 期權鏈信息
    sort_type ZeroDteContractSortType 排序類型
    is_asc bool 是否升序
    filter_list list[ZeroDteContractFilter] 篩選條件列表
  • 篩選器(ZeroDteContractFilter)

    透過 ZeroDteContractFilter 構造篩選條件,多個條件為 AND 關係。因 owner 已固定,僅支持確切值與範圍兩種篩選方式(無標的列表篩選)。

    ZeroDteContractFilter(indicator_type, value_list=None, interval_min=None, interval_max=None,
                          min_inclusive=True, max_inclusive=True)
    
    1
    2
    參數 類型 說明
    indicator_type ZeroDteContractIndicatorType 篩選因子類型
    value_list list 確切值列表(枚舉值或整數)
    interval_min float 區間下限
    interval_max float 區間上限
    min_inclusive bool 下限是否閉區間,默認 True
    max_inclusive bool 上限是否閉區間,默認 True
    • 篩選因子(完整枚舉見 ZeroDteContractIndicatorType),按篩選方式分組:

      篩選方式 用哪個參數 適用因子 語義
      value_list value_list OPTION_TYPE 命中枚舉值(1=Call, 2=Put)
      範圍 interval_min / interval_max IVDELTAGAMMATHETAVEGARHOVOLUMEOPEN_INTERESTPRICECHANGE_RATIOBREAK_EVEN_POINTTO_BEPBUY_PROFIT_PROBABILITYSELL_PROFIT_PROBABILITY 落在區間內
  • 返回

    參數 類型 說明
    ret RET_CODE 接口調用結果
    data pandas.DataFrame 當 ret == RET_OK,返回合約列表
    str 當 ret != RET_OK,返回錯誤描述
    • 返回 DataFrame 字段:

      字段 類型 說明
      option str 期權合約代碼
      name str 合約名稱
      option_type str 期權類型(CALL/PUT)
      option_price float 期權價格
      change_ratio float 漲跌幅(百分比)
      volume int 成交量
      open_interest int 持倉量
      iv float 隱含波動率(百分比)
      delta float Delta
      gamma float Gamma
      vega float Vega
      theta float Theta
      rho float Rho
      buy_break_even_point float 買入盈虧平衡點
      buy_to_bep float 到達盈虧平衡點所需漲跌幅(百分比)
      buy_profit_probability float 買入盈利概率(百分比)
      sell_profit_probability float 賣出盈利概率(百分比)
  • Example

from futu import *

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)

# 第一步:獲取末日期權標的列表
ret, screener_data = quote_ctx.get_option_zero_dte_screener(
    market=OptionMarket.US_SECURITY,
    sort_type=ZeroDteSortType.VOLUME,
    is_asc=False,
    count=1
)
if ret != RET_OK:
    print('error:', screener_data)
    quote_ctx.close()
    exit()

# 第二步:取第一個標的的 chain_info,查詢其合約列表
df = screener_data['item_list']
owner = df.iloc[0]['owner']
chain_info = df.iloc[0]['chain_info']
strike_date_timestamp = chain_info['strike_date_timestamp']

# 篩選器用法引導(按需取消註釋,構造後傳入 filter_list,多條件為 AND 關係):
# # 只要 PUT
# f_type = ZeroDteContractFilter(ZeroDteContractIndicatorType.OPTION_TYPE, value_list=[2])
# # Delta 在 -0.6 ~ -0.1 之間(價外 Put)
# f_delta = ZeroDteContractFilter(ZeroDteContractIndicatorType.DELTA,
#                                 interval_min=-0.6, interval_max=-0.1)

ret, data = quote_ctx.get_option_zero_dte_contract(
    owner=owner,
    strike_date_timestamp=strike_date_timestamp,
    chain_info=chain_info,
    sort_type=ZeroDteContractSortType.VOLUME,
    is_asc=False
    # filter_list=[f_type, f_delta]   # 多條件 AND,傳入上方構造的篩選條件
)
if ret == RET_OK:
    print(data)
else:
    print('error:', data)

quote_ctx.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  • Output
              option             name option_type  option_price  change_ratio  volume  open_interest    iv   delta   gamma    vega   theta     rho  buy_break_even_point  buy_to_bep  buy_profit_probability  sell_profit_probability
0  US.SPY260612C742000  SPY 260612 C742        CALL          0.58       -67.688  730160           7449  146.5  0.4367  0.2745  0.0039  -455.46  0.000                742.58        0.11                   43.5                    56.5
1  US.SPY260612C745000  SPY 260612 C745        CALL          0.01       -98.958  617981          17013   87.1  0.0244  0.0350  0.0011   -18.52  0.000                745.01        0.44                    2.4                    97.6
...
1
2
3
4

接口限制

  • 30 秒內最多請求 60 次末日期權合約列表接口