FAQ > 金融建模 > 应用案例 > 指标或功能实现

Q:天软中如何计算证券波动率    

简述
波动率 = 对数收益率序列的标准差
  • A:低频数据计算波动率
    可使用已有公用模型:
    风险指标可使用:FAQ:StockBetaAlpha2
    波动率函数:FAQ:StockRisk
    支持日线,周线,月线等低频。
    示例01:通过指定区间的日线数据计算波动率
    //计算万科A在指定区间内的波动率,收益率序列为日线
    begt:=20220101T;
    endt:=20220630T;
    SetSysParam(pn_stock(),'SZ000002');
    SetSysParam(pn_cycle(),cy_day()); //日线
    return StockRisk('SH000001',begt,endt);

    返回:2.83756576955116
    示例02:计算指定区间的每日波动率(由最近N日收益率计算)
    begt:=20220101T;
    endt:=20220630T;
    N:=20;//取最近20个交易日的数据计算
    SetSysParam(pn_stock(),'SZ000002');
    SetSysParam(pn_cycle(),cy_day()); //日线
    Nd:=tradedays(begt,endt);
    return Nday(Nd,"time",datetostr(sp_time()),
           "波动率",StockRisk('SH000001',ref(sp_time(),N-1),sp_time()));

    返回:



    日内高频数据计算波动率
    可使用时间序列模型Nday与sp_std进行计算得到。
    示例03:计算指定区间内1分钟线的波动率序列
       stockid:="SH600519"; //证券
       begt:=20250714.09T;//开始时间
       endt:=20250714.16T;//截止时间
       N:=20; //N期收益率序列计算波动率
       cycle:=cy_1m(); //周期
       fName:="波动率"+"@"+stockName(stockid); //指标字段名
       setsysparam(pn_cycle(),cycle);
       setsysparam(pn_stock(),stockid);
       setsysparam(pn_date(),endt);
       nd:=tradedays(begt,endt);
       t:= Nday(nd,"time",datetimetostr(sp_time()),
            fName,sp_std((ln(Close())-ln(ref(Close(),1)))*100,N));
       return t;