WarrantCbbc

About 4 min

Warrant filter

QuoteClient.get_warrant_filter(self, symbol, page=None, page_size=None, sort_field_name=None, sort_dir=None. filter_params=None)

Description

Get the data of nest round CBBC quotes list, support sorting and filtering rounds by different fields.

Parameters

Parameters | Type | Required | Description --- symbol|str|Yes|positive symbol|str|Yes|Underlying stock code page|int|No|Page number, start from 0, default is 0 page_size|int|No|the number of pages per page, default 50 sort_field_name|str|No|sorting field, default expireDate (refer to the field that returns the object WarrantItem) sort_dir|tigeropen.common.consts.SortDirection|No|sort order, enumerate ASC/DESC , default ASC filter_params|tigeropen.quote.request.model.WarrantFilterParams|No|filtering parameters

The fields of the filter_params are as follows.

ParameterTypeRequiredDescription
issuer_namestrNoIssuer (refer to the issuerName field of the returned FilterBounds instance), default all
expire_ymstrNoexpiration date, in yyyy-MM format
stateintNostate, 0 all, 1 normal, 2 terminated, 3 waiting for listing, default 0
warrant_typeset[int]Notype WarrantType (1:Call, 2: Put, 3: Bull, 4: Bear, 0: All), default All
in_out_priceset[int]No1: In-price (contains flat values), -1: Out-of-price
lot_sizeset[int]Nothe number of shares per lot
entitlement_ratioset[float]Noexchange ratio
striketuple[float, float]Nostrike interval
effective_leveragetuple[float, float]Noeffective_leverage_interval
leverage_ratiotuple[float, float]Noleverage ratio interval
call_pricetuple[float, float]Norecovery price interval
volumetuple[int, int]Novolume interval
premiumtuple[float, float]Nopremium interval
outstanding_ratiotuple[float, float]Nostreet_ratio interval
implied_volatilitytuple[float, float]Noimplicit_volatility interval

Single-valued fields can be set with set_xxx(), set-type fields can be added with add_xxx(), and tuple-type fields can be set with set_xxx_range(). Refer to the following example

Returntigeropen.quote.domain.filter.WarrantFilterItem

The structure is as follows:

class WarrantFilterItem.
    def __init__(self, items=None, page=None, total_page=None, total_count=None, bounds=None).
        self.items = items
        self.page = page
        self.total_page = total_page
        self.total_count = total_count
        self.bounds = bounds
NameTypeDescription
pageintpage
totalPageinttotal pages
totalCountinttotal number of data
boundstigeropen.quote.domain.filter.WarrantFilterBoundsFilter conditions that can be set by the request, see below for description
itemspandas.DataFramefields see description below

WarrantFilterBounds object structure:

NameTypeDescription
issuer_namelist[str]Issuer_name
expire_datelist[str]expiration date
lot_sizelist[int]number of shares per lot
entitlement_ratiolist<double>exchange ratio
leverage_ratiodictleverage ratio range
strikedictstrike price range
premiumdictpremium range
outstanding_ratiodictstreet_ratio range
implied_volatilitydictimplied_volatility_range
effective_leveragedicteffective_leverage_range
call_pricedictrecovery_price range

items DataFrame Field Descriptions:

Nametypedescription
symbolstrthe underlying stock symbol
namestrsubject name
typewarrant_typetype, 1: call, 2: put, 3: bull, 4: bear
sec_typestrcontract type, nest: war/bull/bear: iopt
marketstrmarket, hk
entitlement_ratiofloatexchange ratio
entitlement_pricefloatexchange price
premiumfloatpremium
breakeven_pointfloatexpiry break-even point
call_pricefloatrecovery price (CBBCs only)
before_call_levelfloatcall price (percentage, e.g. 0_196875, meaning _19_6875%)
expire_datestrexpiration date
last_trading_datestrlast trade date
statewarrant_statestate, 1_normal, 2_terminated, 3_waiting for listing
change_ratefloatincrease/decrease
changefloatrates
latest_pricefloatlatest_price
volumelongvolume
outstanding_ratiofloatstreet ratio
lot_sizeintshare per lot
strikefloatstrike price
in_out_pricefloatin_price (greater than _0)/out_price (less than _0)
deltafloathedge value
leverage_ratiofloatleverage ratio
effective_leveragefloateffective leverage
implied_volatilityfloatimplicit volatility

Example

from tigeropen.quote.quote_client import QuoteClient
from tigeropen.tiger_open_config import get_client_config
from tigeropen.quote.request.model import WarrantFilterParams

client_config = get_client_config(private_key_path='', tiger_id='your tiger id', account='your account')
quote_client = QuoteClient(client_config)

filter_params = WarrantFilterParams()
filter_params.set_expire_ym('2024-06')
# 0 All, 1 Normal, 2 Terminate Trades, 3 Waiting to be listed
filter_params.set_state(1)
filter_params.add_lot_size(1000)
filter_params.add_lot_size(5000)
# -1:out the money, 1: in the money
filter_params.add_in_out_price(1)
filter_params.add_in_out_price(-1)
# 1:Call, 2: Put, 3: Bull,4: Bear, 0: All
filter_params.add_warrant_type(2)
filter_params.add_warrant_type(4)
filter_params.set_premium_range(0, 1)
filter_params.set_strike_range(100, 500)
filter_params.set_implied_volatility_range(1, 100)
result = quote_client.get_warrant_filter('00700', page_size=10,
                                         sort_field_name='implied_volatility',
                                         sort_dir=SortDirection.DESC,
                                         filter_params=filter_params)
print(result)

Response Example

WarrantFilterItem({
'items':   
    symbol        name type sec_type market  entitlement_ratio  entitlement_price   premium  breakeven_point expire_date last_trading_date   state  change_rate  change  latest_price  volume  amount  outstanding_ratio  lot_size   strike  in_out_price     delta  leverage_ratio  effective_leverage  implied_volatility
    0  27062  Tecent A.P  Put      WAR     HK             47.483           1.377007  0.605231       148.669993  2023-10-20        2023-10-16  Normal     0.035714   0.001         0.029       0     0.0              0.002      5000  150.047       1.50988 -0.030389      273.491711           -8.311172              69.847, 
'page': 0, 'total_page': 1, 'total_count': 1, 
'bounds': FilterBounds({
    'issuer_name': ['Goldman Sachs'], 
    'expire_date': ['2026-01', '2025-12', '2025-09', '2025-08', '2024-12', '2024-07', '2024-06', '2024-04', '2024-03', '2024-02', '2024-01', '2023-12', '2023-11', '2023-10', '2023-09', '2023-08', '2023-07', '2023-06', '2023-05', '2023-04'], 
    'lot_size': [1000, 5000, 10000, 50000], 
    'entitlement_ratio': [1.053, 47.483, 50.0, 92.166, 94.967, 100.0, 460.829, 474.834, 485.437, 500.0], 
    'leverage_ratio': {'min': 1.391437, 'max': 3056.79342}, 
    'strike': {'min': 111.301, 'max': 717.11}, 
    'premium': {'min': -0.314923, 'max': 0.908085}, 
    'outstanding_ratio': {'min': 0.0, 'max': 1.0}, 
    'implied_volatility': {'min': 0.0, 'max': 131.085}, 
    'effective_leverage': {'min': -46.321801, 'max': 20.189945}, 
    'call_price': {'min': 113.96, 'max': 520.0}})})

Get Warrant Quotes

QuoteClient.get_warrant_briefs(symbols)

Description

Get warrant bull/bear real-time quotes

Parameters

Parameter | Type | Required | Description --- symbols|list[str] | | symbols symbols|list[str]`|yes|The code of the warrant symbol, the maximum is 50

return pandas.DataFrame

The structure is as follows:

fieldtypedescription
symbolstrthe code of the subject
namestrthe name of the underlying
exchangestrexchange
marketstrmarket
sec_typestrcontract type
currencystrcurrency
expirystrexpiration_date_yyyy_mm_dd
strikestrstrike price
rightstrdirection (put/call)
multiplierfloatquantity per lot
last_trading_dateintlast_trading_date timestamp
entitlement_ratiofloatexchange ratio
entitlement_pricefloatexchange price
min_tickfloatminimum unit of change in share price
listing_dateinttimestamp of the listing date
call_pricefloatrecovery price* (CBBCs only)*
haltedhalted_statusWhether halted or not. 0: Normal_3: Suspended_4: Delisted
underlying_symbolstrunderlying_asset_code
timestampinttimestamp
latest_pricefloatthe latest price
pre_closefloatclosing price of the previous trading day
openfloatopening price
highfloathigh
lowfloatlowest price
volumeintvolume
amountfloatvolume
premiumfloatpremium
outstanding_ratiofloatstreet_ratio
implied_volatilityfloatimplied_volatility
in_out_pricefloatin_price/out_of_price
deltafloathedge_value (warrant only)
leverage_ratiofloatLeverage
breakeven_pointfloatbreakeven point at maturity

Example

from tigeropen.quote.quote_client import QuoteClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='', tiger_id='your tiger id', account='your account')
quote_client = QuoteClient(client_config)

briefs = quote_client.get_warrant_briefs(['15792', '58603'])
print(briefs)

Response example

symbol        name exchange market sec_type currency      expiry   strike right  multiplier  last_trading_date  entitlement_ratio  entitlement_price  min_tick   listing_date  call_price  halted underlying_symbol      timestamp  latest_price  pre_close   open   high    low    volume     amount   premium  outstanding_ratio  in_out_price  leverage_ratio  breakeven_point  implied_volatility   delta
0  58603  Vontobel HANG SENG INDEX R.P     SEHK     HK     IOPT      HKD  2025-03-28  16700.0   PUT     10000.0      1743004800000            10000.0            1890.00     0.001  1668009600000     16600.0  Normal               HSI  1681200546054         0.189      0.175  0.188  0.189  0.170    444000    83378.0  0.277040             0.0375      0.226661       10.838751         14810.00                 NaN     NaN
1  15792  China Merchants Bank JP ErjiaguA.P     SEHK     HK      WAR      HKD  2022-10-31    39.39   PUT      5000.0      1666627200000               10.0               2.28     0.001  1651075200000         NaN  Normal             03968  1681200546030         0.228      0.223  0.227  0.228  0.216  21572000  4795879.0  0.058122             0.0011      0.000254       17.280702            37.11             130.577 -0.9844
Last update: