FAQ > 金融建模 > 建模问题 > 期权相关

Q:如何提取期权隐含波动率    

  • A:天软中提供期权风险类指标模型,具体可参考:FAQ:2025-03-19-应用专题-期权系列03:期权行情及风险指标(更新版)
    这里展示期权隐含波动率的常用提取示例,其它风险指标也可类似调用。

    期权隐含波动率模型为 OP_IV(),与当前证券、周期、时间相关。因此,调用前需要设置pn_stock(),pn_cycle(),pn_date()等系统参数。
    分别从单个期权与期权组合,指定日与指定区间进行举例。
    具体示例可参考如下:
    示例01:获取指定期权在1分钟线下指定时间点的隐含波动率
      SetSysParam(pn_stock(),"OP10000001");
      setsysparam(pn_cycle(),cy_1m());
      setsysparam(pn_date(),20150211.1430T);//下午2点半
      return OP_IV(); //返回29.48

    示例02:获取指定期权在存续期间内每日的隐含波动率
    注:若有特别指定时间,可将fd与Ld指定为指定日,如fd:=20150220T;
      SetSysParam(pn_stock(),"OP10000001");
      setsysparam(pn_cycle(),cy_day());
      fd:=inttodate(base(720011));//首个交易日-开始时间
      Ld:=inttodate(base(720012));//最后交易日-开始截止时间
      setsysparam(pn_date(),Ld);
      N:=tradedays(fd,Ld);
      return Nday(N,"date",datetostr(sp_time()),"OP_IV",OP_IV());

    返回结果:


    示例03:获取多个期权在指定日的隐含波动率
    ops:=array("OP10000001","OP10000002","OP10000003");
      setsysparam(pn_cycle(),cy_day());
      setsysparam(pn_date(),20150211T);
      r:=array(); k:=0;
      for i,stockid in ops do
       r[k++]:=array("StockID":stockid,"隐含波动率":spec(op_IV(),stockid));
      return r;

    返回结果:


    示例04:获取多个期权在指定区间的每日隐含波动率
      ops:=array("OP10000001","OP10000002","OP10000003");
      begt:=20150211T;
      endt:=20150220T;
      setsysparam(pn_cycle(),cy_day());
      Tarr:=MarketTradeDayQk(begt,endt);//时间序列
      r:=array(); k:=0;
      for j,vEndt in Tarr do
      begin
        setsysparam(pn_date(),vEndt);
        dEndt:=datetostr(vEndt);
        for i,stockid in ops do
        begin
         setsysparam(pn_stock(),stockid);
         r[k,"StockID"]:=stockid;
         r[k,"截止日"]:=dEndt;
         r[k,"隐含波动率"]:=op_IV();
         k++;
        end
      end;
      return r;

    返回结果: