Below are required data multiplier to avoid recursive loop issue. For example, EMA need 3x data, which means to calculate EMA with length of 200, it needs at least 600 rows of data.
Note: the list below will be updated when needed
Unavoidable lookahead bias
- qtpylib.cci
- qtpylib.vwap
Unavoidable recursive loop issue
- ta.AD
- ta.OBV
- qtpylib.pvt
- pandas_ta.ebsw (can’t work on recursive test)
General rule of thumb
3x multiplier
- ta.EMA
- ta.DEMA
- ta.BBANDS using
matype = 1
(EMA) - ta.BBANDS using
matype = 3
(DEMA) - smi_momentum (nilux)
4x multiplier
- qtpylib.rolling_weighted_mean
- qtpylib.hull_moving_average
- qtpylib.hma
5x multiplier
- ta.KAMA
- ta.TEMA
- ta.BBANDS using
matype = 4
(TEMA) - ta.BBANDS using
matype = 6
(KAMA) - ta.ADOSC
- ta.MACDEXT based of
slowperiod
, whenslowmatype = 2
(WMA) - ta.MACDEXT based of
slowperiod
, whenslowmatype = 5
(TRIMA)
6x multiplier
- ta.MACDFIX
- ta.TRIX
- Elliot Wave Oscillator using EMA
7x multiplier
- ta.T3
- ta.APO using
matype = 1
(EMA) - ta.PPO based of
slowperiod
, whenmatype = 1
(EMA) - ta.PPO based of
slowperiod
, whenmatype = 6
(KAMA) - pandas_ta.apo using matype=”ema”
- pandas_ta.bias using matype=”ema”
8x multiplier
- ta.MINUS_DI
- ta.MINUS_DM
- ta.PLUS_DI
- ta.PLUS_DM
- ta.RSI
- ta.ATR
- ta.NATR
- ta.APO using
matype = 3
(DEMA) - ta.APO using
matype = 4
(TEMA) - ta.MACD based of
slowperiod
, whenfastperiod < slowperiod
- ta.MACDEXT based of
slowperiod
, whenslowmatype = 1
(EMA) - ta.MACDEXT based of
slowperiod
, whenslowmatype = 3
(DEMA) - ta.PPO based of
slowperiod
, whenmatype = 3
(DEMA)
9x multiplier
- ta.STOCHRSI
- pta.cmo
- ta.MACDEXT based of
slowperiod
, whenslowmatype = 4
(TEMA) - ta.PPO based of
slowperiod
, whenmatype = 4
(TEMA)
10x multiplier
- ta.APO using
matype = 6
(KAMA) - ta.MACDEXT based of
fastperiod
, whenfastmatype = 1
(EMA) whileslowmatype
= 0 andsignalmatype = 0
11x multiplier
- ta.MACDEXT based of
slowperiod
, whenslowmatype = 6
(KAMA)
12x multiplier
- ta.DX
13x multiplier
- ta.ADX
- ta.ADXR
- ta.CMO
16x multiplier
- ta.MACD[‘macd’] based of
fastperiod
Case-by-case indicators
Indicators in this category will have to be manually checked using recursive-analysis
to make sure your startup_candle_count
is enough.
pta.kama
This indicators have length
, fast
, and slow
variables, which affect the required startup candle. I won’t be able to give the general formula for it. What I found out so far is that for startup_candle_count
of 999, maximum length
you can use is 200 and use the default fast
and slow
[…] Data required to avoid recursive loop issue […]