I'm not sure but here is the best solution I can provide:
I feel sort of optimization should be used to solve this issue, or definitely better model
(rather then linear OLS model) but nonlinear...
data$retA <- with(data, as.numeric(c(0,diff(A))/lag(A,1)))
diff_binAB <- with(data, unique(diff_AB))
mse <- numeric(length(diff_binAB))
for(i in 1:length(diff_binAB)){
pwise <- with(data, lm(retA ~ diff_AB*(diff_AB < diff_binAB[i]) + diff_AB*(diff_AB >= diff_binAB[i])))
mse[i] <- summary(pwise)[6]
}
mse <- as.numeric(mse)
mse
diff_binAB[which(mse==min(mse))]
# -0.07
diff_binAC <- with(data, unique(diff_AC))
mse1 <- numeric(length(diff_binAC))
for(i in 1:length(diff_binAC)){
pwise <- with(data, lm(retA ~ diff_AC*(diff_AC < diff_binAC[i]) + diff_AC*(diff_AB >= diff_binAC[i])))
mse1[i] <- summary(pwise)[6]
}
mse1 <- as.numeric(mse1)
mse1
diff_binAC[which(mse1==min(mse1))]
# 0.04
Here the results would suggest that the return
(rate of change) is explained
if the difference between A
and B
is at -0.07
(negative difference) and 0.04
with possitive difference between A
and C
.