TB中的波动率计算逻辑如下所述:
参数定义
Series initdata; // 价格序列
Numeric daylength(30); // 计算周期(标准差周期)
Numeric yearfactor(245); // 每年交易日的数量
Numeric mylength;
Series lnpricerate; // 对数价格收益率序列
Numeric bsv; // 历史波动率
Numeric i, dayfactor;
Begin 波动率计算流程
若Bar状态为0,则返回初始值vt0。
计算对数价格收益率,并赋值给lnpricerate。
计算每日BAR数,并赋值给dayfactor。
若dayfactor为无效数值,则返回初始值vt0。
计算实际使用的周期数,即dayfactor乘以daylength,结果赋值给mylength。
根据年化波动率公式计算bsv。
若bsv为0或无效数值,则将bsv设为初始值vt0。
返回计算得到的bsv。
具体实现步骤详解
1. 定义参数及变量
参数包括价格序列、标准差周期等。
变量用于计算年化波动率、实际使用的周期数等。
2. 计算对数价格收益率
通过对数运算,将价格序列转换为对数价格收益率序列。
3. 计算历史波动率
利用StandardDev函数,以mylength为周期数,计算lnpricerate序列的历史波动率。
考虑到年化因素,将波动率乘以yearfactor和dayfactor,并做适当的转换,得到年化波动率bsv。
4. 处理异常值
若计算得到的bsv为0或无效数值,则以初始值vt0替代。
关键代码解析
代码中的关键部分是计算bsv的公式。具体解释如下:
该公式首先将对数价格收益率lnpricerate乘以100,转化为百分比形式。然后,根据年化波动率的计算需求,将yearfactor(每年交易日的数量)与dayfactor(每日BAR数)相乘,得到实际使用的周期数。接着,通过开方运算将波动率转换为年化形式。再乘以0.01,得到以百分比形式表示的波动率bsv。
关于波动率的思考与探讨
小周期的波动率公式在应用中可能更为平滑和精准。因为小周期的样本更多,单个样本对整体波动率的影响较小。小周期的波动率公式在统计上更加连续和平滑。
关于波动率参数的设置,应根据策略需要确定。小周期策略可使用较小参数,大周期策略则应使用较大周期的波动率参数。波动率指标作为技术分析的一部分,服务于策略设计,需根据个人对市场的理解来调整和应用。
波动率的应用指导意义
在交易中,一般遵循动低仓位、低波动高仓位的策略。波动率也可用于确定止损点,如动打止损、小波动设置小止损等。
总结而言,波动率是技术分析中的重要指标之一,其计算方法和参数设置需根据策略需求和市场理解进行调整和应用。