Free webinar series on algorithmic trading

I am happy to announce that I will be hosting a free webinar series on quantitative analysis and algorithmic trading. Dates and times for the first shows can be found over here: Tradesignal Webinar Series

Date and Time based patterns

will be the topic of the first webinar. It will focus on the question if there are date based and time based patterns to be found in the markets. I will show some analysis, discuss the results and and provide the source codes to analyse your own markets.

tradesignal webinar

tradesignal webinar

It will go beyond “sell in may…” and I hope you will enjoy 30 minutes of useful information on how to find an edge in the markets using date and time. Register for free: Register

A Simple Neural Network for Indicator Prognosis

Technical indicators are the base of algorithmic trading. So wouldn’t it be nice to know tomorrows indicator value in advance? This article is about how to use a simple neural network to do so. Python and Tradesignal will be used to do the programming.

A single linear neuron

A single neuron / perceptron is the most simple form of a neural network. It consists of several inputs which are weighted and summed up to give the desired output. The correct weighting of the inputs is done in iterations, stepping through the available test data. In the end the hope is, that a function like a*indicator1 +b*indicator2 +c*indicator3 +…=value of tomorrow. But as the real world is not a simple linear function, the correct weightings a,b,c,.. will always change and so will the accuracy of the prediction of the next day’s value.

To test the behaviour of such a simple one layer neural network, I implemented one in my charting software Tradesignal using the Python programming language.

Tradesignal Python Neural Network

The first steps when setting up a Python neural net in Tradesignal is to prepare the data for the training and the live prediction of the network.

The input section defines how much data to use and when to start the training and prediction. The price to predict can be any curve you drag and drop the indicator on.

The variables define the placeholders for the live and training data.

Neural Net: prepare data

To predict tomorrows value of a curve, lines 11 to 15 define the needed inputs. Due to the simplicity of the programming the input values have to be between 0 and 1. So has to be the output. With my example network I will use the change of a curve over time as the predictor values for tomorrows value of that curve.

Feel free to put all your creativity in these most essential lines of the network. You have to give the network the right data to do the prediction. I opted for some inputs on the change of the curve and the change over time. So the network knows where the curve to predict might go. Try your own luck by replacing these lines by other or more indicators and try to give the network a better understanding on where the curve is and where it came from.

Given this simplicity tf the single neuron it can only be trained to predict something like an oscillator, but not the market price itself (not running between 0 and 1)

Lines 20 to 24 take the values of the predictor variables s1-s5, delays them by one bar [1] and as st1-st5 are defined as a serialized variables they will always contain the last x values. The amount of data contained is set with the setbackbuffer command. The 1d array “ot1” will contain the learning goal, the prices of the curve itself.

Defining the Python Neural Net

The next step is to define the needed functions for the neural net. This is strictly Python programming, mostly stolen from kdnuggets.com. Please see the link for more information about this part of the python code.

In Tradesignal the Python code is set between the “once begin…end” command.

Python neural net definition

Passing Data and Training of Neural Network

As Tradesignal provides live data I decided to automatically re-train the network every month. Line 77 holds the needed command

The python code (line 80..) first converts the data from Tradesignal into the needed Python form. In Lines 83-87 the data defined previously is converted into a numpy array. This way it can be fed to the neural network function. Line 89 arranges the inputs ( historic predictor values), line 90 gets the values for the output (the curve to predict) from Tradesignal.

After doing the training in line 93, the new weights are printed. These weights, multiplied by the input values, will give the prediction for tomorrow.

If these weights change dramatically with each new training at the beginning of the month, the neural network most probably is not able to find a stationary linear function to predict the curve from historic values, but only curve-fits the historic data. In this case do not expect the prediction to be too useful.

Python neural net training

Plotting the output

The last task after the training is to use the latest value of the predictor variables to calculate the prediction for the next bar.

In line 113 this is done in python, and in line 108/109 this prediction is transferred from Python to Tradesignal and plotted on the chart.

Python neural net output

Testing the Neural Network

The first test of the neural net is done with a simple sinus curve. As it can be seen the prediction (magenta) is quite close to the actual curve (blue).

This can also nicely been seen on the scatter plot. It shows the correlation of the level of the actual curve vs. the prediction. If this would be a straight line you would have the perfect prediction. The more the prediction deviates from the straight line, the higher the error is.

The network is using the last 25 values of the predictor variables to calculate the prediction for the next bar. For some reason it could not capture the tops and bottoms, but in general it did a good job in learning to predict the sinus curve.

Python neural net sinus test

Predicting a real world indicator

Every cyclical signal is an easy task for a neural network. But oscillators in technical trading are only semi cyclical. Indicators like RSI or Stochastic oscillate between given values, but the time-distance between their highs and lows is not constant. (like it would be with a sinus signal) So it is questionable if a neural network really can learn to predict tomorrows value of the oscillator. But let’s give it a try.

On the chart below I used a momentum based oscillator as the curve to be predicted. Like demanded by the simple programming it is oscillating between 0 and 1. It shows some cyclical behaviour, so the neural network might be able to guess tomorrows value.

Python neural net momentum test

The network has been trained using the last 500 data points and is re-trained every beginning of a month. The visual examination of the curve and the prediction (blue & magenta) shows a close correlation. This is confirmed by the scatter chart. The shape is somehow cigar like, which is not the perfect fit of the sinus curve, but better than guessing and flipping a coin. So there might be some edge in using such a simple neural network in trading. Give it a try!

Detecting Support and Resistance Levels

Support & Resistance levels are essential for every trader. The define the decision points of the markets. If you are long and the market falls below the previous support level, you most probably have got the wrong position and better exit.

The detection of support and resistance levels is usually highly subjective and based on the analysts experience. In this article I will use a simple algorithm to detect the levels and show them on the chart.

The first and second deviation of a curve

If you remember your high school math class you have heard about the first and second deviation of a curve and how to use it to find the turning points and extremes of a curve,

The deviation of a curve is nothing else than the momentum of a curve. It defines the slope of the curve. If the slope of a curve is zero, you have found a local extreme. The curve will change from rising to falling or the other way round.

The second deviation, or the momentum of momentum, shows you the turning points of the first deviation. This is important, as at this point the original curve will switch from acceleration to break mode.

But don’t worry about the theory behind the indicator, see the chart below to get the idea.

First the market data is smoothed.

Second the momentum of the market is calculated. Third the momentum of the momentum is calculated.

If the second momentum crosses above zero, the first momentum will have local low and the market will be in a state when the trend comes to an end.

Support and Resistance explanation

Algorithmic turning points

Using the logic laid out above the support&resistance indicator will show the turning points of the market in a timely manner.

Depending on level of market-smoothing it will show the long term or short term turning points.

support and resistance

If you are a trend follower you might only be interested in support levels. Therefore I added the possibility to use the Wells-Wilder Directional Movement Index as a trend filter.

support and resistance DMI filter

Tradesignal indicator code

I used the Tradesignal software suite to program this indicator. The code used is shown below.

It first calculates the first and second deviation of the smoothed market, and in a second step runs the turning point detection.

Tradesignal indicator code

Analysis done using the Tradesignal software suite and data from Refinitiv. Thanks!

Overnight Risk Premium in Equity and Commodity Markets

Over the last 20 years equity markets and ETFs did a significant part of their total performance over night. This article will examine the relationship of in-session moves vs. the out-of-session moves of ETFs and commodities.

The overnight risk premium

As an investor you can expect to get paid for taking risk. If someone sell its stock to you he gets the risk free return for holding cash,  but you will have to finance the risk of the stock moving against you. This risk is quite low when the market is open and liquid, as you could always sell the stock in case of an adverse movement. But when markets are closed you have to bear a higher risk as you will be bound to your position until the markets opens on the following day.

According to this theory the market returns over night should be positive, to compensate you for the higher risk of holding a position you can’t liquidate immediately. Let’s see if there is some truth in this theory and how big the overnight risk premium might be.

Test code and data

To test the theory I took daily market data from Refinitiv and used the Tradesignal code below to sum up the percent values of daily and overnight moves.

Tradesignal overnight performance test code

Tradesignal overnight performance test code

ETFs overnight risk premium

The chart below shows the outcome of the calculation for the QQQ ETF.  As it can be seen, the good performance over the last years has happened mostly when markets where closed. Even during the financial crisis the overnight returns have mostly been positive.

QQQ overnight risk premium

QQQ overnight risk premium

 

Having a look at the distribution of returns you see quite a different behaviour on e.g. a rolling sum of 10 day or night moves. The daily open to close returns show a higher tendency for big moves than the overnight move. So from a risk perspective the day session bears more risk than the night session.

QQQ overnight returns distribution

QQQ overnight returns distribution

 

QQQ is not the only ETF showing this excess overnight performance. The overview below gives you the data. The numbers show the sum of percent moves since 2001. (starting at 100)

SPY ETFs overnight performance analysis

SPY ETFs overnight performance analysis

A look at commodities

With futures and commodities this overnight effect is not as prolonged as with equities. Sometimes it even is non existent at all.

The chart below shows the overnight and daytime performance of the German Bund future. Beside the phase from 2015 to 2017 the overnight movement did not add to the total performance.

Bund Future FGBL overnight risk premium

Bund Future FGBL overnight risk premium

 

The december future on emission certificates (chart below) shows no significant overnight movement at all.

CFI2 Emissions overnight performance

CFI2 Emissions overnight performance

German power, yearly contract, shows a strong negative overnight performance.

F1BY overnight performance

F1BY overnight performance

Implications for trading

As the overnight move has got a significant impact on the total performance of equity markets, it will also have implications on the design of a trading strategy. A first implication of this overnight effect might be that you should not be short over night in equity markets, and you might not want to open your long position at the beginning of the day.  But keep in mind, if everyone knows the trick, this overnight movement will have implications for the first and last hour of trading. This will be a topic for another article…

 

Profit from large daily moves

Whenever the market shows an exceptional day ranges it is time to take bite. See how you can profit from large daily market moves.

Open-Close Range

When looking at any chart, you will surely notice that the large candles tend to close near the high or low. This is due to herding. Once the market is moving significantly, everyone hops on and the large move becomes even larger. This is true for daily, weekly and intraday candles.

The chart shows an indicator which plots the daily move. Every opening is set to zero and the absolute move of the day is drawn. Around these normalised candles a long term 2 standard deviation volatility band is drawn.  Right now the 2 standard deviation volatility for SPX is about +/- 46 points.

Take a bite before the market closes

As you can see this +/-46 point barrier above/below the opening of the day is a wonderful entry point. If you enter long 46 points above the opening and go short 46 points below the opening nearly all entries would have lead to a profitable trade. To get an even higher probability of success you can volume as a confirmation. Large moves must also show high volume. The exit is done at the end of the session. This analysis does not give any indication for the next days move. So be fast, take your bite and go home with a small profit and no overnight position.

No free lunch

On the chart it looks easy, but be careful. As an example the last bar shown on the chart first crossed the band to the downside, reversed and crossed above the upper band. So you will need to use a trailing stop to lock in profits and avoid to take the full -46 to +46 points trade as a loss!

 

 

 

 

Python Regression Analysis: Drivers of German Power Prices

German Power prices can be explained by supply and demand, but also by causal correlations to underlying energy future prices. A properly weighted basket of gas, coal and emissions should therefore be able to resemble the moves of the power price.  This article will introduce multivariate regression analysis to calculate the influence of the underlying markets on a given benchmark. It is an example of  a machine learning algorithm used in analysis and trading.

Multivariate regression analysis

Continue reading

How to detect unwanted curve fitting during backtest

Whenever you develop an algorithmic trading strategy, unwanted curve fitting is one of the most dangerous hazards. It will lead to substantial losses in real time trading. This article will show you some ways to detect if the performance of your algorithmic trading strategy is based on curve fitting.

Curve fitting – what is it?

Every algorithmic trading strategy will have some parameters. There is no way around it. You will have to decide what length your indicators have, you will have to specify a specific amount for your stop loss or profit target. Beside the actual rules of your strategy the chosen parameters will usually significantly influence the back-test performance of your strategy. And with any parameter you add the danger of curve fitting rises significantly. Continue reading

The Edge of an Entry Signal

When developing a new trading strategy you are usually confronted with multiple tasks: Design the entry, design the exit and design position sizing and overall risk control. This article is about how you can test the edge of your entry signal before thinking about your exit strategy. The results of these tests will guide you to the perfect exit for the tested entry signal (entry-exit combination)

Quality of an Entry Signal

When you develop a new idea for an entry signal there are two things you would like to see after the entry: no risk and fast profits. This would be the perfect entry with the highest possible edge. In reality the market response to your entry will be risk and chance. With a good entry the upside would outnumber the downside. Continue reading

The Edge of Technical Indicators

Classical technical indicators like RSI and Stochastic are commonly used to build algorithmic trading strategies.  But do these indicators really give you an edge in your market? Are they able to define the times when you want to be invested? This article will show you a way to quantify and compare the edge of technical indicators. Knowing the edge of the indicator makes it an easy task to select the right indicator for your market.

The edge of an indicator

Any technical indicator, let it be RSI, moving averages or jobless claims, has got a primary goal. It should signal if it is a wise idea to be invested or not. If this indicator signal has any value, on the next day the market should have a higher return than it has on average. Otherwise  the usage of no indicator and a buy and hold investing approach would be the best solution.

The edge of an indicator in investing consists of two legs.

  1. the quality of the signal
  2. the number of occurrences

Continue reading

Daily Extremes – Significance of time

Analyzing at which time daily market extremes are established shows the significance of the first and last hours of market action. See how different markets show different behavior and see what can be learned from this analysis.

Probability of Extremes

A day of trading usually starts with a lot of fantasies for the future, then we try to survive the day and end it with a lot of hope for tomorrow. This psychological pattern can also be shown when analyzing intraday market data. A high level of fantasies usually leads to a strong market movement, and thus market extremes can often be seen near the beginning or the end of the trading session. Continue reading

Noisy Data strategy testing

Adding some random noise to historic market data can be a great way to test the stability of your trading strategy. A stable strategy will show similar profits with noisy and original data. If the noise has a great impact on your results, the strategy might be over fitted to the actual historic data.

Synthetic market data?

Generating completely synthetic market data to test algorithmic trading strategies is a dangerous endeavour.  You easily lose significant properties like classic chart patterns or the trend properties of your market. Continue reading

Factor investing in portfolio management

Factor investing has been around in portfolio management for some years. Based on algorithmic rules it became the big thing in trading and the ETF industry. But is there still some money to be made? Is small beta still smart or just beta? This article will give you a Tradesignal framework to test the factor investing ideas by your own.

Factor investing

Buy and hold has been a profitable approach in investing. But customers ask for more. So technical analysis came around and held up the promise that market timing is possible. As the returns did not match this promise, algorithmic trading was invented. Clearly defined rules made it possible to backtest any given strategy, and if done properly, the returns equal the ones promised during the backtest. But this requires a lot of intellectual power and relies on cheap execution, so these returns are usually not available to the public. Continue reading

Dollar Cost Averaging Investment Strategy – success based on luck?

This article is about the dollar cost averaging investment strategy and the influence of luck in it.

The Dollar Cost Averaging Investment Strategy

To invest parts of your income into financial markets has been a profitable approach, especially in times when bond yields are low. One approach to do so is the dollar cost averaging investment strategy. Continue reading

Historic Bear Markets & Crashes (business as usual)

Since S&P500 has lost 20% from its top in 2018 and everybody is talking about bear markets. See what has happened in history.

We all have been spoiled by artificially low volatility over the last years.

Now people blame the gone-wild president or algorithmic trading for the market correction, but let us have a look into history to see how common market corrections have been over the last century. Continue reading

Overnight vs Daytime Performance & Volatility

Analysing the market performance of the day session vs. the overnight movement reveals some interesting facts.

Daytime vs. Overnight Performance

The chart below gives a visual impression on where the performance of the SPY ETF is coming from.

The grey line represents a simple buy and hold approach. The green line shows the performance if you would have held SPY only during daytime, closing out in the evening and re-opening the position in the morning. Continue reading

Bullish? Buy stock or sell put option?

So you are bullish on a specific stock, but you also have realised that timing is major problem? So what would be the best strategy to implement your bullish opinion but avoid the problems of any timing strategy?

Selling a put option might be the answer.

Bullish probability

For discussing this question let’s use the current Apple chart as an example. The question is, if you are bullish on apple, should you buy 100 Apple stocks right away or should you sell an at-the-money put option. To find the pros and cons of these two possibilities let’s have a look at some charts. Continue reading