Dave - 1 year ago 71

R Question

I am testing this in

`R`

`SAR()`

`TTR`

To make things simple I will work with short vectors and integer values instead of real time series data.

`L <- c(1:4, 5)`

H <- c(2:5, 6)

ParSAR <- SAR(cbind(H, L))

cbind(L, H, ParSAR)

L H ParSAR

[1,] 1 2 1.000000

[2,] 2 3 1.000000

[3,] 3 4 1.080000

[4,] 4 5 1.255200

[5,] 5 6 1.554784

I will only change one value on the

`Low - High`

`L <- c(1:4, 5)`

H <- c(2:5, 7)

We get:

`L H ParSAR`

[1,] 1 2 0.5527864

[2,] 2 3 0.5817307

[3,] 3 4 0.6784614

[4,] 4 5 0.8777538

[5,] 5 7 1.2075335

Is it expected behavior that all the history of Parabolic SAR gets modified dramatically? If SAR values on rows from 1 to 4 are modified by a different

If this is a standard behavior of Parabolic SAR and I need it for a backtest, I will have to recompute it for every row always masking all future data (rows).

Desired result is to have Parabolic SAR value for each row as I could have witness it at the particular moment in time, not knowing the future.

`2016-06-18`

Simplified code example for user3666197:

`> SAR(cbind(c(2, 3, 4, 5, 6), c(1, 2, 3, 4, 5)), c(0.02, 0.2))`

[1] 1.000000 1.000000 1.080000 1.255200 1.554784

> SAR(cbind(c(2, 3, 4, 5, 7), c(1, 2, 3, 4, 5)), c(0.02, 0.2))

[1] 0.5527864 0.5817307 0.6784614 0.8777538 1.2075335

Answer Source

R implementation of Parabolic SAR comes with a look-ahead bias.

The initGap value is a Standard Deviation of all time HL data:

```
initGap <- sd(drop(coredata(HL[, 1] - HL[, 2])), na.rm = TRUE)
```

References: https://github.com/joshuaulrich/TTR/issues/23

The drastical impact on my original example is caused by short sample of data and the extreme values used.