This is part of a series on time series momentum. Look here for the previous post on this.
Here we focus on time series momentum strategies in a single underlying (as opposed to diversified momentum trading).
The typical time series momentum trading strategy has two distinct design phases. The first one is generating a trading signal based on some logic applied to the underlying price levels or price returns. This, therefore, can be thought of as a function $S$ converting the underlying prices or returns to a trading signal. The second phase is designing an appropriate positioning function $\Psi$. This accomplishes converting the output from $S$ in phase one in to a sizing or positioning. In many cases, we can have the third phase consisting of risk management. This phase includes putting different types of risk management logic, like stop losses or take profit or we can even club volatility filter under this category. For the sake of practicality and simplicity, we keep risk management out of scope and concentrate on a strategy involving the basic two steps as above - designing $S$ and $\Psi$. The schematic below shows how the price or returns (first terms) flows through these filters to generate a profit or loss number (last term)
$$logP_t \Rightarrow S(logP_t) \Rightarrow \Psi(S(logP_t)) \Rightarrow r_{t+1}\Psi$$
$$r_t \Rightarrow S(r_t) \Rightarrow \Psi(S(r_t)) \Rightarrow r_{t+1}\Psi$$
First set refers to price-based signals, and the second set refers to returns based signal. Here $r_t=(logP_t - logP_{t-1})$ is the one period return. Note we are using logarithms of the prices for filtering, while in most cases (like moving average) simple prices are used. This for convenience so that we can write the percentage returns as a difference of logarithms of prices. The designing objective is to choose $S$ and $\Psi$ to optimize the performance.
The two most common types of signal designing is either a momentum signal on the returns (RMOM) or a moving average crossover signal (XMOV). An RMOM signal computes a weighted average of recent returns and goes long if they are positive. A simple strategy based on such a signal is to buy an asset if, say the recent monthly return has been positive. A simple TSMOM signal will be as below
$$S_t^{RMOM}=\sum_{s=1}^nw_sr_s=\sum_{s=1}^nw_s(logP_{t-s+1} - logP_{t-s})$$
Here $w$ are the weights and $n$ is the window of the applied filter. A buy signal is generated for $S_t^{RMOM} \ge 0$. Similarly, a moving average cross-over signal tracks two moving averages and signals a buy when the fast one crosses the slow one from below. The moving average signals will be as shown below
$$S_t^{XMOV}=MA_t^{fast} - MA_t^{slow}=\sum_{s=1}^nc_s^{fast}(logP_{t-s+1}) - \sum_{s=1}^nc_s^{slow}(logP_{t-s+1}) = \sum_{s=1}^n(c_s^{fast} - c_s^{slow})logP_{t-s+1}$$
Here $c$ are the weights and $n$ is the window of the applied filters. A buy signal is generated for $S_t^{XMOV} \ge 0$.
Pedersen and Levine (from AQR Capital) have shown that these two are in fact equivalent ways of expressing same filtering. They have even shown that in general all linear filters are equivalent. For example, the equivalent ways of expressing the XMOV signals in equivalent RMOM expression is to compute the equivalent weights as
$$w_s=\sum_{j=1}^s(c_j^{fast} - c_j^{slow})$$
Here are some examples of price level filters mapped back to returns space applying these results.
Here the simple MA crossover is based on a 50 period and 250 period (fast and slow respectively) moving average filters. The corresponding EWMA is designed to have similar filtering (in the sense that the net signal has similar center of mass). Also note that the net signal weights are both positive and negative for the price space, but strictly positive on the return space in these two cases.
So we see that in general, we can represent the signal function $S$ as weighted past returns, in the form of $\sum{w_sr_s}$, at least for linear filtering and scaling. Next we look at the positioning function $\Psi$.
This covers a significant number of technical indicators (like ROC, MACD, or even normalized momentum filters like CCI, assuming a known and constant volatility - i.e. constant scaling). However, this will exclude non-linear indicators like Aroon oscillator.
$$logP_t \Rightarrow S(logP_t) \Rightarrow \Psi(S(logP_t)) \Rightarrow r_{t+1}\Psi$$
$$r_t \Rightarrow S(r_t) \Rightarrow \Psi(S(r_t)) \Rightarrow r_{t+1}\Psi$$
First set refers to price-based signals, and the second set refers to returns based signal. Here $r_t=(logP_t - logP_{t-1})$ is the one period return. Note we are using logarithms of the prices for filtering, while in most cases (like moving average) simple prices are used. This for convenience so that we can write the percentage returns as a difference of logarithms of prices. The designing objective is to choose $S$ and $\Psi$ to optimize the performance.
The two most common types of signal designing is either a momentum signal on the returns (RMOM) or a moving average crossover signal (XMOV). An RMOM signal computes a weighted average of recent returns and goes long if they are positive. A simple strategy based on such a signal is to buy an asset if, say the recent monthly return has been positive. A simple TSMOM signal will be as below
$$S_t^{RMOM}=\sum_{s=1}^nw_sr_s=\sum_{s=1}^nw_s(logP_{t-s+1} - logP_{t-s})$$
Here $w$ are the weights and $n$ is the window of the applied filter. A buy signal is generated for $S_t^{RMOM} \ge 0$. Similarly, a moving average cross-over signal tracks two moving averages and signals a buy when the fast one crosses the slow one from below. The moving average signals will be as shown below
$$S_t^{XMOV}=MA_t^{fast} - MA_t^{slow}=\sum_{s=1}^nc_s^{fast}(logP_{t-s+1}) - \sum_{s=1}^nc_s^{slow}(logP_{t-s+1}) = \sum_{s=1}^n(c_s^{fast} - c_s^{slow})logP_{t-s+1}$$
Here $c$ are the weights and $n$ is the window of the applied filters. A buy signal is generated for $S_t^{XMOV} \ge 0$.
Pedersen and Levine (from AQR Capital) have shown that these two are in fact equivalent ways of expressing same filtering. They have even shown that in general all linear filters are equivalent. For example, the equivalent ways of expressing the XMOV signals in equivalent RMOM expression is to compute the equivalent weights as
$$w_s=\sum_{j=1}^s(c_j^{fast} - c_j^{slow})$$
Here are some examples of price level filters mapped back to returns space applying these results.
Here the simple MA crossover is based on a 50 period and 250 period (fast and slow respectively) moving average filters. The corresponding EWMA is designed to have similar filtering (in the sense that the net signal has similar center of mass). Also note that the net signal weights are both positive and negative for the price space, but strictly positive on the return space in these two cases.
So we see that in general, we can represent the signal function $S$ as weighted past returns, in the form of $\sum{w_sr_s}$, at least for linear filtering and scaling. Next we look at the positioning function $\Psi$.
This covers a significant number of technical indicators (like ROC, MACD, or even normalized momentum filters like CCI, assuming a known and constant volatility - i.e. constant scaling). However, this will exclude non-linear indicators like Aroon oscillator.
No comments:
Post a Comment