I created a couple of Jupyter Notebooks in Python to read individual futures contracts and concatenate them into a single P&L. Back adjusting panama Style is useless if you want to assess “Buy and Hold” of an asset through the futures markets. Although proportional ratio adjusting will do the trick.
The route I took was to create an index by assessing the return on individual futures contracts. The code gives the ability to choose to roll based on how far out you want to go: E.G. 30 days or 500.
Since the Eurodollar contract is cash settled there is no need to worry about rolling prior to delivery risk but if you wanted to adapt the code to T Bonds by way of example, the adjustments would be simple enough.
Since I designed the code entirely for my own purposes I unashamedly included some hard coding and I did not bother to annotate the notebooks.
My individual contract data came from Pinnacle Data and I have no reason to suppose the data I purchased is anything but accurate and complete.
My interest was primarily in using Eurodollar futures in a risk parity scheme and in assessing which contracts to use. The inevitable conclusion is to use the longest dated contracts to access the most positive carry. You can now trade four years out – you can buy December 2023. In earlier years the range was less far reaching and so you may want to restrict your time series to a period when your “range”, your choice of maturities was available.
In any event the buy and hold geometric return using the longest dated contracts available at any given time since the inception of Eurodollar futures worked out to be somewhere around 1.10% without including the investment of funds not needed for margin. This can vastly increase the return if you are using no leverage but of course the effect of this extra income on total return deteriorates the greater the leverage you employ.
The code is freely available on my gist. It should be easy enough to work out and adapt for your own purposes should you have any interest.