ProRealTime
Un Forum pour discuter des méthodes de trading que nous utilisons, de nos recherches...

Backtests en stock

par plataxis » 14 Déc 2015 22:24

Bonjour,

J'ai l'intention de poster ici des backtests qui me semble intéressants à partager parce qu'ils témoignent d'une idée particulière qui peut inspirer quelqu'un. Bien sûr, un backtest ne dit rien d'autre que ce qu'il dit : sur telle période en tradant systématiquement de telle manière vous auriez gagné / perdu tant. Quant à prévoir ce que ça donnera à l'avenir, c'est évidemment très incertain voire parfaitement hasardeux.

Mes outils de prédilections sont PRT et takaticks "petit robot", car ils sont facilement utilisables par tout un chacun, mais bien sûr libre à chacun d'enrichir la file avec d'autres codes qui vous paraissent intéressants sur ses outils préférés (MT4, etc.)

J'ai déjà un peu commencé avec le RSI UT15 min et le système des "turtles". j'envisage d'en tester d'autres (ou de pointer vers des files qui en proposent), en particulier pour "jouer" les indicateurs de façon "frontale" comme je l'ai vu ailleurs mais je me contente de ce teasing pour le moment, avec un titre qui sonne bien pour sa référence tintinophile ;) , et pour faire un exercice de diction (répétez le 10 fois très vite :mrgreen: ).

Re: Backtests en stock

par plataxis » 16 Déc 2015 22:12

Voici un premier backtest de la série "brut de décoffrage" : MACd dans son expression la plus basique (inversion des positions à chaque inversion de signal) : depuis aout 2011, il ne perd "que" 1240 points, ce qui est une performance décente pour une utilisation aussi brutale d'un indicateur impliquant d'être en permanence sur le marché.

Spoiler:
Code: Tout sélectionner
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé

indicator1 = MACDline[12,26,9](close)
indicator2 = ExponentialAverage[9](MACDline[12,26,9](close))

// Conditions pour ouvrir une position acheteuse

c1 = (indicator1 >= indicator2)

IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position acheteuse

c2 = (indicator1 <= indicator2)

IF c2 THEN
SELL  AT MARKET
ENDIF

// Conditions pour ouvrir une position en vente à découvert

c3 = (indicator1 <= indicator2)

IF c3 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position en vente à découvert

c4 = (indicator1 >= indicator2)

IF c4 THEN
EXITSHORT  AT MARKET
ENDIF

// Stops et objectifs

Re: Backtests en stock

par plataxis » 20 Déc 2015 19:21

Sur suggestion de BillyRayValentine, un petit test sur stratégie hyper simpliste : vendre sous la MM20, acheter au dessus en hebdo : pas rentable sur le CAC depuis 3 ans :

Spoiler:
Code: Tout sélectionner
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé

// Conditions pour ouvrir une position acheteuse
indicator1 = close
indicator2 = Average[20](close)
c1 = (indicator1 > indicator2)

IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position acheteuse
indicator3 = close
indicator4 = Average[20](close)
c2 = (indicator3 < indicator4)

IF c2 THEN
SELL  AT MARKET
ENDIF

// Conditions pour ouvrir une position en vente à découvert
indicator5 = close
indicator6 = Average[20](close)
c3 = (indicator5 < indicator6)

IF c3 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position en vente à découvert
indicator7 = close
indicator8 = Average[20](close)
c4 = (indicator7 > indicator8)

IF c4 THEN
EXITSHORT  AT MARKET
ENDIF

// Stops et objectifs

Re: Backtests en stock

par plataxis » 20 Déc 2015 19:33

Dans la foulée une autre expérience simpliste : acheter / vendre quand Macd (tendance) et stochastique (plutôt range) sont d'accord : pas gagné non plus...

Spoiler:
Code: Tout sélectionner
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé

// Conditions pour ouvrir une position acheteuse
indicator1 = MACDline[12,26,9](close)
indicator2 = ExponentialAverage[9](MACDline[12,26,9](close))
c1 = (indicator1 > indicator2)

indicator3 = Stochastic[14,3](close)
indicator4 = Average[5](Stochastic[14,3](close))
c2 = (indicator3 > indicator4)

IF c1 AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position acheteuse
indicator5 = MACDline[12,26,9](close)
indicator6 = ExponentialAverage[9](MACDline[12,26,9](close))
c3 = (indicator5 < indicator6)

indicator7 = Stochastic[14,3](close)
indicator8 = Average[5](Stochastic[14,3](close))
c4 = (indicator7 < indicator8)

IF c3 OR c4 THEN
SELL  AT MARKET
ENDIF

// Conditions pour ouvrir une position en vente à découvert
indicator9 = MACDline[12,26,9](close)
indicator10 = ExponentialAverage[9](MACDline[12,26,9](close))
c5 = (indicator9 < indicator10)

indicator11 = Stochastic[14,3](close)
indicator12 = Average[5](Stochastic[14,3](close))
c6 = (indicator11 < indicator12)

IF c5 AND c6 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

// Conditions pour fermer une position en vente à découvert
indicator13 = MACDline[12,26,9](close)
indicator14 = ExponentialAverage[9](MACDline[12,26,9](close))
c7 = (indicator13 > indicator14)

indicator15 = Stochastic[14,3](close)
indicator16 = Average[5](Stochastic[14,3](close))
c8 = (indicator15 > indicator16)

IF c7 OR c8 THEN
EXITSHORT  AT MARKET
ENDIF

// Stops et objectifs

Re: Backtests en stock

par salador » 20 Déc 2015 23:10

Salut,

Je n'avais jamais essayé...


Je viens de tenter un backtest sur AB INBEV, très simple et ça rapporte :
Bougies mensuelles
Une moyenne mobile 20, un rsi 5 avec sa moyenne mobile 2.

Achat si le prix > MM20 et au croisement par le haut du RSI avec sa MM2.
Revente si le prix passe sous la MM20.
Mon soucis, c'est que je voudrais simuler un renfort à chaque croisement du RSI avec sa MM2...

Comment faire via la création simplifiée?

Sans renfort, avec un capital de 10000, et en achetant 100 actions AB INbev à chaque ordre, entre 2001 et 2015 j'arrive à 17705 euros...

Ah, si la bourse était aussi facile qu'un backtest! :D

-> n'empêche, si j'obtiens le même genre de résultat sur 30-40 actions, cela peut valoir la peine d'essayer :P

Re: Backtests en stock

par plataxis » 21 Déc 2015 10:56

La création simplifiée ne permet qu'une seule position à la fois (d'un nombre d'actions quelconque). Si tu veux renforcer, donne moi le code et je regarderai. Note tout de même qu'un backtest d'achat est souvent positif en période haussière, ça ne veut pas dire qu'il est gagnant en toute condition...

Re: Backtests en stock

par salador » 21 Déc 2015 11:37

Entre 2001 et 2015, il y a eu quelques périodes baissières, dont des fameuses!

Je vais pas t'ennuyer avec ça, c'était juste pour m'amuser.

Par contre, peut-on demander qu'à chaque signal le capital soit totalement investit?
Parce que faire un backtest avec un nombre de titres fixes n'a pas de sens lorsque le cours d'une action est passé de 40 à 100 en 15 ans par exemple...

Re: Backtests en stock

par plataxis » 21 Déc 2015 12:39

J'ai vu un paragraphe sur le MM dans la doc de PRT : https://www.prorealtime.com/fr/pdf/probacktest.pdf

Je ne l'ai pas encore potassé : bonne lecture :)

Re: Backtests en stock

par salador » 22 Déc 2015 18:05

Salut,

Donc, je récapitule :

Données mensuelles

Conditions d'achat :
prix>MME50
RSI5 croise à la hausse sa MM2
Je mets le budget initial à chaque ordre, ici 10000 euros

Conditions de sortie :
prix croise à la baisse MME50

Quelques tests :








C'est pas beau tout ça?

Re: Backtests en stock

par salador » 22 Déc 2015 18:12

Je pensais avoir atteint des sommets avec Kinepolis (x7), jusqu'à ce que je backtest Microsoft. La classe, non? :D



ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé