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