vn.py量化社区
By Traders, For Traders.
Member
加入于:
帖子: 130
声望: 34

之前在做时序数据整理时候学习时候,发现很多代码都行情数据做了对数化处理。学习了下,发现是另一个视角。

知乎查了,这个答案比较全。

在很多计算中(例如做极大似然的时候),取对数可以将本来需要做的乘法变成加法;
取对数可以避免数值巨大,计算机难于处理的困难;
与对数有关的数据可以反映出物理量尺度的变化,例如物理中,对于各个大小不同的体系,我们仍然会希望仍然可以比较这两个体系,这时候就需要做一些尺度变换,利用到 齐次函数 的有关性质,这种时候用对数来处理是很方便的,因此在处理像重整化和有限尺度标度的时候会需要用到对数曲线,只有这样,一个 2020 的格子才能跟 200200 的格子来进行比较。又例如金融数据中股票价格的涨落是与股票现在的价格有关的,高股价的股票涨跌 1 元跟低股价的股票涨跌 1 元起效果完全不同,这种时候大家考虑的是对数正态分布;
对数处理之后还可以使诸多 Power-Law 的效果凸显出来,这时候的拟合也就变成了一个线性拟合的问题。

作者:傅渥成
链接:https://www.zhihu.com/question/20831196/answer/16324269
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上面答案比较理论,下面这个更好理解。

我们平时看到的K线图几乎都是采用 普通坐标 ,而有一种叫作 对数坐标 的K线图大部分人可能没了解过。在介绍对数坐标下的K线图的前,我们先思考一个问题:从100点涨到1300点的涨幅大还是从1000点涨到6000点的涨幅大?

普通坐标下的上证月K线图

enter image description here
对数坐标下的月K线图

看了上证的两幅图是不是有点惊讶,涨的最厉害的不是2005-2007,而是股市刚建立初那两三年。看惯了普通坐标k线图的股民们,眼里只有2005-2007那一拨牛市,2005年之前的股市看起来好像平淡无奇。普通坐标下K线图100点涨到1100点k线的长度和1000点涨到2000点k线图的长度是一样的,而对数坐标下是按照上涨/下跌的幅度计算k线图的长度的,对数坐标下,100点涨到110点和1000点涨到1100点K线图的长度是一样的。

做了一些策略实践,发现对于均线,布林线,唐安期通道这样直接基于价位求出指标,使用对数化数据计算指标相关并不好。而像MACD,KDJ,CCI这样非价位指标,使用对数化指标后,分析起来更为合理。

这里就简单说说VNPY中MACD指标更新支持对数化。其实很简单,直接调用np.log()方法,然后增加islog参数。如果True时候,就把传入指标对数化再计算。

# ----------------------------------------------------------------------
def macd(self, fastPeriod, slowPeriod, signalPeriod, islog = False, array=False):
    """MACD指标"""
    if islog:
        macd, signal, hist = talib.MACD(np.log(self.close), fastPeriod,
                                    slowPeriod, signalPeriod)
    else:
        macd, signal, hist = talib.MACD(self.close, fastPeriod,
                                        slowPeriod, signalPeriod)
    if array:
        return macd, signal, hist
    return macd[-1], signal[-1], hist[-1]
Member
加入于:
帖子: 7
声望: 0

谢谢分享

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3