We used to have seasonal signals in the app, which is something you can find in many other tools. They are based on historical seasonal price patterns. However, such signals are backward-looking only as they completely ignore the current state of the market. It’s like driving a car using just the rear-view mirror, which doesn’t sound like a good idea at all.
We wanted to do better and offer something that makes sense, something we can trust ourselves. Therefore we launched brand new trading signals based on various types of data, not just seasonality.
Our new signals take this data as input:
- price action
- Commitments of Traders (sentiment)
- structural changes in the futures curve
- valuation metrics
You can’t think of these various types of data as being independent. For example, favorable price action would create a much better opportunity if it is coupled with elevated sentiment readings. When you think about all such possible interactions in the data, you quickly become overwhelmed by the vast amount of possibilities and non-linear interdependencies.
Therefore, when you use many types of data, you need a more powerful model. And that’s exactly what we have delivered. I took personal responsibility for the development of the new signals and developed them myself. I built on my experience in advanced machine learning in the fields of astrophysics and algorithmic trading to develop a sophisticated model of the commodity markets. It makes predictions in “real-time”, continually learns on the new data, and adapts to the everchanging market environment. While I don’t like the term Artificial Intelligence because it’s often misused, I think it’s rightfully deserved here. The incredible versatility of the model further confirms this as it can learn to trade tens of commodities, many of these markets behaving totally different from each other.
However, it’s essential to know how to use these signals. Even the best tools would be useless without the correct interpretation.
How to use the trading signals?
First of all, understand what the signals are and what they are not. They are not an indication to make actual trades. We don’t provide investment advice. It would not be even possible as every person has a different investment horizon, risk tolerance and trading style. A valid trading signal therefore tells you that there is a trading opportunity in a given market. It’s your responsibility to do proper analysis before making any investment decisions.
The signal chart is composed of three subcharts. It’s the COT position index, seasonal curves, and finally the signal itself in the bottom subchart. The COT and seasonality are shown because they are used by most of our users to get a quick assessment of the situation in a given market. The signal itself, however, is not based just on COT and seasonality. The model generating the signal takes many more types of data as an input. The proof is that you’ll sometimes find signals that contradict either seasonality, COT, or both.
The signal’s value is a positive number (can’t drop below zero). It depends on the expected risk and potential reward of the underlying over the next three months. But don’t think about it as a return (or risk) exactly after three months. It’s more complicated than it sounds. Imagine two scenarios – in the first one, the price shoots higher for a short period of time and makes a really huge move, only to stall or even move in the opposite direction for the rest of the examined period. In the second scenario, the price moves lazily higher over most of the three-month period. While the eventual move in the right direction is much smaller than in the first scenario, the risk is also lower. We intuitively feel that both scenarios are great opportunities and would probably trade them both in reality. Yet if we try to describe them statistically, they would look totally different.
For this reason, I developed a special algorithm that tries to rate the “true goodness” of an opportunity. And that’s precisely the quantity that my machine learning model is trying to predict, which you can observe as the signal’s strength in the app. So the signal expresses whether it’s a good idea to be in the underlying from the risk/reward perspective right now. The signal’s value is kept unitless because, as I said, the actual estimation of the “true goodness” of an opportunity is more complex, and the result is not easily interpretable.
The signals are scaled so that values above one generally constitute a good opportunity (valid signal). The precise threshold can, however, slightly differ between various commodities. The deviation increases with the rising strength of the signal. So while the signal quality around 1 is roughly comparable across various commodities, I wouldn’t put much weight on comparing a signal with 1.5 and 2.0 in two different commodities. What is universally interpretable is the trend. When the signal’s strength is increasing, the opportunity is improving. On the other hand, if it’s decreasing, the opportunity is becoming less interesting.
The new trading signals are generated once a week during the weekend (after new COT data is released). However, the existing signals are updated every day, so that you can see whether the opportunity is becoming better or worse. During the addition of new signals, the model always selects the best active signal for each commodity that is above a certain threshold (currently 0.8). So, if the model finds a new better trading signal for some commodity, it replaces the old one. If the new signal is worse or doesn’t exceed the minimum threshold, the old signal is kept in place. If the old signal stays below the minimum threshold for a certain amount of days, it’s purged out of the signals altogether.
The model is deployed on tens of markets. That’s a wonderful feat on its own as today’s huge machine learning models (a.k.a. artificial intelligence) are known for being carefully optimized to a very narrow task with an enormous amount of computational resources. But nothing’s perfect. There are some markets where the model is not working really well. Detailed analysis reveals it’s mostly not the fault of the model itself, rather than the input data that are not relevant for a given market. A good example is futures on stock indices or financials where the types of data listed at the beginning of this article are not much relevant. Another example are energy market (but not as bad as indices) which is obvious again because like I said many times, you need to watch fundamentals when trading energies. The good thing is that in most cases, the model itself learns it can’t make successful predictions on these markets and doesn’t flash any valid signals.
The bad performance in some commodities/futures sometimes isn’t caused by incorrect input data. As it turns out, some markets are inherently less predictable than the others. You can find many research papers dedicated to this topic. Many researchers have empirically proved this, so it’s not just something only I’ve been able to observe. Moreover, the behavior of markets fundamentally changes over long periods of time. Some commodities may suddenly start behaving as it has never before. Consequently, it’s predictability goes down. While our model would eventually adapt, it may go through a period of bad predictions in that particular market.
Even if we have the right input data and the commodity’s behavior is historically well predictable, you can never be sure the signaled opportunity will play out as expected. That’s because markets are inherently probabilistic and chaotic. Every signal points to a higher probability of some scenario occurring, not a certainty. In a day or two, something can happen (weather, geopolitics, etc.) that could turn the market upside down and make the recent prediction irrelevant. Fortunately, our model would see this in the underlying data and adjust the prediction accordingly. This is its greatest advantage – it doesn’t rely on some old obsolete seasonal patterns. Instead, it makes decisions in real time.
Trading signals are generated by a complex machine learning model and are not intended for actual trading. Trading signals are intended 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.