Hi, Shrewd!        Login  
Shrewd'm.com 
A merry & shrewd investing community
Best Of MIBest OfAll BoardsThe Shrewd’m WeeklyLearn to InvestHow to Become Shrewd
Search
Shrewd'm.com Merry shrewd investors
Search
Best Of MIBest OfAll BoardsThe Shrewd’m WeeklyLearn to InvestHow to Become Shrewd


The week's question
In December 2024, in the thread "Re: BRK: Why Not XOM?", BreckHutHigh asked the members: "What about the long road trips with kids?" This week it is put to everyone again. The button below opens the small thread re-asking it - read what others have said so far, then give your own answer as an ordinary reply.
Answer this questionContinue to Shrewd'mThis note won't appear again
Investment Strategies / Mechanical Investing
Unthreaded | Threaded | Whole Thread (8) |
Author: mechinv   😊 😞
Number: of 6131 
Subject: Using AI to generate backtesting programs
Date: 01/06/25 2:29 AM
Post New | Post Reply | Report Post | Recommend It!
No. of Recommendations: 30
I'm startled by how good the new AI tools are at generating the code I need to do backtests. I asked claude.ai to write a Python program to test a market timing strategy that I had first come across in 2015. The strategy, called "The Buy and Sell Portfolio" was one of 3 timing strategies described in the following blog post:

How To Create Portfolios That Adapt To Market Changes
thetaoofwealth.wordpress.com - How to create portfolios that adapt to market changes

The Buy and Sell strategy has the following rules.
1. Buy the S&P 500 whenever it closes at a 6 month high.
2. Sell the S&P 500 whenever it closes at a 1 year low, and put the proceeds into 5 year treasuries.

The author (Dick Stoken) claims the following results for this strategy.

In sample backtest of Buy and Sell market timing strategy
Backtest period: 1972 - 2010 (39 years)
CAGR: 13.8%
Max drawdown: +6.1%
Max drawdown for buy and hold S&P 500: -37.6%

I had bookmarked this blog post 9 years ago, because I thought the above max drawdown figure looked really good (almost too good to be true).

So I decided to do a post-discovery (out of sample) backtest for the period 2010 - 2024. To do this, I needed to write a program that could fetch daily prices for SPY and implement the buy and sell rules. I couldn't find an ETF that held only 5-year T-bills during this period, so I settled on using IEI (which holds 3 to 7-year T-bills) as a proxy.

To write the backtest program, I went to https://claude.ai and entered the following instructions in plain English:

"I want to back test the following investment strategy. Buy the SPY ETF on 12/31/2009. Sell SPY whenever the price hits a 52-week low and purchase the IEI ETF with the cash from the sale. Sell IEI and repurchase SPY whenever the SPY price hits a new 26-week high. Please provide the Python code to test this strategy from 12/31/2009 to the present using an API to a data source that provides daily closing prices for the SPY ETF."

In a few seconds, Claude generated the Python program I needed. It even offered to calculate the Sharpe ratio and max drawdown stats for me. After running the program, I asked Claude to also calculate the CAGR and compare it to the CAGR of buying and holding SPY.

I noticed that the program used the yfinance Python package to pull prices from Yahoo Finance. I had to install that package on my MacBook using pip install. Here are the results I got after I ran the program:

Post-discovery (out of sample) backtest of Buy and Sell market timing strategy
Backtest Results (2009-12-31 to 2025-01-01):

Trading Strategy Performance:
Final Value: $39,012.64
Total Return: 290.13%
CAGR: 9.50%
Sharpe Ratio: 0.58
Maximum Drawdown: -19.78%
Max Drawdown Period: 2020-02-19 to 2020-03-18

Buy and Hold SPY Performance:
Final Value: $69,283.30
Total Return: 592.83%
CAGR: 13.77%
Sharpe Ratio: 0.73
Maximum Drawdown: -33.72%
Max Drawdown Period: 2020-02-19 to 2020-03-23

Strategy Trade Summary:
Number of Trades: 11

Trade History:
2009-12-31: Switch to SPY
2011-10-03: Switch to IEI
2012-01-25: Switch to SPY
2016-02-11: Switch to IEI
2016-04-18: Switch to SPY
2018-12-19: Switch to IEI
2019-04-05: Switch to SPY
2020-03-12: Switch to IEI
2020-08-10: Switch to SPY
2022-05-09: Switch to IEI
2023-04-28: Switch to SPY

We see disappointing post-discovery results compared to the in-sample test period. This is a common result with most market timing strategies that were discovered around 2010 right after the Great Recession ended.

The CAGR is only 9.5% compared to SPY's 13.8%, and investors in the market timing strategy were still exposed to a -20% drawdown in 2020 - nowhere near as good as the in-sample results.

I hope this post inspires others here to try out claude.ai (and other chatbots) to generate their own backtesting programs.

Post New | Post Reply | Report Post | Recommend It!
Print the post
Members reply directly to mechinv here — and replies get answered. Reading is free; so is joining the conversation. Join Shrewd'm »
This community has written 6,115 posts about Mechanical Investing. The article-length ones it recommended most:
Dividend investing · 52 recs · 2025
Non-Mag7 screen · 34 recs · 2025
OT - Div yields and returns · 32 recs · 2024
Rankings for 19Dec2022 · 29 recs · 2022
OT: Radiscreen Substitute · 29 recs · 2023
Unthreaded | Threaded | Whole Thread (8) |


Announcements
Mechanical Investing FAQ
Contact Shrewd'm
Contact the developer of these message boards.

Best Of MI | Best Of | Favourites & Replies | All Boards | Followed Shrewds | Open Questions | Moving a community