In this article we will look at the automated backtesting results for four variations of a 38 days-to-expiration (DTE) RUT delta neutral "no touch" Iron Condor (IC). See my post Thoughts on Options Strategy Backtests for some background on my testing approach, and my other post Delta Neutral Iron Condor for more detail about the structure of this trade.
As with the prior backtests, the short strikes for both the call credit spreads and put credit spreads will be at approximately the same delta. These backtests will be "no touch" tests, meaning there will be no adjustments during the trades Lastly, these trades will be started with the position delta close to zero (delta neutral). This will require the number of call credit spreads to be reduced until the position delta approaches zero. The setup details are shown in the table below:
(1) The backtester will start looking for trades that meet the entry DTE requirement after this date
(2) The backtester will not take any trades that will have an exit DTE after this date
(3) Some trading platforms call 38 DTE, 36 DTE (e.g., TOS). The OSB uses a DTE based on the number of days to the expiration date in the option code/opra code, which is a Saturday for indexes
(4) Some trading platforms call 8 DTE, 6 DTE (e.g., TOS)
(5) Russell 2000 Index options
(6) Four 38 DTE delta neutral "no-touch" iron condors will be tested with their short strikes at varying deltas (8, 12, 16, and 20)
(7) The distance between the short call and long call (also, the distance between the short and long puts).
(8) The call spreads will contain an equal number of long and short options. The quantity of call spreads at trade initiation will range from between 5 and 10. The actual quantity selected by the backtester will result in a position delta that is close to 0. For example 5 call spreads and 10 put spreads at initiation, or 6 call spreads and 10 put spreads at initiation, etc.
The equity curves for each of the four delta variations are shown in the graph below. In addition to the equity curves, the ATM IV at trade initiation is also plotted (the average of the ATM call IV and ATM put IV). Please note that the dates in the chart are expiration dates.
If I pick a random expiration date, for example 12/17/2011, we can see that when the trade was initiated, the ATM IV was 42. When the trade was closed, the cumulative non-compounded profit had grown to between $24.5k and $42.8k depending on the short delta of the variation of the strategy.
For these trades, the maximum reg-t margin requirement is between $16.9k and $18.8k assuming your brokerage only margins one side of your IC. If you have portfolio margin, your requirement is somewhere around one-quarter to one-half the reg-t margin numbers. The 8 delta trade had the highest margin requirement, while the 20 delta trade had the lowest margin requirement. The margin difference is related to the difference in the size of the credits received. Higher delta equals larger credit; lower delta equals smaller credit.
In the table below are the standard trade metrics for the four ICs with different short strikes (8 delta, 12 delta, 16 delta, and 20 delta). The Sharpe and Sortino ratios are the highest for the 16 delta variation.
Similar to the other "no touch" trades tested, there are some big drawdowns in these trades because of the lack of adjustments. The number of winning trades increases as the size of the short deltas decreases..the further away from ATM, the higher the win rate. The combination of shorter DTE and closeness of the short strikes makes the higher delta condors have a lower win rate. The non-compounded AGR decreases as the delta of the short strike decreases.
In the heat maps, we can see the performance by expiration month of each of the individual trades of each of the four delta variations. The 0% cells represent expiration months were no trade was initiated. Some of these 0% cells are due to lack of data or bad prints on the trade entry day...leading the backtester to skip that month for testing.
The next four graphs show the P&L range for the four delta variations of this 38 DTE IC strategy. These graphs are showing the open, which is the 0% level, the high (green bar), the low (red bar), and the value at trade close (the blue line). Also, note that the months shown on the horizontal axis are not displaying expiration dates in order to make the charts less cluttered with axis labels.
The top graph displays the P&L range for the 8 delta variation of the 38 DTE delta neutral "no touch" IC. Even with the short duration of these trades, you can see that when a trade closes profitably the range is mostly on the positive side of the graph. You can also see the increase in P&L volatility as the delta increase from 8 to 20.
In the next post I will move on to the 52 DTE delta neutral "no touch" RUT IC. Drop me a note if you'd like to see different data presented, and I'll do my best to incorporate your suggestions in upcoming posts.
If you don't want to miss my new blog posts, follow my blog either by email or by RSS feed. Both options are free, and are available on the top of the right hand navigation column under the headings "Follow By Email" and "Subscribe To RSS Feed". I follow blogs by RSS using Feedly, but any RSS reader will work.
A blog about options trading strategies (Iron Condors, Strangles, Calendars, Butterflies), equities rotation strategies, and Java related technologies to backtest and automate trading.
Sunday, September 21, 2014
Wednesday, September 17, 2014
Delta Neutral Iron Condor
This post is the introduction for my next series of iron condor (IC) backtest posts. See my post Thoughts on Options Strategy Backtests for some background on my testing approach.
The last series of IC backtest posts looked at the performance of a symmetric (equal quantities of long and short calls and puts) "no touch" IC on the RUT, SPX, and NDX. The structure of these ICs resembled the image below.
I modeled this trade in TOS today, with 64 days to expiration (DTE). With approximately 8 delta short strikes and a 20 point wing width, this RUT condor is short almost 18 delta. The maximum profit on this trade is $2,320, with a maximum risk of $17,680.
In my next series of IC backtests, we will look at a delta neutral version of this trade. In order to modify the position deltas, I will decrease the quantity of call spreads. I will leave the strikes in the same positions that they were in for the symmetric "no touch" backtests. If we take the trade in the image above and decrease the number of call spreads from 10 to 5, the delta of the position will change from -18, to +1. This new structure is shown in the image below.
This trade has a maximum profit of $1,735, and a maximum risk of $18,265.
In my new series of posts, the automated backtester will construct broken wing ICs that are delta neutral. The quantity of call spreads will change from trade to trade in order to start with a delta neutral IC. In some situations, trades may start with 5 call spreads and in other situations the trades may start with 7 or 8 call spreads. This quantity will be automatically adjusted to create a delta neutral starting structure. The backtester can automate adjustments, but in this series the trades will again be "no touch" ... no intra-trade adjustments.
The last series of IC backtest posts looked at the performance of a symmetric (equal quantities of long and short calls and puts) "no touch" IC on the RUT, SPX, and NDX. The structure of these ICs resembled the image below.
I modeled this trade in TOS today, with 64 days to expiration (DTE). With approximately 8 delta short strikes and a 20 point wing width, this RUT condor is short almost 18 delta. The maximum profit on this trade is $2,320, with a maximum risk of $17,680.
In my next series of IC backtests, we will look at a delta neutral version of this trade. In order to modify the position deltas, I will decrease the quantity of call spreads. I will leave the strikes in the same positions that they were in for the symmetric "no touch" backtests. If we take the trade in the image above and decrease the number of call spreads from 10 to 5, the delta of the position will change from -18, to +1. This new structure is shown in the image below.
This trade has a maximum profit of $1,735, and a maximum risk of $18,265.
In my new series of posts, the automated backtester will construct broken wing ICs that are delta neutral. The quantity of call spreads will change from trade to trade in order to start with a delta neutral IC. In some situations, trades may start with 5 call spreads and in other situations the trades may start with 7 or 8 call spreads. This quantity will be automatically adjusted to create a delta neutral starting structure. The backtester can automate adjustments, but in this series the trades will again be "no touch" ... no intra-trade adjustments.
Labels:
Backtesting,
Delta Neutral,
Iron Condor,
No Touch,
Options Trading
Sunday, September 14, 2014
Historical Data and Momentum Rotation Strategies
We are going to take a slight detour with this post, and look at stock/ETF/mutual fund rotation strategies. I actively trade rotation strategies in several accounts, and have been evolving my rotation strategies for about ten years. If you'd like some information on how to build a rotation strategy, please take a look at the articles below:
These articles are from the blogs of MarketSci and Woodshedder who have both written a number of posts (more than I've listed above) on the topic of rotation strategies. Both seem to be semi-retired now and do not blog much. In my post we will not look at the strategies themselves, but rather the data that they use.
----
A few years ago I began to realize that the signals I was receiving (and trading on!) from my rotation strategies were occasionally inconsistent with the backtests of these same strategies. I didn't spend much time digging into the issue at the time, but it remained in the back of my mind until late December, 2013.
For the trades that were generated from my systems for December 2013 (my rotation systems reassess monthly), I not only recorded the vehicles that were selected, but also their associated rotation rank/score. I have been tracking this information in spreadsheets since that time...a period which currently includes nine rotation cycles (9 months).
In the middle of last month, August 2014, I decided to backtest my live rotation strategies across the same period that I had actively traded with these same rotation strategies. I was not surprised to find that a number of the trades in the backtests did not match the trades I had actually executed and recorded in my spreadsheets.
I use AmiBroker and Yahoo! end-of-data data (Yahoo Data Info 1, Yahoo Data Info 2) for my rotation strategies. I knew that Amibroker was configured by default to use the adjusted close rather than the actual close in it's database, but I didn't think too much about this detail. I had been consciously using this adjusted close rather than the actual close for nearly ten years, but had not truly considered the impact of using adjusted close data with rotation/ranking strategies. The line in the AmiBroker aqh.format file that you should be aware of is highlighted below:
If you would like to use the actual close rather than the adjusted close in Ambroker, replace the highlighted line above, with the line below and re-download all of your historical data from Yahoo.
As a reminder, the adjusted close time series is a modified version of the actual close time series that includes gains from dividends and capital gains. This means that a buy price shown in a backtest will not be the actual buy price that you could have received trading on that day (for any stock or ETF that at some point later in time issued a dividend or capital gain). It is very important to think about this point and the impact it can have on your backtest versus live results!
This issue has a big impact on trade entry and exit signals with rotation/ranking systems...a system where a group of stocks/ETFs/mutual funds are being compared to each other based on open/high/low/close (OHLC) price data.
As an example, take a look at the historical data for the iShares Core US Aggregate Bond (AGG). An excerpt of this historical data is shown in the image below.
If your rotation system happened to be using adjusted close prices and had AGG in its basket of rotation vehicles, AGG's score for August 29 would have been different on August 29 when you traded it, than when you run your backtest for that date on say September 2 (after the dividend issuance). You will notice that the August 29 close is 109.98, but the adjusted close is 109.79...and this issue compounds with every dividend and capital gain that is issued...every past adjusted close is modified when a new dividend is issued. Take a look at the difference between the adjusted close and actual close just two years ago:
The close on August 29, 2012 is 111.95, while the adjusted close on that date is 106.33. As new dividends are issued in the future, the 106.33 adjusted close price will get increasingly smaller, which will have an impact on the rotation ranking/score for AGG in all backtests. This same issue occurs with any vehicle that issues dividends and capital gains.
----
If we use actual closing prices for our backtests, we will generate signals based on prices that actually occurred in the past. The trade off is that we will not see the positive impact of dividends and capital gains in the returns of our backtests. As an illustration, I can show the results of several rotation strategy variations run against the following basket of ETFs:
In the image below, you can see the equity curves for several different rotation strategies run against the 10 ETFs in the list above, but using the adjusted close time series. (click on the image to see a larger version).
In the top pane, the green, purple, and red lines are the equity curves for three different rotation strategies run against the 10 vehicles in the list above. The other three curves are the "buy and hold" curves for SPY, IWM, and QQQ. The lower pane displays SPY (orange), and the same green, purple, and red equity curves from the upper pane. In addition, the lower pane contains seven equity curves for other rotation strategy variations on the same list of 10 ETFs. The y-axis is percent return, while the text for each strategy lists the cumulative dollar return for that strategy (the initial capital for each strategy was $100,000).
Now let's look at the results for the exact same strategies run against the same 10 vehicles, but using the actual closing price time series data. We expect the returns to be lower, since dividends and capital gains are not reflected in the time series.
The difference in equity curves is large, as expected. But how do the entry and exit signals compare between the adjusted close data and the actual close data.
In the table below, is the comparison of entry and exit dates and vehicles for the strategy with the green equity curve in the above two charts. Recall that the equity curves in the two charts above was generated by the same rotation strategy run against the same 10 ETFs in the list above...the only difference between the equity curves is the data...adjusted close data versus actual close data.
These are not vastly different selections between the adjusted close time series and the actual close time series with this rotation strategy and the 10 ETFs in the list above. I have noticed significantly greater differences with different baskets of ETFs and mutual funds.
So what's the point? Ideally, for rotation/ranking strategies we should generate our entry and exit signals based on the actual close time series, but calculate our returns on those trades using the adjusted close time series. If we can only use one time series, then we should consider using the actual close time series rather than the adjusted close time series. If we can live with equity curves that show smaller returns, using actual close time series data will result in generated entry/exit signals in our backtests that match our actual entry/exit signals that we received in real trading.
And one last point...be sure to check the data that paid and free rotation strategy services use...it's most likely adjusted close data...which means the signals they show in their backtests may not match the signals that they actually sent you!
Good trading!
- ETF Rotational System V1.0, Part 1
- ETF Rotational System V1.0, Part 2
- ETF Rotational System V1.0, Part 3
- ETF Rotational System V1.0, Part 4 – Updated
- Roundup: FundzTrader Sector Rotation Strategy
These articles are from the blogs of MarketSci and Woodshedder who have both written a number of posts (more than I've listed above) on the topic of rotation strategies. Both seem to be semi-retired now and do not blog much. In my post we will not look at the strategies themselves, but rather the data that they use.
----
A few years ago I began to realize that the signals I was receiving (and trading on!) from my rotation strategies were occasionally inconsistent with the backtests of these same strategies. I didn't spend much time digging into the issue at the time, but it remained in the back of my mind until late December, 2013.
For the trades that were generated from my systems for December 2013 (my rotation systems reassess monthly), I not only recorded the vehicles that were selected, but also their associated rotation rank/score. I have been tracking this information in spreadsheets since that time...a period which currently includes nine rotation cycles (9 months).
In the middle of last month, August 2014, I decided to backtest my live rotation strategies across the same period that I had actively traded with these same rotation strategies. I was not surprised to find that a number of the trades in the backtests did not match the trades I had actually executed and recorded in my spreadsheets.
I use AmiBroker and Yahoo! end-of-data data (Yahoo Data Info 1, Yahoo Data Info 2) for my rotation strategies. I knew that Amibroker was configured by default to use the adjusted close rather than the actual close in it's database, but I didn't think too much about this detail. I had been consciously using this adjusted close rather than the actual close for nearly ten years, but had not truly considered the impact of using adjusted close data with rotation/ranking strategies. The line in the AmiBroker aqh.format file that you should be aware of is highlighted below:
# AmiQuote historical quotes download format (.AQH extension) # Revision 1.1 - removed $VOLFACTOR 0.01 $FORMAT Date_DMY,Open,High,Low,Close,Volume,AdjClose $SKIPLINES 0 $BREAKONERR 0 $SEPARATOR , $DEBUG 1 $AUTOADD 1 $CONT 1 $GROUP 254 # the following switches are optional - please consult # the read-me for description of those options # $RAWCLOSE2OI 1 # $RECALCSPLITS 1 # $ROUNDADJ 4
If you would like to use the actual close rather than the adjusted close in Ambroker, replace the highlighted line above, with the line below and re-download all of your historical data from Yahoo.
$FORMAT Date_DMY,Open,High,Low,Close,Volume
As a reminder, the adjusted close time series is a modified version of the actual close time series that includes gains from dividends and capital gains. This means that a buy price shown in a backtest will not be the actual buy price that you could have received trading on that day (for any stock or ETF that at some point later in time issued a dividend or capital gain). It is very important to think about this point and the impact it can have on your backtest versus live results!
This issue has a big impact on trade entry and exit signals with rotation/ranking systems...a system where a group of stocks/ETFs/mutual funds are being compared to each other based on open/high/low/close (OHLC) price data.
As an example, take a look at the historical data for the iShares Core US Aggregate Bond (AGG). An excerpt of this historical data is shown in the image below.
If your rotation system happened to be using adjusted close prices and had AGG in its basket of rotation vehicles, AGG's score for August 29 would have been different on August 29 when you traded it, than when you run your backtest for that date on say September 2 (after the dividend issuance). You will notice that the August 29 close is 109.98, but the adjusted close is 109.79...and this issue compounds with every dividend and capital gain that is issued...every past adjusted close is modified when a new dividend is issued. Take a look at the difference between the adjusted close and actual close just two years ago:
The close on August 29, 2012 is 111.95, while the adjusted close on that date is 106.33. As new dividends are issued in the future, the 106.33 adjusted close price will get increasingly smaller, which will have an impact on the rotation ranking/score for AGG in all backtests. This same issue occurs with any vehicle that issues dividends and capital gains.
----
If we use actual closing prices for our backtests, we will generate signals based on prices that actually occurred in the past. The trade off is that we will not see the positive impact of dividends and capital gains in the returns of our backtests. As an illustration, I can show the results of several rotation strategy variations run against the following basket of ETFs:
- AGG - iShares Barclays Aggregate Bond Fund
- DBC - PowerShares DB Com Indx Trckng Fund
- EEM - iShares MSCI Emerging Markets Indx
- EFA - iShares MSCI EAFE Index Fund
- GLD - SPDR Gold Trust
- IYR - iShares Dow Jones US Real Estate
- JNK - SPDR Barclays Capital High Yield Bond
- PPH - Market Vectors Pharmaceutical
- SPY - SPDR S&P 500 Trust
- TIP - iShares Barclays TIPS Bond Fund
In the image below, you can see the equity curves for several different rotation strategies run against the 10 ETFs in the list above, but using the adjusted close time series. (click on the image to see a larger version).
In the top pane, the green, purple, and red lines are the equity curves for three different rotation strategies run against the 10 vehicles in the list above. The other three curves are the "buy and hold" curves for SPY, IWM, and QQQ. The lower pane displays SPY (orange), and the same green, purple, and red equity curves from the upper pane. In addition, the lower pane contains seven equity curves for other rotation strategy variations on the same list of 10 ETFs. The y-axis is percent return, while the text for each strategy lists the cumulative dollar return for that strategy (the initial capital for each strategy was $100,000).
Now let's look at the results for the exact same strategies run against the same 10 vehicles, but using the actual closing price time series data. We expect the returns to be lower, since dividends and capital gains are not reflected in the time series.
The difference in equity curves is large, as expected. But how do the entry and exit signals compare between the adjusted close data and the actual close data.
In the table below, is the comparison of entry and exit dates and vehicles for the strategy with the green equity curve in the above two charts. Recall that the equity curves in the two charts above was generated by the same rotation strategy run against the same 10 ETFs in the list above...the only difference between the equity curves is the data...adjusted close data versus actual close data.
These are not vastly different selections between the adjusted close time series and the actual close time series with this rotation strategy and the 10 ETFs in the list above. I have noticed significantly greater differences with different baskets of ETFs and mutual funds.
So what's the point? Ideally, for rotation/ranking strategies we should generate our entry and exit signals based on the actual close time series, but calculate our returns on those trades using the adjusted close time series. If we can only use one time series, then we should consider using the actual close time series rather than the adjusted close time series. If we can live with equity curves that show smaller returns, using actual close time series data will result in generated entry/exit signals in our backtests that match our actual entry/exit signals that we received in real trading.
And one last point...be sure to check the data that paid and free rotation strategy services use...it's most likely adjusted close data...which means the signals they show in their backtests may not match the signals that they actually sent you!
Good trading!
Labels:
Backtesting,
Rotation
Sunday, September 7, 2014
Iron Condor Articles Summary
For the time being, I am finished with the backtests and analysis of the standard "no touch" Iron Condor (IC) on the RUT, SPX, and NDX. I have published a number of posts on this standard "no touch" IC, and this post is a categorized summary of all of those past posts. This post should make it a bit easier to find the backtest or analysis that you are looking for.
Shortly, I will discuss the next IC strategy that I will backtest.
RUT "no touch" Iron Condor Blog Posts:
SPX "no touch" Iron Condor Blog Posts:
NDX "no touch" Iron Condor Blog Posts:
Summary Statistics Blog Posts:
Losing Trades Posts:
Shortly, I will discuss the next IC strategy that I will backtest.
RUT "no touch" Iron Condor Blog Posts:
- Iron Condor Backtest - RUT - 80 DTE
- Iron Condor Backtest - RUT - 66 DTE
- Iron Condor Backtest - RUT - 52 DTE
- Iron Condor Backtest - RUT - 38 DTE
- Iron Condor Backtest - RUT - 31 DTE
- Iron Condor Backtest - RUT - 24 DTE
- 80 DTE RUT Details
- 66 DTE RUT Details
- 52 DTE RUT Details
- 38 DTE RUT Details
- 31 DTE RUT Details
- 24 DTE RUT Details
SPX "no touch" Iron Condor Blog Posts:
- Iron Condor Backtest - SPX - 80 DTE
- Iron Condor Backtest - SPX - 66 DTE
- Iron Condor Backtest - SPX - 52 DTE
- Iron Condor Backtest - SPX - 38 DTE
- Iron Condor Backtest - SPX - 31 DTE
- Iron Condor Backtest - SPX - 24 DTE
NDX "no touch" Iron Condor Blog Posts:
- Iron Condor Backtest - NDX - 80 DTE
- Iron Condor Backtest - NDX - 66 DTE
- Iron Condor Backtest - NDX - 52 DTE
- Iron Condor Backtest - NDX - 38 DTE
- Iron Condor Backtest - NDX - 31 DTE
- Iron Condor Backtest - NDX - 24 DTE
Summary Statistics Blog Posts:
- RUT "no touch" Iron Condor Summary Statistics - All DTE & All Delta
- NDX & SPX "no touch" Iron Condor Summary Statistics - All DTE & All Delta
- Combined RUT & SPX Equity Curves - "no touch" IC - All DTE & All Delta
Losing Trades Posts:
- 80 DTE - Iron Condor Losing Trades - RUT & SPX
- 66 DTE - Iron Condor Losing Trades - RUT & SPX
- 52 DTE - Iron Condor Losing Trades - RUT & SPX
- 38 DTE - Iron Condor Losing Trades - RUT & SPX
- 31 DTE - Iron Condor Losing Trades - RUT & SPX
- 24 DTE - Iron Condor Losing Trades - RUT & SPX
- Iron Condor Losing Trades Summary - RUT & SPX
Labels:
Backtest Results,
Backtesting,
Iron Condor,
NDX,
No Touch,
Options Trading,
RUT,
SPX
Subscribe to:
Posts (Atom)