Lecture 4

null

Terry Leitch

Copyright © 2018 T Leitch & J Liew

Agenda

Discretionary Global Macro

In my opinion, (discretionary) Global Macro is the hardest strategy to properly evaluate. Discretionary managers typically have thematic approaches to their investment process and express their views through a variety of instrument such as futures, options, and fx, across global markets.

Rethink Captilism

Discretionary Global Macro Defining Trades

The defining discretionary global macro trade was by George Soros in Sept. 16th, 1992, when he bet on the devaluation of the British Pound
Wiki

Paul Tudor Jones II’s “Trader”, what was his famous trade? Why?

*

*

*

Background: Pound was in the Europe’s ERM, Soros bet that the Pound could not remain within the system, his position made $1B on Sept. 16th, 1992 (short the GBP)

News on 9/17/1992

Global Macro Defined

Case Study: Discretionary Macro Hedge Funds

*

Ex-PayPal’s Peter Thiel’s hedge fund Clarium captured: (1) USD dollar weakening in 2003, and (2) energy rally in 2005

Best and Worst Environments

Fundamental Models: Yardeni

Ex. Yardeni’s Model

Yardeni’s model compares the S&P500 forward earnings yield to the 10-year US Gov’t Bond yield. Equity market valuations are in line when both are equal. Currently, we are in a period of low-equity valuations, do you believe it? As of Feb 4th, 2016, 10 yr US bond yields = 1.87% , and S&P500’s forward earnings yield of ~6.3% (1/15.87, WSJ).

Reference: http://www.federalreserve.gov/releases/h15/update/ http://online.wsj.com/mdc/public/page/2_3021-peyield.html

Fundamental Models: FX Classics and Carry

FX Market Background

Good Resource: http://www.oanda.com/

FX Trader’s View


“EURUSD trades ½ pip wide, with $2M on ask and $4M on bid side.”

Buy EUR or “lift the offer” : Buy $1M EUR and sell $1,348,250 USD
Sell EUR or “hit the bid” : Sell $1M EUR and buy $1,348,200 USD

Base currency EUR, and quoted currency is USD

FX Classic Models

Always remember the easy decomposition:
\[(R_{(USD)} – R_{(FC)} ) = (I_{(USD)} + r_{(USD)} ) – (I_{(FC)} + r_{(FC)} ) =\]
\[(I_{(USD)} – I_{(FC)} ) + (r_{(USD)} - r_{(FC)} )\]

*

FX Carry : “Sort currencies into highest to lowest yielding currencies, buy the top and sell the bottom (Yen).”


G10 FX Carry

So, create an ETF/ETN out of it…

DBV – Deutsche Bank’s G10 Harvest Fund Carry ETF
ICI – Barclays Intelligent Carry Index (G10 currencies)

FX Carry vs Equity-Factors

Active FX Managers Examined

* First,

Let’s examine and index of actively managed currency hedge funds:

Barclay Currency Trader Index (BCTI)

Barclay Currency Traders Index


Theoretical Motivation

Assume an APT multifactor model: \[R_{t} = \alpha + \Sigma_{i}\beta_{i}F_{i,t}+\epsilon_{t}\]

FX Four Factors Identified

  1. Carry DB Harvest / Citibank Beta1
  2. Trend-following (32, 61, 117 days) moving average
  3. Value +/-20% over/under PPP
  4. Volatility EURUSD & JPYUSD / 3-mon. Imp. Vol. 9 fx pairs (CVIX)

Factor 1: Carry

“Carry factor. We used the Deutsche Bank Currency Harvest G10 Index as the proxy for the returns of a carry strategy. This index reflects the return of being long the three high-yielding currencies against being short the three low-yielding currencies among the G–10 currencies. The index is rebalanced quarterly. Every quarter, the currencies are re-ranked according to their current three month LIBOR. The Bloomberg code for this factor is DBHVG10U.”

Factor 2: Trend

“Trend factor. We used the AFX Currency Management Index as a proxy for the trendfollowing factor.17 The AFX Index is based on trading in seven currency pairs weighted by their volume of turnover in the spot market, with returns for each pair based on an equally weighted portfolio of three moving average rules (32, 61, and 117 days).”

Factor 3: Value

“Value factor. We used the Deutsche Bank G10 Valuation Index as the proxy for the returns of a value strategy. To gauge relative value, Deutsche Bank prepares a ranking based on the average daily spot rate over the last three months divided by the purchasing power parity (PPP) exchange rate as published annually by the Organisation for Economic Co-Operation and Development. The Deutsche Bank G10 Valuation Index reflects the return of being long the three currencies with the highest rank (undervalued currencies) against being short the three currencies with the lowest rank (overvalued currencies) among the G–10 currencies. The Bloomberg code for this factor is DBPPPUSF.”

Factor 4: Volatility

“Currency volatility factor. We used the Deutsche Bank Currency Volatility Index as the proxy for foreign exchange volatility. This index is calculated as the weighted average of three-month implied volatility for nine major currency pairs (as provided by the British Bankers’ Association), with weights based on trading volume in surveys by the Bank for International Settlements. The Bloomberg code for this factor is CVIX. We used the first difference for this factor in Equation 1 because it is not a trading strategy. For the previous three factors, we used returns.”

*

*

*

Next,

Let’s examine if individual currency managers’ crowd trades

How many FX managers?

How to measure if a trade is crowded?

Carry

Trend

Value

Hedge Funds Hegde?

“Do Hedge Funds Hedge?” by Asness et al

Stale or Manipulated Asset Prices?



Survivorship, Backfill, and Self-selection

Monthly vs Quarterly



Notice that monthly versus quarterly estimates of annualized standard deviation differ.

Hedge Fund Volatility



Notice that monthly versus quarterly estimates of annualized standard deviation differ.

Some Investment Models to Generate Alpha from CAPM Extensions

Sharpe-Lintner’s CAPM:
\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + \varepsilon_{i,t}\]

Fama-French’s 3 Factor Model:

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + s_{i}SMB_{t}+ h_{i}HML_{t} + \varepsilon_{i,t}\]
Carhart’s Model:

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + s_{i}SMB_{t}+ h_{i}HML_{t} + m_{i}WML_{t} + \varepsilon_{i,t}\]

Lagged Betas

Apply Scholes and Williams (1977) and Dimson (1979) simple techniques

\[R_{i,t} = \alpha_{i} + \beta_{0i}R_{m,t} + \beta_{1i}R_{m,t-1} + \beta_{2i}R_{m,t-2} + \beta_{3i}R_{m,t-3}+...+\varepsilon_{i,t}\]

Sharpe-Lintner’s CAPM: Sharpe Screening with PeerPerformance Package

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + \varepsilon_{i,t}\]

library("PeerPerformance", lib.loc="/opt/microsoft/ropen/3.4.3/lib64/R/library")
hfrets=readRDS("data/hfrets.rds")[,1:10]

## Sharpe screening 
knitr::kable(cbind(HFname=colnames(hfrets),outperform=sharpeScreening(hfrets, control = list(nCore = 1))$pipos))
HFname outperform
HFI 0.353123446117909
Converts 0.0639887827529013
ShortBias 0
EMF 0.0535714285714285
EquityNeutral 0.0387817643696677
EventDriven 0.75
Distressed 0.816176470588235
MultiSstrat 0.382917515973302
RiskArb 0.728223365686532
FIArb 0.181691935263858
## Modified Sharpe screening 
knitr::kable(cbind(HFname=colnames(hfrets),outperform=msharpeScreening(hfrets, control = list(nCore = 1))$pipos))
HFname outperform
HFI 0.16666071859529
Converts 1
ShortBias 0
EMF 0.142857142857143
EquityNeutral NA
EventDriven 0.519300441735576
Distressed 0.73109243697479
MultiSstrat 0.193559266034737
RiskArb 0.509887933719684
FIArb 0.641894264152376
## Alpha screening
ctr = list(nCore = 1)
knitr::kable(cbind(HFname=colnames(hfrets),outperform=alphaScreening(hfrets, control = ctr)$pipos))
HFname outperform
HFI 0.359882025674133
Converts 0.320969238150623
ShortBias 0
EMF 0
EquityNeutral 0
EventDriven 0.682539682539683
Distressed 1
MultiSstrat 0.539453331698549
RiskArb 0.193615434164776
FIArb 0
![Ardia & Boudt 2012](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2000901)

Fama-French’s 3 Factor Model:

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + s_{i}SMB_{t}+ h_{i}HML_{t} + \varepsilon_{i,t}\]

library(quantmod)
source("http://www.stat.cmu.edu/~cschafer/MSCF/getFamaFrench.txt")

#Get Fama French factors
ffhold = getFamaFrench(from="2012-1-1", to="2012-6-30")

#Get Apple stock's data
AAPL=getSymbols("AAPL", from="2012-1-1", to="2012-6-30", auto.assign=F)

#Find excess return
ffhold$AAPLexret = 100*dailyReturn(AAPL) - ffhold$RF

#Multiple Linear Regression
ff3modAAPL = lm(AAPLexret ~ Mkt.RF + SMB + HML, data=ffhold)

#Summary of regression
summary(ff3modAAPL)
## 
## Call:
## lm(formula = AAPLexret ~ Mkt.RF + SMB + HML, data = ffhold)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0164 -0.8426 -0.0340  0.7748  5.0299 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.1908     0.1225   1.558  0.12190    
## Mkt.RF        1.3617     0.1584   8.597 3.45e-14 ***
## SMB          -0.8402     0.3082  -2.726  0.00735 ** 
## HML          -1.9321     0.3091  -6.251 6.35e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.363 on 121 degrees of freedom
## Multiple R-squared:  0.4744, Adjusted R-squared:  0.4613 
## F-statistic:  36.4 on 3 and 121 DF,  p-value: < 2.2e-16

Carhart’s Model:

Sharpe-Lintner’s CAPM Rewritten for Execution



\[\alpha_{i} = R_{i,t} - \beta_{i}R_{m,t} - \varepsilon_{i,t}\]


Fama-French’s 3 Factor Model Rewritten for Execution


\[\alpha_{i} = R_{i,t} - \beta_{i}R_{m,t} - s_{i}SMB_{t}- h_{i}HML_{t} -\varepsilon_{i,t}\]



Last step for portfolio contruction

Optimise for Sharpe by minimizing \(sigma(P)\)



Sharpe-Lintner’s CAPM: Sharpe Screening with PeerPerformance Package


\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + \varepsilon_{i,t}\]

library("PeerPerformance", lib.loc="~/R/x86_64-pc-linux-gnu-library/3.4")
hfrets=readRDS("data/hfrets.rds")[,1:10]

## Sharpe screening 
knitr::kable(cbind(HFname=colnames(hfrets),outperform=sharpeScreening(hfrets, control = list(nCore = 1))$pipos))
HFname outperform
HFI 0.342530214857394
Converts 0.0639887827529013
ShortBias 0
EMF 0.0535714285714285
EquityNeutral 0.0387817643696677
EventDriven 0.75
Distressed 0.816176470588235
MultiSstrat 0.390557815378023
RiskArb 0.728223365686532
FIArb 0.181691935263858
## Modified Sharpe screening 
knitr::kable(cbind(HFname=colnames(hfrets),outperform=msharpeScreening(hfrets, control = list(nCore = 1))$pipos))
HFname outperform
HFI 0.163781764369668
Converts 1
ShortBias 0
EMF 0.142857142857143
EquityNeutral NA
EventDriven 0.527874016416601
Distressed 0.73109243697479
MultiSstrat 0.193559266034737
RiskArb 0.49942227277714
FIArb 0.65933703238995
## Alpha screening
ctr = list(nCore = 1)
knitr::kable(cbind(HFname=colnames(hfrets),outperform=alphaScreening(hfrets, control = ctr)$pipos))
HFname outperform
HFI 0.359882025674133
Converts 0.320969238150623
ShortBias 0
EMF 0.00963050267368932
EquityNeutral 0
EventDriven 0.682539682539683
Distressed 1
MultiSstrat 0.539453331698549
RiskArb 0.1836357299599
FIArb 0
[Ardia & Boudt 2 012](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2000901)

Fama-French’s 3 Factor Model:

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + s_{i}SMB_{t}+ h_{i}HML_{t} + \varepsilon_{i,t}\]

library(quantmod)
source("http://www.stat.cmu.edu/~cschafer/MSCF/getFamaFrench.txt")

#Get Fama French factors
ffhold = getFamaFrench(from="2012-1-1", to="2012-6-30")

#Get Apple stock's data
AAPL=getSymbols("AAPL", from="2012-1-1", to="2012-6-30", auto.assign=F)

#Find excess return
ffhold$AAPLexret = 100*dailyReturn(AAPL) - ffhold$RF

#Multiple Linear Regression
ff3modAAPL = lm(AAPLexret ~ Mkt.RF + SMB + HML, data=ffhold)

#Summary of regression
summary(ff3modAAPL)
## 
## Call:
## lm(formula = AAPLexret ~ Mkt.RF + SMB + HML, data = ffhold)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0164 -0.8426 -0.0340  0.7748  5.0299 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.1908     0.1225   1.558  0.12190    
## Mkt.RF        1.3617     0.1584   8.597 3.45e-14 ***
## SMB          -0.8402     0.3082  -2.726  0.00735 ** 
## HML          -1.9321     0.3091  -6.251 6.35e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.363 on 121 degrees of freedom
## Multiple R-squared:  0.4744, Adjusted R-squared:  0.4613 
## F-statistic:  36.4 on 3 and 121 DF,  p-value: < 2.2e-16
## Compare with Sharpe Lintner
#Multiple Linear Regression
ff3modAAPL = lm(AAPLexret ~ Mkt.RF, data=ffhold)

#Summary of regression
summary(ff3modAAPL)
## 
## Call:
## lm(formula = AAPLexret ~ Mkt.RF, data = ffhold)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2657 -0.9862 -0.1751  0.7242  7.0587 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.2184     0.1418   1.540    0.126    
## Mkt.RF        1.1091     0.1597   6.947 1.92e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.58 on 123 degrees of freedom
## Multiple R-squared:  0.2818, Adjusted R-squared:  0.2759 
## F-statistic: 48.26 on 1 and 123 DF,  p-value: 1.916e-10

Carhart’s Model:

\[R_{i,t} = \alpha_{i} + \beta_{i}R_{m,t} + s_{i}SMB_{t}+ h_{i}HML_{t} + m_{i}WML_{t} + \varepsilon_{i,t}\]

Lagged Betas

\[R_{i,t} = \alpha_{i} + \beta_{0i}R_{m,t} + \beta_{1i}R_{m,t-1} + \beta_{2i}R_{m,t-2} + \beta_{3i}R_{m,t-3}+...+\varepsilon_{i,t}\]

HF Performance


Differences do exist, and appear to be both statistically and economically significant.

Contributions

Examine SMB, HML, and the “Market” - from Fama-French’s 3-factor model

Boring Old Factors…

Cumulative Returns

Add: Simple Trend Model

New Results

New Cumulative Returns

Comparing EW vs EW* (+36%!)