Crane_ETF
Monthly rotation across a fixed basket of ETFs
Every figure on this page is a hypothetical backtest: not a live account, and not a prediction. Read the full disclosure
Scores a fixed basket of US-listed funds once a month and holds the strongest few in equal parts, stepping into bond funds when stock funds fall or swing hard. Its record rests mostly on one episode: across the test it matched the benchmark’s growth with about half its drawdown, almost all of that from 2008, and it trailed the benchmark clearly from 2015 to 2024. About ten minutes of work a month, but more than thirty fund changes a year, so costs and fills matter.
- Direction
- Long only
- Universe
- Fixed basket of US-listed ETFs: equity, sectors, bonds, one leveraged
- Holding period
- About 1.6 months on average
- Positions held
- Five, equal weight
- Action needed
- Monthly: rank at the month-end close, orders at the next open; about ten minutes
- Tooling
- Python, end-of-day data
| Test period | 2005-01-03 to 2026-09-30 (21.7y) |
|---|---|
| CAGR | 10.84% |
| Max drawdown | −27.0% |
| Volatility | 15.3% |
| Sharpe | 0.75 |
| Trades per year | 36.2 |
Simulated results only; no live account results appear anywhere in this record. A fixed list of exchange-traded funds chosen in advance, total-return adjusted; funds join the basket as they launch, so the early years ran on fewer funds, and one sector fund’s history before December 2011 is its predecessor’s. Per-share commission with a per-order minimum; proportional slippage on every fill. The ranking is taken at a month-end close and every change executes at the next session’s open, so no result can act on same-bar information. Compounding single account, whole shares, no additions or withdrawals; the small cash remainder earns nothing. CAGR and volatility from the daily series; maximum drawdown measured on daily marks (−27.0%); the monthly curve below shows a shallower −23.5%. Sharpe is on a zero-rate basis. Parameters are fixed as originally researched and were not tuned to this test, but the system was selected for publication from a larger set of researched systems. Benchmark (a broad US large-capitalisation index fund held throughout) on the same data: CAGR 10.87%, max drawdown −55.2%, volatility 18.9%.
How it moved with the other systems
Correlation of monthly changes, and how often both rose or fell in the same month, over the months both tests share.
| System | Correlation | Same direction | Period |
|---|---|---|---|
| Harrier_SPY | 0.69 | 77% | Jan 2005 to Sep 2026 |
| Owl_SPY | 0.26 | 64% | Jan 2005 to Sep 2026 |
| Stork_NDX | 0.47 | 72% | Jan 2005 to Sep 2026 |
Hypothetical backtests. These are facts about the past, not a suggestion to run any systems together.
What you get
- The rules written out in plain language
- The Python code that runs them
- Every assumption of the simulated backtest, stated
- One payment of $249, no subscription
- Corrections to your version at no charge, and a refund if the code does not run as described and we cannot fix it within 14 days
- A personal, non-commercial licence
What you need
- Python 3.10 or later, with pandas and numpy
- Daily end-of-day prices you are licensed to use; we do not supply market data
The data this system needs
Dividend-adjusted daily prices for each fund in the basket.
Code release in preparation
Crane_ETF is being prepared as a code release: its rules written out in plain language and the Python code that runs them, for you to run on market data you are licensed to use. It is not available yet. The planned price is $249, paid once.
Thank you. We will email you once, when this system is released.
That did not go through. Please check your email address and try again.
We use your email only to tell you about this release. See the privacy notice.