We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services.
Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.
CookieConsentStores the user's cookie consent state for the current domain
Maximum Storage Duration: 1 yearType: HTTP Cookie
Preference cookies enable a website to remember information that changes the way the website behaves or looks, like your preferred language or the region that you are in.
We do not use cookies of this type.
Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.
We do not use cookies of this type.
Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.
Some of the data collected by this provider is for the purposes of personalization and measuring advertising effectiveness.
pagead/gen_204Collects data on visitor behaviour from multiple websites, in order to present more relevant advertisement - This also allows the website to limit the number of times that they are shown the same advertisement.
Maximum Storage Duration: SessionType: Pixel Tracker
TESTCOOKIESENABLEDUsed to track user’s interaction with embedded content.
Maximum Storage Duration: 1 dayType: HTTP Cookie
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
List of domains your consent applies to: [#BULK_CONSENT_DOMAINS#]
Cookie declaration last updated on 1/26/25 by Cookiebot
[#IABV2_TITLE#]
[#IABV2_BODY_INTRO#]
[#IABV2_BODY_LEGITIMATE_INTEREST_INTRO#]
[#IABV2_BODY_PREFERENCE_INTRO#]
[#IABV2_BODY_PURPOSES_INTRO#]
[#IABV2_BODY_PURPOSES#]
[#IABV2_BODY_FEATURES_INTRO#]
[#IABV2_BODY_FEATURES#]
[#IABV2_BODY_PARTNERS_INTRO#]
[#IABV2_BODY_PARTNERS#]
About
Cookies are small text files that can be used by websites to make a user's experience more efficient.
The law states that we can store cookies on your device if they are strictly necessary for the operation of this site. For all other types of cookies we need your permission.
This site uses different types of cookies. Some cookies are placed by third party services that appear on our pages.
You can at any time change or withdraw your consent from the Cookie Declaration on our website.
Learn more about who we are, how you can contact us and how we process personal data in our Privacy Policy.
Please state your consent ID and date when you contact us regarding your consent.
How We Can Backtest Leveraged ETFs All the Way Back To 1885
Leveraged ETFs on the S&P 500 are a relatively new phenomenon. ETFs as a whole are.
The first ETF on the S&P 500 was launched in 1993. The SPDR® S&P 500® ETF, also called SPY.
Therefore backtesting levereaged ETFs is much more complicated than it first may seem.
On this page we explain our methodology which allows us to accurately backtest leveraged ETFs all the way back to 1885.
How We Simulate Leveraged ETF Returns
Let's look at results first. The following charts show how our simulations are up to par with real world data. Afterwards we explain our methodology.
Our 2x Leverage Simulation vs Real SSO Data
ProShares Ultra S&P 500 (SSO) is the biggest 2x daily leveraged ETF tracking the S&P 500 Total Return Index in the US.
Here can you see how our simulation of the SSO performs compared to the real SSO data from Yahoo Finance.
Xtrackers S&P 500 3x Leveraged Daily Swap UCITS ETF 1C (3USL) is a 3x daily leveraged ETF tracking the S&P 500 Net Total Return Index available in Europe.
Inaccurate Simulations for non US based ETFs
Our simulations for non US based ETFs are currently not as accurate as we would like them to be, because we use the regular S&P 500 total return index as the basis for all our simulations but non US based ETFs track theNET total return index. The NET version of the index is simply a taxed version of the regular S&P 500 total return index. To account for that we currently add aditional yearly costs beyond the TER to the simulation to account for the difference. As you can see, this method does yield "good enough" results for now. We are currently working on a solution to increase the accuracy of our simulations for non US based ETFs.
Here you can see how our simulation of the 3USL performs compared to the real 3USL data from Yahoo Finance.
Xtrackers S&P 500 2x Leveraged Daily Swap UCITS ETF 1C (DBPG) is a 2x daily leveraged ETF tracking the S&P 500 Net Total Return Index available in Europe.
Inaccurate Simulations for non US based ETFs
Our simulations for non US based ETFs are currently not as accurate as we would like them to be, because we use the regular S&P 500 total return index as the basis for all our simulations but non US based ETFs track theNET total return index. The NET version of the index is simply a taxed version of the regular S&P 500 total return index. To account for that we currently add aditional yearly costs beyond the TER to the simulation to account for the difference. As you can see, this method does yield "good enough" results for now. We are currently working on a solution to increase the accuracy of our simulations for non US based ETFs.
Here you can see how our simulation of the DBPG performs compared to the real DBPG data from Yahoo Finance.
How it all works and why it's not as simple as it seems
What do leveraged ETFs like the
SSO
or
UPRO
track? The S&P 500 Total Return Index (S&P500TR)
What is a total return index? It's simply the price index including events such as dividends. The so called
SPY
is one of them.
The Problem we face now is that easily accessible data for the S&P 500 Total Return Index only goes back to 1988. Using that data, like many other backtesting tools and websites, would not include major historical events such as
The Great Depression
,
Black Monday
, the
Oil Crisis
and more.
Luckily we aren't the first to encounter this problem. This GitHub Repo uses a clever combination of different publicly available datasets and some clever math to get us the data we need as it creates a simulated SPY that goes back to 1885.
We did a small adjustment though. At first we removed the TER calculations from the simulation. Afterwards starting in ~1988 onwards we simply use real S&P 500 Total Return Index data from Yahoo Finance. That reduces tracking errors for recent data drastically and allows us to use the Total Return Index as a basis for our simulations instead of dealing with the SPY, which adds tracking noise and already includes a TER.
Simulating Leveraged ETF Returns
Now that we have a complete dataset for the S&P 500 Total Return Index going back to 1885, we look into how we can simulate the returns of leveraged ETFs.
To do so we need to account for various factors, including:
daily rebalancing effects
management fees - Total Expense Ratio (TER)
borrowing costs
additional costs such as spread
Daily rebalancing
Leveraged ETFs are rebalanced daily to maintain the leverage ratio. This means that the value of the ETF will fluctuate based on the daily changes in the S&P 500. This sounds very fancy and complicated, but the math is very simple:
leveraged return = 2 * (S&P 500 return)
This means that if the S&P 500 goes up by 1% today, the leveraged ETF will go up by 2%. Then we simply do this for each day in our dataset. For 3x leveraged ETFs we simply replace the 2 with a 3.
Management fees - Total Expense Ratio (TER)
The TER is the management fee that the ETF issuer charges to manage the ETF. It is deducted from the value of the ETF daily and is just a tiny bit more complicated to account for:
leveraged return = ((1 - TER) / trading days per year) * (S&P 500 return)
This means we simply apply the TER to the value of the ETF daily.
But beware: trading days per year vary. Especially if we go back further in time.
We got that covered. Since we have the daily data avaialble, we can simply count the number of trading days for each year from our dataset.
Borrowing costs
Now this is where it gets interesting. We work on the assumption that leveraged ETF providers are able to borrow money at the Fed rate. Or often referred to as the risk-free rate. Luckily, the FRED API has us covered. We can take the historical rates and apply them accordingly. We use the Federal Funds Effective Rate for this.
Additional Costs
There are some additional costs that are not immediately obvious. The biggest impact usually come from the swap agreement fees which are paid to an investment bank such as Goldman Sachs.
To account for that, we apply additional daily costs of ~0.004%. That is about 0.90% per year. The value is then multiplied by the leverage factor to account for increasing costs with higher leverage
We get to this value by reading the ETF's prospectus and then testing different values and comparing the results to real data. We also use a value that slightly "underperforms" the real data to make sure that our backtests are more conservative and trustworthy.
Improving Our Simulations
Since the markets are always changing and delivering new data, we can consistently improve our simulations. This includes recalibrating simulation parameters and cost assumptions to minimize tracking differences. We strive to do so at least once a week.
If you still have questions, feedback or ideas to improve our simulations, please let us know.