Pavel Hála

Launching an improved model for signals

Published December 3, 2023

I personally consider the signals generated by our AI model to be the cornerstone of our software. While you can find commodity signals elsewhere, they are all based solely on seasonality. As we’ve explained many times, using just seasonality is like driving by looking only in the rear-view mirror. Not a good idea.

I decided to do better. Not because it is easy, but because it is hard, as John F. Kennedy said. I developed a complex machine learning model capable of generating signals from various types of data, not just seasonality.

That was in 2019. Apart from some bug fixes, I haven’t touched the model since then. It’s remarkable it’s been able to work and produce sensible signals through totally different market regimes over the past four years without retraining.

Over these years, I’ve come up with a number of improvements which I’ve noted down. Finally, I started working on the improved model at the beginning of this year.

I had five main goals:

  1. Improve computational efficiency (make it run faster) and simplify the code structure.
  2. Implement a few clever ideas regarding input data that I devised over the years.
  3. Explore if results can be improved for “hard-to-predict” markets, like energy.
  4. Enable the model to find more outright futures signals.
  5. Develop tools to analyze data flow and the contribution of individual features.

Now that I’m finished, I can declare the first goal 100% complete. I ended up writing entirely new code from scratch. Every operation is now performed slightly differently, from preprocessing and model training to inference. And it’s a magnitude faster. What used to take weeks to compute, now takes days.

The second goal has also been completed. The model takes these types of data as input:

  • Price action
  • Volatility
  • Sentiment and positioning data
  • Seasonality
  • Valuation metrics
  • Term structure dynamics

The main additions and improvements were made in the areas of price action data, volatility, and especially term structure dynamics. I won’t delve into details as this is sensitive information I don’t want to share openly.

Unfortunately, the third goal was a failure. In the original introductory article from four years ago, I warned that the model had difficulties with certain markets, a good example being energy markets. I wanted to find out if these markets are really so hard to predict (as I explained in the original article), or if the model could do better. It turned out it can’t. Yes, there are some marginal improvements in certain markets thanks to goal number five, but generally speaking, some markets are really hard. Moreover, despite the major changes in the model, the original pattern seems to be holding: markets that were hard to predict remain so, and those easier to crack continue to be so. It’s not random.

The success with goal number four is what I’m most proud of. You might have noticed that unlike interdelivery signals, there were usually no more than just three signals for outright futures. I wondered if there were naturally more good opportunities in spreads, or if the model’s performance was somehow hampered on outright futures. The most obvious cause would be the inherently much smaller size of the training dataset for outright futures. I came up with a clever way to get around this obstacle, and it seems to really help. There are now more futures signals, at least for now.

And finally, goal number five was no less important. The original model was mostly a black box, and apart from comparing testing losses, I could do very little to find out how the model was performing and, more crucially, how individual features contributed to successful predictions. Now, I have my own set of tools to debug the model, which undoubtedly contributed to better performance in some commodities and greater success in finding more outright futures signals.

Now, I do not claim there will be groundbreaking improvements in the signals. Anyone with experience in machine learning will attest that spending 10x more time and developing a model 3x more capable usually results in a 10% – 20% improvement in quality of predictions. The same applies here. The new model arguably brings many improvements, but don’t expect miracles. Predicting markets is hard, and it’s not a coincidence that I haven’t seen any such signals elsewhere.

Also, remember the signals’ model is not a trading system, meaning there are no entries/exits, or profits/losses. Its sole purpose is to alert you about potentially interesting market opportunities, so that you don’t have to spend hours every week screening the markets. It’s been very successful in this role, as it alerted us to many great opportunities over the years that we could have otherwise overlooked. But you must do your own proper analysis of these opportunities. Some of them may not develop into actionable setups, the situation can suddenly change due to some fundamental news, or the model can simply be wrong.


Trading signals are generated by a complex machine learning model and are not intended for actual trading. Trading signals should be used for educational purposes only. SpreadCharts s.r.o. (the company) or its representatives bear no responsibility for actions taken under influence of the trading signals or any other information published anywhere on this website or its sub-domains. There is a risk of substantial loss in futures trading.

CFTC Rule 4.41: Hypothetical or simulated performance results have certain limitations. Unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs, in general, are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown. All information on this website is for educational purposes only and is not intended to provide financial advice. Any statements about profits or income expressed or implied, do not represent a guarantee. Your actual trading may result in losses as no trading system is guaranteed. You accept full responsibilities for your actions, trades, profit or loss, and agree to hold SpreadCharts s.r.o. (the company) and any authorized distributors of this information harmless in any and all ways.

Posted in Announcements and tagged
Pavel Hála

Pavel is the founder and CEO of SpreadCharts.

All articles

Check out also these great articles

Pavel Hála

Insights from the iron ore market

After explaining why Rubber futures can be a great market for traders, we will focus...

Read more
Pavel Hála

Why trade SGX Rubber?

Last time, we introduced the SGX data in the SpreadCharts app and briefly described the...

Read more
Pavel Hála

Introducing commodities in Singapore

We are thrilled to announce that we have obtained a license to distribute market data...

Read more
Pavel Hála

A bunch of new data

A bunch of new data has been added to the SpreadCharts app! This includes data...

Read more