Sunday, December 27, 2015

A trading system on Amazon

by Marcello Belguardi
Trading Systems
Italian version: here.


Introduction:

We may say that when a trading system is robust then it must behave equally well across different instruments and markets as well as on different timeframes; But the opposite is also true: if the trading system works quite well in different contexts then it could be, very likely, sub-optimal, that is, we could surely find something else that works better applied to the asset that we are currently analysing.

We could perhaps say, for example, that a stable system, able to identify the inherent characteristics of the asset graph, i.e. some property of the price series (that remain persistent in time), is therefore robust .

But which properties? Well... we do not know, at least initially, but if we observe the rules of the trading system and we notice that they tend to not change  (and there's no need to re-optimize along the way) that means that we have got it right: we managed to find some dynamic that the graph follows often and we have implicitly extracted a model, despite the fact that price, returns and everything else may be random, or anyway, not stationary.

With a lot of research (and a bit of luck) we can get there.

My work is mostly directed to this: finding simple trading rules suited to a certain entity in such a way that they still apply as time passes (a 10+ years period is ideal for this test on a daily timeframe) excluding or reducing the need for additional optimization, and, at the same time, always reserving a recent period - still part of the backtesting - but where the trading system operates in the dark (namely out-of-sample) that is on a price time series previously never used during the design of the algorithm: a time series long at least 4 years, in the context of a daily timeframe.

Therefore we would say: low complexity of the algorithm, minimal or absent optimization and backtesting period long enough will guarantee that the probability that the trading system continues to operate properly in the future is reasonably high (although we don't have 100% security: the old adage that says more or less that past performance does not guarantee future returns is still valid...).


Another aspect to consider: we tend to try to design trading systems that have rational rules; in the case of fundamental analysis, or also with classic technical analysis or the modern technical analysis the rules that we seek typically have logical assumptions. We pretend that a protocol works on the basis of human logic or common sense. However this has inherent limitations .

The reality however is that markets, and especially in the short term (and it's on the short or very short time that we focus on) behave, say, in an irrational way. The supply and demand drive the price movements and the resulting graph looks random, or at least so it's perceived. Also on the short-term the analysis of the fundamental data of an instrument can not give a good indication of the possible direction of prices.

For us humans it is difficult to extract a model of the signals of a trading protocol. At the same time we know that prices may contain, let's say, a series of signals . This can happen because, in my opinion, the market players, actions and reactions, have recurrent (and often not trivial) patterns. The same signals that when have an almost constant distribution can made a trading protocol.

I deduced that a technique to extract these signals may be the one of data mining;


We have an idea now of which possible not human technique can be used for algorithm design.
Let's now proceed to describe the trading system in question.


The system:

In the example that follows I will show that it's possible to find strange price patterns which, if satisfied, could give reliable buy and sell signals: we look for patterns designed to works for one specific asset and for that one only. We focus on the Amazon stock price series.

Test:

The proposed trading system applies only to Amazon (AMZN), and what follows is the equity curve since the year 1997. (Click to enlarge)


Piattaforma - ProRealtime

These the performances during the period:






Of the 458 trades we have a winning percentage of 67.25% on average since May 22, 1997 with a final profit of + 264.36%. Time on market 16.44%. The average trade is 57.72 USD which easily absorbs slippage and commissions of a professional broker. (The initial capital is 10,000 and in this case we do not re-invest the profits).

The drawdown is 897 USD, not that much;



That's all for now. Good trading.

This post is for demonstrative or educational purpose only. We do not recommend to use the above system or ideas with real money. Trading is not suitable for everyone and there is a high risk of losing money.



8 comments:

  1. Salve, sempre molto interessante leggerla. Volevo chiederle un chiarimento sul report. Vedo che l’average gain delle operazioni in gain e l’average loss di quelle in loss grosso modo si equivalgono, essendo +150$ e -133$. Quindi se qualche trade andasse peggio del solito sarebbe facile erodere il profitto di una o più operazioni in gain. Discorso analogo per l’average gain complessivo di 57$. Le chiedo se entrambi i valori di average gain non dovrebbero essere più alti, in ordine del doppio rispetto a quelli attuali, per garantire al sistema una maggior capacità di recupero in caso di drawdown (che in reale sappiamo essere sempre peggiore delle stime). Grazie se vorrà rispondermi.
    Cordialità, Blade.

    ReplyDelete
    Replies
    1. Mi fa piacere che lo trovi interessante e grazie del quesito. Quando l’accuratezza del sistema (la percentuale dei trade vincenti) aumenta e si avvicina al 70% in generale per sistemi reversal il cosiddetto “payoff” ovvero il rapporto tra trade vincente e trade perdente si avvicina ad 1. Cioè come ha giustamente osservato Lei il sistema guadagna poco più di quanto perde: però teniamo presente che storicamente abbiamo molti più trade vincenti che perdenti. Questo consente di avere un profit factor > 2 (rapporto tra totale guadagni e totale perdite) che è piuttosto buono: cioè dopo 458 trades il sistema ha guadagnato più del doppio di quello che ha perso.
      Il trade medio non è particolarmente alto ma ancora consideriamo che si sta in posizione solo in media 2 giorni.
      Essere in posizione solo 2 giorni diminuisce il rischio generale (per esempio il rischio di essere a mercato proprio durante un sell-off). Non dimentichiamo che il drawdown tende ad essere inversamente proporzionale all’accuratezza del sistema e direttamente proporzionale al numero di giorni in cui si sta in posizione. La velocità con la quale si esce da un drawdown è funzione del numero di trade consecutivi vincenti medi, che è più alto in un sistema più accurato, che ha cioè una percentuale di trade vincenti più alta. Credo che scriverò un post che tenti di dare un senso a tutte questi ratio riportati dal performance report che sono ovviamente tutte legati fra loro.
      Per concludere: trade medio più alto, a parità di volatilità, implica avere un sistema che sta in posizione più giornate consecutive. Altri sistemi soddisfano questo requisito. Il suddetto sistema ha invece un carattere un po’ differente ma, come ho cercato di sostenere, a mio avviso, ogni sistema ed ogni titolo sono differenti. Spero di averle fornito qualche nuovo spunto di riflessione. Saluti. Buon Anno.

      Delete
    2. Grazie per la risposta, davvero ineccepibile. Trovo molto stimolante questa logica di sistema essendo io, come avrà capito, più legato a logiche dell’altro tipo. Da questo momento però inizierò a sperimentare seguendo anche il suo insegnamento. E l’idea di base potrebbe essere proprio quella di creare un sistema che produca profitti e perdite costanti nel tempo, ossia uguali e limitati (dal tempo a mercato, da un target %profit) per ridurre il rischio e determinare una distribuzione dei profitti (e delle perdite) il più omogenea possibile. Sarà un piacere continuare a seguirla. Le auguro Buon anno. Cordialità, Blade.

      Delete
    3. Ancora grazie mille del feedback, e buon lavoro. Alla prossima.
      Marcello.

      Delete
  2. Marcello i tuoi articoli sono sempre molto interessanti/stimolanti e denotano un gran lavoro di analisi e studio. Leggendo il tuo ultimo articolo mi sono però reso conto che so molto poco di "algoritimica genetica". Per cortesia potresti consigliarmi qualche libro da cui partire. Un saluto e un augurio a continuare sempre così. Io da parte mia continuerò a seguirti. Leon

    ReplyDelete
  3. Grazie! Se vuoi approfondire Murray Ruggiero spiega piuttosto bene gli algoritmi genetici applicati al trading nel suo libro "Cybernetic Trading Strategies". Il libro e' datato ma piuttosto noto e diffuso. Marcello.

    ReplyDelete
  4. bel lavoro, bravo.semplice ma efficace

    ReplyDelete