FAQ > 金融建模 > 建模问题 > 债券相关

Q:可转债的隐含波动率的提取    

  • A:天软提供了一种可转债隐含波动率的计算,计算模型为:CB_ImpliedVolatility()
    其返回值是个百分比数值。
    相关算法说明请参考:FAQ:2022-03-10-应用专题-可转债系列06:基于BSM模型探究可转债估值
    下面提供多种场景下的提取范例:
    提取范例01:取一个券指定日的隐含波动率

    //计算格力转债在2019年10月22日的隐含波动率
       SetSysParam(PN_Stock(),'SH110030');
       SetSysParam(pn_date(),20191022T);
       return CB_ImpliedVolatility();//返回:42.63%



    提取范例02:取多个券指定日的隐含波动率

    //样本
       stocks:=array('SH110038','SH110043','SH110044','SH110045');
       endt:=20220418T;
       ret:=array();
       SetSysParam(pn_date(),endt); //设置指定日
       sEndt:=datetostr(endt);
       for i:=0 to length(stocks)-1 do
       begin
         SetSysParam(PN_Stock(),stocks[i]);
         echo stocks[i];
         ret[i,'StockID']:=stocks[i];
         ret[i,'StockName']:=stockName(stocks[i]);
         ret[i,'指定日']:=sEndt;
         ret[i,'价格']:=close();
         ret[i,'隐含波动率(%)']:=CB_ImpliedVolatility();
       end
       return ret;

    返回:


    提取范例03:取一个券一段时间内每日的隐含波动率

    SetSysParam(PN_Stock(),'SH110030');
       SetSysParam(pn_date(),20220418T);
       return nday(10,'time',datetostr(sp_time()),'隐含波动率(%)',CB_ImpliedVolatility());

    返回:


    img id=25254][/img]

    提取范例04:取多个券一段时间内每日的隐含波动率

    //样本
       stocks:=array('SH110038','SH110043','SH110044','SH110045');
       begt:=20220410T;
       endt:=20220418T;
       ret:=array();
       k:=0;
       Tarr:=MarketTradeDayQk(begt,endt); //获取区间交易日序列
       for j:=0 to length(Tarr)-1 do  //日期循环
       begin
         d:=Tarr[j];
         SetSysParam(pn_date(),d); //设置指定日
         sEndt:=datetostr(d);
         for i:=0 to length(stocks)-1 do   //股票循环
         begin
           SetSysParam(PN_Stock(),stocks[i]); //设置当前股票
           ret[k,'StockID']:=stocks[i];
           ret[k,'StockName']:=stockName(stocks[i]);
           ret[k,'指定日']:=sEndt;
           ret[k,'价格']:=close();
           ret[k,'隐含波动率(%)']:=CB_ImpliedVolatility();
           k++;
         end
       end
       return ret;

    返回: