关于EMA计算的优化,效率提升100倍

admin1年前 (2025-01-23)量化交易418
import scipy.signal

def rolling_ewm(arr, window, span):
    if len(arr) < window:
        window = len(arr)
    alpha = 2 / (span + 1)
    ret = np.empty_like(arr)
    ret[:window] = arr[:window]
    zi = (1-alpha)*ret[window-1:window]
    ret[window:], _ = scipy.signal.lfilter([alpha], [1, alpha-1], arr[window:], zi=zi)
    return ret

mtm = df['mtm'].values
df['mtm'] = rolling_ewm(mtm, 999, n)


相关文章

UTXO模型原理1年前 (2025-02-21)
守护动量纯多7个月前 (11-26)
2025币圈压轴直播7个月前 (11-25)
动量纯多4h7个月前 (11-10)