Framework of an Algorithmic Trading Strategy
An Algorithmic Trading Strategy must have the following key components
- Driving Force
- Confirmation
- Movement CheckPoint
- Noise Reduction
Lets study the components one by one.
Driving Force:
It is the core logic behind an trading algorithm at a broad level that sets the tone of further development.
An example of a driving force can be that the user wants to develop a momentum based trading strategy when the stock has risen a few points and is expected to move up further. This logic defines the entry conditions for you and you have to write the equation corresponding to the same.
Confirmation
In this step, you are simple confirming that your driving force conditions are being met
Movement Checkout
You need to ensure that there would be sufficient movement in the prices after an order is placed.
Noise Reduction
This step ensures that when an entry point is identified by an algorithm, it is not based on the very short term erratic movement of the prices but on an actual movement.
Lets take an example to potray each of these components
The driving force for a stratgy is that it buys when there is upward price movement in stocks and is expected to continue for some time. The core algorithm for this can be
sma(close,5) > sma(close,10)
Next to confirm that the upward movement is significant, we can add a volume check as
sma(volume,5) > sma(volume,10)
that verifies that volume is also increasing as the prices are increasing and confirms a momentum. To ensure that this momentum will further continue, we add a volatility parameter as
sma(std(close,5),5) > sma(std(close,10),5)
which ensure that the standard deviation, which can be taken as a reflection of price movement is gradually increasing.
And finally to ensure that buy decision is on the actually movement rather than a short term noise, we can add an algorithm like sma(high — close ,5) < sma(high -close,10)
In totallity the algorithm turns out to be
(sma(close,5) > sma(close,10)) & ( sma(volume,5) > sma(volume,10))& (sma(std(close,5),5) > sma(std(close,5),10) & (sma(high — close ,5) < sma(high -close,10))