Regression VS Johansen eigen values hedge ration differences

Why would you get different hedge ratios between:



df = pd.concat([x, y], axis=1)



model = sm.OLS(df.gld.iloc[:90], df.gdx.iloc[:90])

model = model.fit() 

hedge_ratio=model.params[0]



and 



result=coint_johansen(df[:90],0,1)

d=result.evec

ev=d[0]

ev=ev/ev[0]

hedge_ratio=hedge_ratio[1]



 

Johansen is a vector error correction method, while OLS is regression. 

You can read more on the Johansen test here.

More specifically, Which gives superier hedge ratios for contruction of stationary portfolios?

Johansen test doesn't depend on the order of the two time series. While, CADF test would give different results on changing the order of the two time series. So in case of CADF, you need to find the best hedge ratio by changing the dependent and independent variables. That is not the case for Johansen.



Also, CADF doesn't allow to check for cointegration of more than two time series.