使用pandas/numpy
时,我在尝试计算标准偏差时有时会出现浮点错误:
FloatingPointError:在less
中遇到无效值
我的代码看起来像这样:
def historical_volatility(p):
return p.pct_change().ewm(span=35, min_periods=35).std()
只有花车的DataFrame进入。
我的理解是,由于技术原因与标准偏差的计算方式有关,偏差特别低的情况会导致浮点误差。
如何让这个更强大?
P.S。可以设置最小值'低波动性; 0的结果会很糟糕,因为我随后除以这些数字。
答案 0 :(得分:0)
计算标准差可能涉及做方差的平方根。如果有一些精确损失,后者只能是负数。如果是这种情况,您可能不在乎您的方差是1e-16还是零。如果这样做,您可能需要使用扩展精度(不容易),或切换到十进制算术。