Skip to content

计算期权隐含波动率和历史波动率 部分代码有误 #542

@smy20010205-ux

Description

@smy20010205-ux

o41 - 计算期权隐含波动率和历史波动率
#!/usr/bin/env python

-- coding: utf-8 --

author = 'ringo'

from tqsdk import TqApi, TqAuth
from tqsdk.ta import OPTION_IMPV

api = TqApi(auth=TqAuth("快期账户", "账户密码"))

获取指定期权行情

quote = api.get_quote("SHFE.cu2006C50000")

获取期权和对应标的的多合约 kline

klines = api.get_kline_serial(["SHFE.cu2006C50000", "SHFE.cu2006"], 24 * 60 * 60, 20)

通过 OPTION_IMPV 函数计算隐含波动率,设置无风险利率为 0.025

impv = OPTION_IMPV(klines, quote, 0.025)

print(list(impv["impv"] * 100))

api.close()

计算期权隐含波动率这部分有问题,问题出在这个函数上 OPTION_IMPV(),这个函数中有一行

if not (quote.ins_class.endswith("OPTION") and quote.instrument_id == df["symbol"][0] and quote.underlying_symbol == df["symbol1"][0]):
    return pd.DataFrame(np.full_like(df["close1"], float('nan')), columns=["impv"])

在金融期权中,因为这行导致所有的金融期权隐含波动率算出来的为nan
例如 沪深300金融期权的quote.underlying_symbol 返回值为'underlying_symbol': 'SSE.000300',df["symbol1"][0])返回值为CFFEX.IF2606 对不上

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions