Divergenze tra Strategy in Real e Backtest su TS

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • Thalos
    Senior Member
    • Apr 2010
    • 800

    #1

    Divergenze tra Strategy in Real e Backtest su TS

    Ciao

    Sono due giorni che metto sotto pressione Beep facendolo girare con 4 Ts Bobao ottimizzati su Unicredit, Intesa, Fiat, Eni a Time Frame 15 Minuti con Money Management e Stop Loss.

    E\' stato evidente come chiudendo alle 17.00 lo Strategy e visualizzando successivamente, immediatamente dopo il Back Test i Trade con i relativi risultati siano cambiati..

    Per esempio in UCG nel Trade Real ero in guadagno di 37 Euro, mentre con il Back Test mia ha portato la stessa posizione con una chiusura migliorativa piu\' avanzata sulla barra portandomi il Trade a un guadagno di 75 Euro..

    Cio\' mi ha fatto piacere, ma completamente errato...

    E\' risultata anche a Voi tale Divergenza nei Trade...?

    Allego il Listato del Bobao Ottimizzato per UCG che mi ha dato l\' errore più evidente:

    Buy Script:

    INPUTS: @price(CLOSE), @BandPeriods(11, 10, 30, 1), @BigDev(1, 3, 0.1), @SmalDev(0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(8),

    INPUTS: @trailAmount(200), @trailPercent(10), @stopLoss(80)

    SET TRAILING_STOP = @trailAmount
    SET TRAILING_PERCENT = @trailPercent
    SET STOP_LOSS = @stopLoss

    SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
    SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
    SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
    SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
    SET SignalLine = LR(@price, @SLperiods)


    CROSSOVER(SignalLine, BigBottom)

    Sell Script:

    SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
    SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
    SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
    SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
    SET SignalLine = LR(@price, @SLperiods)

    CROSSOVER(BigTop,SignalLine)
    Last edited by Thalos; 08-10-13, 17:41.
    --- Trend my Friend ---
  • Thalos
    Senior Member
    • Apr 2010
    • 800

    #2
    Oggi di nuovo in prova con parametri modificati, se sbaglia ancora e mette gli ingressi diversi tra Strategy Real time e Back Test bisogna cominciare a preoccuparsi..
    --- Trend my Friend ---

    Comment

    • BMM
      Senior Member

      • Jan 2011
      • 1306

      #3
      beetrader opera prima in real time *senza aspettare* che si completi la barra in formazione , in backtest usi sempre la barra completamente formata, per questo motivo vedi risultati diversi dal backtest

      Comment

      • Cagalli Tiziano
        Senior Member
        • Dec 2007
        • 11252

        #4
        Originariamente Scritto da Thalos
        Oggi di nuovo in prova con parametri modificati, se sbaglia ancora e mette gli ingressi diversi tra Strategy Real time e Back Test bisogna cominciare a preoccuparsi..
        Come ti ha scritto BMM devi capire come avviena la sequenza:
        in real time i prezzi sono quelli del real time, se poi lo spegni e lo riavvii è chiaro che i prezzi saranno quelli di apertura o chiusura della barra dato che altri non ce ne sono.
        Mica se li può inventare...questo sarebbe un errore perchè non conosce la sequenza con cui si è formata la barra.


        Se vuoi fare dei backtest i cui risultati corrispondano sempre ogni volta che riapplichi il segnale, allora nel tuo scirpt devi usare sempre e solo le barre precedenti all\'ultima. Ad esempio, nel Trading System che hai messo sopra, la tua condizione di Buy è:

        Codice:
        CROSSOVER(SignalLine, BigBottom)
        Se la trasformi così:

        Codice:
        CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
        il backtest e la strategia corrispondono perfettamente, perchè non fai mai riferimento alla barra in costruzione.


        Permettimi allora di dirti che non è beeTrader che sbaglia ma sei tu che gli dai delle informazioni sbagliate.
        ..se corri dietro a due lepri, non ne prendi nemmeno una.

        Comment

        • Thalos
          Senior Member
          • Apr 2010
          • 800

          #5
          Ok non dicevo che Beep sbagliava, facevo notare solo questa differenza e giustamente non avevo capito come veniva calcolata la Barra in Beep. anche perche\' ora in questo preciso istante i TS stanno dando in Strategy dei Segnali che se alle 17.00 quando li e vado a rivedermeli in a TS chiuso saranno completamente diversi...

          Mi sorge quindi un quesito, se io il TS lo testo in BackTest con determinati parametri inserendo la stringa REF,...1, quando lo metto in strategy real time come mi comporto per essere sicuro che il comportamento sia lo stesso che ho testato...?

          Perché se lascio il REF..1 in Real l\' Ordine al Broker non arriva in ritardo, in quanto calcolato sulla Barra precedente...?

          Pero\' se metto la Stringa come e\' ora, il Test fatto per settarlo precedentemente non mi serve a niente...?



          Sembra una stupidata, ma sono particolari da capire di fondamentale importanza per il settaggio del TS prima di metterlo in Opera e evitare perdite sul Mercato reale...
          --- Trend my Friend ---

          Comment

          • Thalos
            Senior Member
            • Apr 2010
            • 800

            #6
            Originariamente Scritto da Cagalli Tiziano
            Come ti ha scritto BMM devi capire come avviena la sequenza:
            in real time i prezzi sono quelli del real time, se poi lo spegni e lo riavvii è chiaro che i prezzi saranno quelli di apertura o chiusura della barra dato che altri non ce ne sono.
            Mica se li può inventare...questo sarebbe un errore perchè non conosce la sequenza con cui si è formata la barra.


            Se vuoi fare dei backtest i cui risultati corrispondano sempre ogni volta che riapplichi il segnale, allora nel tuo scirpt devi usare sempre e solo le barre precedenti all\'ultima. Ad esempio, nel Trading System che hai messo sopra, la tua condizione di Buy è:

            Codice:
            CROSSOVER(SignalLine, BigBottom)
            Se la trasformi così:

            Codice:
            CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
            il backtest e la strategia corrispondono perfettamente, perchè non fai mai riferimento alla barra in costruzione.


            Permettimi allora di dirti che non è beeTrader che sbaglia ma sei tu che gli dai delle informazioni sbagliate.
            Inserito il REF... Ora verifico il tutto...
            Last edited by Thalos; 09-10-13, 17:43.
            --- Trend my Friend ---

            Comment

            • Cagalli Tiziano
              Senior Member
              • Dec 2007
              • 11252

              #7
              Originariamente Scritto da Thalos
              Inserito il REF... Ora verifico il tutto...
              Dipende dal tipo ti trading systema che stai testando e come lo hai costruito:

              1) se è uno stop e reverse con calcoli fatti alla chiusura di barra (usi la funzione Date and Time) non c\'è problema perchè il comportamento sarà analogo o comunque molto vicino.
              2) se non è calibrato a chiusura di barra allora lo devi testare in avanti nel tempo se è a TF Daily, se il TF si restringe ecco che il risultato storico sarà sempre più vicino a quello reale
              3) se è a target allora è certo che il risultato storico sarà identico a quello futuro. Infatti se chiudi a taget (x Euro) e il sistema trova il prezzo su una data barra, non ha importanza come si è costruita la barra. IL prezzo c\'è e ci sarebbe stato.
              4) se è target e stop loss, idem come sopra perchè la verifica che farà beeTrader è quella di vedere se prima c\'è il loss e se non lo trova allora e solo allora mette il gain.
              5) se è in trailing stop bisogna assolutamente provarlo nel futuro, tick by tick.
              .6), 7)..e via discorrendo.

              E tutti i software sono fatti così perchè tenere uno storico tick by tick richiede una memoria e accuratezza nella fornitura dati importante. IN genere, e lo abbiamo previsto anche noi, si potrebbe tenere uno storico a tick al massimo di 15 giorni
              e verificare su quello storico come cambia il trading system.

              Se i clienti lo vorranno lo faremo in tempo zero, ma francamente io non lo uso perchè preferisco andare in avanti nel tempo, così non mi serve nemmeno il bouncing (differenza tra prezzo immesso e prezzo eseguito).

              Altra cosa da tenere presente per i TF bassi, sotto o attorno ai 5 minuti: siamo sicuri che a quel determinato prezzo siano passati tutti i contratti che servivano per completare il mio ordine?
              Mi spiego: mi posiziono ad un prezzo di 5 euro per vendere le mie 100 azioni, a quel livello ce ne erano già 2000.
              Il prezzo 5 viene fatto e poi torna indietro. I contratti passati magari erano 2001 e quindi io ne ho venduti solo 1...

              Allora, dato che non c\'è questa certezza ecco che si deve fare una verifica in avanti nel tempo e cercare di fare sistemi che prevedano già il prezzo di uscita in modo da piazzarlo in anticipo e così aumentare le probabilità..

              Per concludere non c\'è nulla che non si possa fare, solo che va fatto con cognizione, pazienza e competenza.

              Noi siamo qui per aiutarvi per tutto ciò che in questi anni abbiamo imparato.
              ..se corri dietro a due lepri, non ne prendi nemmeno una.

              Comment

              • Thalos
                Senior Member
                • Apr 2010
                • 800

                #8
                Sembrava troppo facile per essere vero...

                Ok allora comincio i Test in Real per avere una curva di risposta piu\' verosimile a quella del BackTest.....

                Non ci si puo\' permettere di sbagliare, qui ogni errore si paga molto caro, in ogni senso..
                --- Trend my Friend ---

                Comment

                • TFiutoT384
                  Senior Member
                  • Oct 2009
                  • 566

                  #9
                  Ringrazio Thalos per aver sollevato questo aspetto e Tiziano per la risposta dato che anch\'io ho trovato questo problema, ovvero la divergenza tra il backtest e il reale.
                  il codice è molto semplice:

                  buy scripts

                  # REQUIRED_BARS is used to adjust how many periods will be used to initialize calculations. Default value is 50 periods.
                  # Un-comment and edit the line below to set your own value.
                  # SET REQUIRED_BARS = 50

                  INPUTS: @periods(10), @trailAmount(100), @trailPercent(10), @stopLoss(400)

                  SET TRAILING_STOP = @trailAmount
                  SET TRAILING_PERCENT = @trailPercent
                  SET STOP_LOSS = @stopLoss

                  SET hh = HighestHighValue(@periods)
                  #SET ll = LowestLowValue(@periods)

                  HIGH = hh


                  sell scripts (di seguito)

                  #SET hh = HighestHighValue(@periods)
                  SET ll = LowestLowValue(@periods)

                  LOW = ll

                  (PS: utilizzo per i test un solo future sul CAC40 e sul Dax e il Tf = 5 minuti, quindi il problema del n. contratti non si pone, trattasi di 1 solo contratto).

                  Chiedo quindi aiuto per capire quale istruzione devo inserire (o come modificare lo script) perché in real time si comporti come nel backtest. Grazie.
                  Last edited by TFiutoT384; 10-10-13, 09:52.

                  Comment

                  • Francario Massimiliano
                    Administrator
                    • Jul 2008
                    • 1033

                    #10
                    Salve,
                    Originariamente Scritto da TFiutoT384
                    Ringrazio Thalos per aver sollevato questo aspetto e Tiziano per la risposta dato che anch\'io ho trovato questo problema, ovvero la divergenza tra il backtest e il reale.
                    il codice è molto semplice:

                    buy scripts
                    ...

                    HIGH = hh


                    sell scripts (di seguito)

                    ...

                    LOW = ll
                    In Buy Script:

                    Codice:
                    REF(HIGH, 1) = REF(hh, 1)
                    In Sell Script:

                    Codice:
                    REF(LOW, 1) = REF(ll, 1)

                    Max Francario
                    Manuale di beeTrader
                    Manuale di Fiuto Beta

                    Comment

                    • TFiutoT384
                      Senior Member
                      • Oct 2009
                      • 566

                      #11
                      Originariamente Scritto da Francario Massimiliano
                      Salve,


                      In Buy Script:

                      Codice:
                      REF(HIGH, 1) = REF(hh, 1)
                      In Sell Script:

                      Codice:
                      REF(LOW, 1) = REF(ll, 1)

                      Max Francario
                      Grazie. Provo subito.

                      Comment

                      • Thalos
                        Senior Member
                        • Apr 2010
                        • 800

                        #12
                        Inserendo il REF a 1 i parametri di Ottimizzazione del TS sono letteralmente cambiati, anche perché se ho capito bene il TS va\' a leggere la Candela antecedente all\' ultima e poi entra Long o Short su quella dopo.
                        Dovrebbe entrare a Mercato ovviamente se si sviluppa la condizione impostata nel TS stesso.
                        Stasera alle 17.00 quando li chiudo verifico se quello che si e\' sviluppato in Real Strategy e\' lo stesso che verifichero\' sul BackTest a Mercato Stasera...

                        Spero che sia cosi\' sarebbe un bel passo avanti nella comprensione di quello che sto\' facendo..
                        Last edited by Thalos; 10-10-13, 14:50.
                        --- Trend my Friend ---

                        Comment

                        • Thalos
                          Senior Member
                          • Apr 2010
                          • 800

                          #13
                          Anche con il REF il BackTest e il Strategy Real danno aperture e chiusure in posizioni diverse...
                          mmhhhhh la cosa si fa complicata...
                          --- Trend my Friend ---

                          Comment

                          • tom
                            Senior Member
                            • Mar 2008
                            • 522

                            #14
                            Originariamente Scritto da Thalos
                            Anche con il REF il BackTest e il Strategy Real danno aperture e chiusure in posizioni diverse...
                            mmhhhhh la cosa si fa complicata...
                            perdona Thalos,per attivare lo strategy,una volta scelto il tipo di signal ,come fai?

                            io spingo start pero\' non mi da segnali,mentre lo stesso signal come back test ex post me li da.

                            c\'e\' un comando particolare?
                            grazie mille

                            Comment

                            • TFiutoT384
                              Senior Member
                              • Oct 2009
                              • 566

                              #15
                              anche a me, pur inserendo il ref, le posizioni dei segnali sono diverse tra backtest e strategy, come pure il gain: il backtest è molto molto più performante. backtest e strategy li ho appena eseguiti e quindi sono sulla stessa chart a mercati aperti con un solo future, ovvero 1 solo contratto.
                              Volendo peggiorare il risulato del backtest, ovvero conteggiando mentalmente un tick bid-ask in più, la differenza resta netta.
                              Credo che sia da un tema da chiarire: sicuramente sbaglierò in qualcosa ma non sò in cosa.
                              Last edited by TFiutoT384; 10-10-13, 18:59.

                              Comment

                              Working...