¿Cómo puede uno, teniendo dos listas de precios Y y X y deseando ajustar el modelo de mínimos cuadrados, realizar esto en Java?
El ajuste es necesario para calcular el ratio de cobertura en una estrategia de negociación de pares.
Para cada periodo, el diferencial se calcula como sigue:
symbol1.close - hedgeRatio * symbol2
Pretendemos comparar el rendimiento de esta fórmula frente a la utilización de medias móviles normalizadas.
El siguiente código de Python utiliza la biblioteca statsmodels y el método de mínimos cuadrados ordinarios (OLS).
import statsmodels.api as sm
def hedge_ratio(Y, X):
X = sm.add_constant(X)
model = sm.OLS(Y, X).fit()
return model.params[1]