文章 "交易中的数学:夏普(Sharpe)和索蒂诺(Sortino)比率" - 页 3

 

读取价格的对数

您还可以找到其他参考文献

 
Rashid Umarov #:

读取价格的对数

您还可以找到其他参考文献

另一个极其重要的细微差别是,在本脚本中,计算夏普时只考虑股本发生变化的条形图:

     
      //--- add only if equity has changed
      if(m_equities[i] != prev_equity)
        {  
         log_return = MathLog(m_equities[i] / prev_equity); // 递增对数
         aver += log_return;            // 增量的平均对数
         AddReturn(log_return);         // 填充递增对数数组
         counter++;                     // 返回计数器
        }
      prev_equity = m_equities[i];

然后用平均变化除以这些 柱状图的数量:

//--- 增量对数的平均值
   aver /= counter;

然而,向年度夏普的过渡是基于时间框架比率,就好像当前 tf的所有条形图 都被计算在内:

//---------------重新计算夏普比率,在所有其他情况下都改为年值
//--- how many periods of the current timeframe fit into D1
   double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
   sharpe = sharpe * MathSqrt(factor);     // 重新计算每日值
   sharpe = sharpe * MathSqrt(252);        // 从每日数据中获取年度数据

也就是说,脚本又一次找到了每一栏股票变化 的平均利差,然后,为了找到年度利差,不是将其乘以一年中的此类栏数,而是乘以一年中该 tf 的总栏数(当然是其根数)。这是错误的,会高估最终的数字。

显然,夏普在测试仪中也是以同样的方式计算的?

 
Kristian Kafarov #:
该脚本会找出每 1 条股票变动 条形图的平均夏普值,然后,为了找出年度夏普值,它不是乘以一年中此类条形图的数量,而是乘以一年中该 tf 条形图的总数(当然是其根)。这样做是错误的,会高估最终数字。

我也注意到了。因此,我在自己的版本中增加了一个选项,将零条计算在内。