When asked to summarize their approach to proxy / cross hedging, senior folks from numerous big banks reduced it to correlation: hedge using an instrument whose correlation is close to -1. This perspective matches the popular practitioner literature, such as recently published text Hedging Market Exposures (Bychuk and Haughey, 2011). Moreover, this perspective is at the heart of much of the research literature, going back to original definition of optimal hedge ratio $\hat{\beta}$ (e.g. Hull, p. 57):

$\hat{\beta} = \rho ( \frac{\sigma_u}{\sigma_h} )$

Yet, while indeed true, this wisdom is not terribly helpful in practice for hedging well-known equities, as described in previous posts—as no instrument exists with such high correlation. This motivated revisiting the role of dependence in hedging, uncovering what may perhaps be an interesting result: multi-period asymptotically perfect hedges exist with $\rho \ll -1$.

To derive this result, begin by asking a simple-sounding question: over what range of correlation between underlying and hedge can a perfect hedge conceivably be built? When evaluated for a single period, the answer is obviously a single value: $\rho = -1$, as $\epsilon > 0$ for any other correlation, given:

$\rho \ne -1 \iff u \ne h$.

Yet, this question becomes more interesting when generalized to multiple periods. Specifically, consider the temporal series of proxy errors over multiple contiguous periods:

$\{ \epsilon_{t_1}, \epsilon_{t_2}, \dots, \epsilon_{t_n} \} = \boldsymbol{\epsilon}$

Can intuition be built by modeling the temporal evolution of $\boldsymbol{\epsilon}$ directly, rather than describing the characteristics of $u$ and $h$? Consider modeling $\boldsymbol{\epsilon}$ using elementary trigonometry, say a familiar sin curve:

This model is interesting, as it captures the two desirable properties for optimal proxy hedging:

• Zero crossings: error crosses zero a positive number of times during its path (determined by zerocross parameter below), providing frequent opportunity to exit hedge with zero loss (i.e. $\boldsymbol{\epsilon} = 0$)
• Absolute bounds: error is bounded, above and below, to not exceed some maximum threshold

These two properties should be familiar to readers who trade relative value strategies.

Given the above evolution of $\boldsymbol{\epsilon}$ over time, next question is asking what range of $\rho$ is possible given arbitrary paths of $h$ and $u$. As always, a picture is worth a thousand words.

Define $u$ to follow a stochastic process of length $n$, whose value is drawn from Gaussian (given $\mu$ and $\sigma$ parameters):

u <- rnorm(n, mu, sd);


In other words, the underlying follows a random process, which seems reasonable. Given that, $h$ is determined as the arithmetic difference, given discrete differential of $\epsilon$ and desired number of zero crosses for sin curve:

e <- (sin(seq(-zerocross*pi, zerocross*pi, len = n)) + 0.01) / 10
de <- diff(e)
h <- de - u


The following plots illustrates one sample path of $u$, with corresponding $h$, over the multiple periods (parameters n=200; zerocross=1; mu=0; sd=0.05):

These returns look fairly normal, albeit obviously sampled from a distribution which has neither long tails nor memory.

Given underlying and hedge, the correlation density can be generated by sampling $u$:

cor(h, u, method="kendall")


The following plots illustrate the simulated scatter and empirical density for $\rho$, given 1000 iterations (parameters n=200; zerocross=1; mu=0; sd=0.05):

With a single zero cross, this model recovers the classic one-period optimal hedge result: $\rho \approx -1$.

Where this model becomes interesting is when number of zero crosses is increased above 1. Doing so diverges the model from classical single period, conceptually extending time over multiple periods. The following plots illustrate returns when zero cross is 10:

Visual inspection of the cumulative returns plot makes clear something different is afoot. Clearly the underlying and hedge are not behaving as perfect inverses, when there are more zero crosses. There is something deeper at work. To illustrate further, consider the corresponding sampled correlation plots:

Illustrating correlation diverging from -1, peaking near -0.73. Recall this is correlation of underlying and hedge, which is providing asymptotic optimality at a finite number of points in time. Is this an accident, or does it represent a more general principle at work? Consider the following return plots for proxy error with 50 zero crosses:

Now the underlying and hedge look nothing like each other, except their broad directions are consistently inverted. Again, consider the corresponding correlation plots, which illustrate sampled correlation decreasing to density peak near -0.30.

This illustrates perhaps an interesting result demonstrating counterexample to the conventional wisdom of perfect negative correlation for proxy hedging, albeit only in theory.

R code to generate the above sampling and plots:

proxyMultiPeriodCorrelation <- function(i=100, zerocross=20, n=200, mu=0,
sd=0.05, doPlot=FALSE)
{
# Monte carlo sampling for visualizing multi-period correlation dynamics.
#
# Args:
#     i: number of sampling iterations
#     zerocross: number of zero crosses for error
#     n: number of iterations for error sin curve
#     mu: mean of Gaussian samples for u
#     sd: standard deviation of Gaussian samples for u
#     doPlot: flag to indicate whether to plot returns
#
# Returns: vector of sampled correlations

e <- (sin(seq(-zerocross*pi, zerocross*pi, len = n)) + 0.01) / 10
de <- diff(e)

cors <- sapply(c(1:i), function(i){
u <- rnorm(length(de),mu,sd);
h <- de - u;
pair <- u + h
c <- cor(h, u, method="kendall");

if (doPlot)
{
oldpar <- par(mfrow=c(2,1))
plot(u, type='l', xlab="Time", ylab="Returns", main="Optimal Proxy Returns");
lines(h, col=colors[2])
legend("topleft",legend=c("Underlying", "Hedge"), fill=colors, cex=0.5)

cumH <- cumprod(1+h)-1
cumU <- cumprod(1+u)-1

plot(cumU,ylim=c(min(cumH,cumU,e),max(cumH,cumU,e)), type='l', ylab="Cumulative Return", xlab="Time", main="Optimal Proxy Cumulative Returns")
lines(cumH, col=colors[2])
lines(e, col=colors[3]);
legend("topleft",legend=c("Underlying", "Hedge", "Error"), fill=colors, cex=0.5)
par(oldpar)
}

return (c)
})

oldpar <- par(mfrow=c(2,1))
plot(cors, ylab="Correlation", main="Optimal Proxy Hedge Correlation Scatter")
plot(density(cors), xlab="Correlation", main="Optimal Proxy Hedge Correlation Density")
par(oldpar)

return (cors)
}