Allmänt meddelande

Collapse
No announcement yet.

Fusion MultiStrategy

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • #46
    Eget. Det går ej att simulera pararellt. Däremot har jag inte testat först till kvarn, dvs parallellt fast delar lasttrade, innehav, etc. Intressant idé.
    Last edited by Henric; 2016-04-29, 22:45.

    Comment


    • #47
      Någon mer som igår fick blankning i Coda men köpsignal i Fusion?

      (20160428)
      17:19 ANALYS "sl) Legato OMX index Long OMXS30" kurs 1388.90
      17:20 ORDER "sl) Coda OMX index Shrt OMXS30" kurs 1389.96
      17:22 ORDER "sl) Fusion OMX index buy OMXS30" kurs 1390.74

      Comment


      • #48
        Det kan bli olika signal eftersom timingen inte är exakt likadan i Fusion som i "originalmodellerna". De flesta dagarna kommer de signalera likadant men inte alltid. Fusion kanske blir vidareutvecklad mer som en egen strategi framöver.

        Bifogar bild på ackumulerad avkastning sedan 2003 som jämförelse med Henrics variant att köra Coda under MA200 och Legato över. Klart intressant, och enkelt. Möjligen kan man använda MA200 för att ändra beteendent "intern" i Coda direkt så att den vässas även som fristående strategi.

        Ser ut att bli högre vinst totalt med att bara switcha mellan strategierna också, så det kanske är den vägen vi ska gå istället.

        Attached Files

        Comment


        • #49
          Ursprungligen postat av Rikard Nilsson Visa inlägg
          Det kan bli olika signal eftersom timingen inte är exakt likadan i Fusion som i "originalmodellerna". De flesta dagarna kommer de signalera likadant men inte alltid. Fusion kanske blir vidareutvecklad mer som en egen strategi framöver.

          Bifogar bild på ackumulerad avkastning sedan 2003 som jämförelse med Henrics variant att köra Coda under MA200 och Legato över. Klart intressant, och enkelt. Möjligen kan man använda MA200 för att ändra beteendent "intern" i Coda direkt så att den vässas även som fristående strategi.

          Ser ut att bli högre vinst totalt med att bara switcha mellan strategierna också, så det kanske är den vägen vi ska gå istället.

          Mycket intressant! Vad blir snittavkastningen per år för de båda varianterna?
          Skiljer mycket i max drawdown?
          Undrar
          Bertil

          Comment


          • #50
            Mindre handel i Henrics modell och högre vinst totalt,kan vara en betydelsefull faktor när man slopar den courtagefria handel som nu finns att tillgå.(När man nu gör det) en tidsfråga.

            Comment


            • #51
              Jo det blir högre vinst och färre trades, just färre trades är kanske inte det första vi önskade med Fusion eftersom man då lika gärna kan köra Legato i princip. Men det är ju självklart intressant att koppla in olika strategier automatiskt beroende på börsklimatet. Jag gjorde ett enkelt test i Fusion med en switch med MA200 och fick följande avkastningsgraf sedan 2003 med 5 sek-animering. Följande vinstsiffror:

              Avkastning 3673.64 kr 0.87% på 420 affärer under 22288:50:50 tim
              Av dessa blankat 117 st med avkastning 1109.23 kr 0.93%
              Innehav 195 st med vinst 4930.71 kr 2.53%
              Innehav 108 st med förlust -2366.30 kr -2.14%
              Blankning 78 st med vinst 1985.16 kr 2.47%
              Blankning 39 st med förlust -875.93 kr -2.27%


              PS. Ska prova en volatilitetsbaserad switch också....
              Attached Files

              Comment


              • #52
                Och här är en variant med både MA200 och volatilitetsswitch, börjar se riktigt bra ut! De svarta områdena är när vollan är tillräckligt hög för att koppla in Coda istället för Legato.



                Avkastning 4133.29 kr 0.69% på 584 affärer under 20177:03:56 tim
                Av dessa blankat 195 st med avkastning 1603.03 kr 0.77%
                Innehav 276 st med vinst 5016.72 kr 1.82%
                Innehav 113 st med förlust -2486.46 kr -2.15%
                Blankning 153 st med vinst 2238.80 kr 1.37%
                Blankning 42 st med förlust -635.77 kr -1.46%



                Scripten om någon vill labba vidare:


                { Fusion OMX index long 160419 }

                $par1:=10 {0-30}
                dagar:=20
                advance:=5
                pred1=find(lt(d,sub(const(d),30)),25,c,1)
                pred2=find(lt(d,sub(const(d),60)),50,c,1)
                pred3=find(lt(d,sub(const(d),90)),75,c,1)
                pred4=find(lt(d,sub(const(d),120)),100,c,1)
                pred5=find(lt(d,sub(const(d),150)),125,c,1)

                steg=sub(23,mx(mn(advance,22),1))
                år2=aref(c,236)
                år3=aref(c,476)
                år4=aref(c,729)
                år5=aref(c,982)
                år6=aref(c,1234)
                medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
                pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                p1=gt(roc(add(medel,pred_tot),5,%),0)

                v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
                v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))

                stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                dagen_efter=gt(int(d),lasttrade(s,d))
                hist=sub(macd2(n),macd2(t))
                extremt=lt(hist,-5)

                ma100=mov(c,150,s)
                över=or(extremt,gt(c,ma100))
                longL1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)
                longL1b=and(lt(c,hhv(aref(c,1),3)),v4)
                longL2=and(or(longL1a,longL1b),le(getgvar(854),0))
                longL3=and(and(longL2,and(öppet,stängning)),dagen_efter)
                setgvarif(1,854,longL3)


                måndag=eqv(dayofweek(),1)
                tisdag=eqv(dayofweek(),2)
                ej_fredag=lt(dayofweek(),5)
                under=lt(c,mov(c,100,s))
                days=if(under,6,3)
                köpC1=and(måndag,lt(l,llv(aref(l,1),3)))
                köpC2=and(tisdag,lt(l,llv(aref(l,1),2)))
                köpC3=and(or(or(köpC1,köpC2),and(lt(l,llv(aref(l,1),days:10)),ej_fredag)),le(getgvar(855),0))
                köpC4=and(and(köpC3,and(öppet,stängning)),dagen_efter)
                setgvarif(1,855,köpC4)

                lägsta=llv(aref(c,1),dagar)
                stoploss=gt(c,add(lasttrade(s,p),mult(3,atr(10))))

                coverL1=lt(c,lägsta)
                coverL2=and(or(stoploss,coverL1),and(or(stoploss,stängning),öppet))
                coverL3=and(coverL2,lt(getgvar(854),0))

                setgvarif(0,854,coverL3)
                setgvarif(0,855,coverL3)
                setgvarif(portfolio(v),857,1)

                volla=stdev(div(c,aref(c,1)),22)
                draw(volla,2,baa)
                hög_vo=hhv(gt(volla,0.015),65)
                draw(mult(hög_vo,20),2,ksbf)

                ma200=mov(c,200,s)
                under200=lt(aref(c,1),ma200)
                fusion_pos=if(or(under200,hög_vo),getgvar(855),getgvar(854))
                trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
                and(lt(portfolio(v),fusion_pos),trade_time)




                { Fusion OMX index shrt 160419 }

                $par1:=10 {0-30}
                advance:=5
                pred1=find(lt(d,sub(const(d),30)),25,c,1)
                pred2=find(lt(d,sub(const(d),60)),50,c,1)
                pred3=find(lt(d,sub(const(d),90)),75,c,1)
                pred4=find(lt(d,sub(const(d),120)),100,c,1)
                pred5=find(lt(d,sub(const(d),150)),125,c,1)

                steg=sub(23,mx(mn(advance,22),1))
                år2=aref(c,236)
                år3=aref(c,476)
                år4=aref(c,729)
                år5=aref(c,982)
                år6=aref(c,1234)
                medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
                pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                p1=lt(roc(add(medel,pred_tot),5,%),0)

                v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
                v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))

                stängning=le(mult(1440,sub(market(c),frac(date()))),8)
                öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                dagen_efter=gt(int(d),lasttrade(b,d))

                ma200=mov(c,200,s)
                under=lt(c,ma200)
                ej_extremt=gt(macd2(n),-50)

                shrtL1=and(lt(c,aref(c,1)),under)
                shrtL2=and(and(and(shrtL1,or(v1,v3)),ge(getgvar(854),0)),ej_extremt)
                shrtL3=and(and(shrtL2,and(öppet,stängning)),dagen_efter)
                setgvarif(-1,854,shrtL3)

                ej_onsdag=not(eqv(dayofweek(),3))
                shrtC1=and(ej_onsdag,gt(c,hhv(aref(c,1),2)))
                shrtC2=and(shrtC1,lt(c,mov(c,150,s)))
                shrtC3=and(shrtC2,ge(getgvar(855),0))
                shrtC4=and(and(shrtC3,and(öppet,stängning)),dagen_efter)
                setgvarif(-1,855,shrtC4)

                ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
                ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))
                lägre=lt(c,aref(c,1))
                rättd=ge(dayofweek(),2)
                stoploss=lt(c,sub(lasttrade(b,p),mult(3,atr(10))))
                sellL1=lt(c,llv(aref(c,1),2))
                sellL2=and(and(sellL1,or(stoploss,or(ve1,ve3))),gt(getgvar(854),0))
                sellL3=and(and(and(sellL2,and(or(lägre,stängning),öppet)),rättd),dagen_efter)
                setgvarif(0,854,sellL3)

                xhi=hhv(aref(c,1),2)
                ma1=mov(c,100,s)
                high=and(gt(c,xhi),lt(c,ma1))
                fredag=eqv(dayofweek(),5)
                säljC1=or(stoploss,or(high,fredag))
                säljC2=and(säljC1,gt(getgvar(855),0))
                säljC3=and(and(säljC2,and(öppet,stängning)),dagen_efter)
                setgvarif(0,855,säljC3)

                volla=stdev(div(c,aref(c,1)),22)
                draw(volla,2,baa)
                hög_vo=hhv(gt(volla,0.015),65)

                ma200=mov(c,200,s)
                under200=lt(aref(c,1),ma200)
                fusion_pos=if(or(ynder200,hög_vo),getgvar(855),getgvar(854))
                trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
                and(gt(portfolio(v),fusion_pos),trade_time)
                Attached Files

                Comment


                • #53
                  Ännu en variant, under volatila perioder kör man både Legato och Coda med 50% vikt vardera, under lugna upptrender kör man 100% Legato. Ser ut att bli ännu jämnare avkastning men aningen lägre totalvinst. Det man får tänka på med siffrorna här är att 1 punkt bara motsvarar 50% exponering.

                  Avkastning 7363.01 kr 1.04% på 704 affärer under 21163:43:55 tim
                  Av dessa blankat 218 st med avkastning 2849.54 kr 1.28%
                  Innehav 307 st med vinst 8355.87 kr 2.78%
                  Innehav 179 st med förlust -3842.40 kr -2.04%
                  Blankning 157 st med vinst 3749.01 kr 2.27%
                  Blankning 61 st med förlust -899.47 kr -1.57%
                  Attached Files
                  Last edited by Rikard Autostock; 2016-05-01, 13:42.

                  Comment


                  • #54
                    Nu börjar vi närma oss tror jag, avkastningsgrafen är rak som en halvdan spik i alla fall. Har skippat MA200-delen och kör bara volatilitetsbaserad switch, och får följande:

                    Avkastning 7556.58 kr 1.05% på 713 affärer under 21204:01:55 tim
                    Av dessa blankat 214 st med avkastning 2942.97 kr 1.35%
                    Innehav 316 st med vinst 8419.51 kr 2.71%
                    Innehav 183 st med förlust -3805.90 kr -1.98%
                    Blankning 156 st med vinst 3754.48 kr 2.29%
                    Blankning 58 st med förlust -811.51 kr -1.50%

                    Ska vi köra denna som officiell version tycker ni?

                    Attached Files
                    Last edited by Rikard Autostock; 2016-05-01, 14:41.

                    Comment


                    • #55
                      fusion_pos=if(or(ynder200,hög_vo),getgvar(855),getgvar(854))

                      Här har du ett litet fel Rikard.

                      Comment


                      • #56
                        Jo, det är rättat, såg det också.

                        Comment


                        • #57
                          Ser spännande ut. Kan du lägga ut den sista versionen så man kan göra egna simuleringar?

                          Comment


                          • #58
                            Såklart, här är scripten:

                            { Fusion OMX index long 160501 }

                            $par1:=10 {0-30}
                            dagar:=20
                            advance:=5
                            pred1=find(lt(d,sub(const(d),30)),25,c,1)
                            pred2=find(lt(d,sub(const(d),60)),50,c,1)
                            pred3=find(lt(d,sub(const(d),90)),75,c,1)
                            pred4=find(lt(d,sub(const(d),120)),100,c,1)
                            pred5=find(lt(d,sub(const(d),150)),125,c,1)

                            steg=sub(23,mx(mn(advance,22),1))
                            år2=aref(c,236)
                            år3=aref(c,476)
                            år4=aref(c,729)
                            år5=aref(c,982)
                            år6=aref(c,1234)
                            medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
                            pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                            p1=gt(roc(add(medel,pred_tot),5,%),0)

                            v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
                            v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))

                            stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                            öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                            dagen_efter=gt(int(d),lasttrade(s,d))
                            hist=sub(macd2(n),macd2(t))
                            extremt=lt(hist,-5)

                            ma100=mov(c,150,s)
                            över=or(extremt,gt(c,ma100))
                            longL1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)
                            longL1b=and(lt(c,hhv(aref(c,1),3)),v4)
                            longL2=and(or(longL1a,longL1b),le(getgvar(854),0))
                            longL3=and(and(longL2,and(öppet,stängning)),dagen_efter)
                            setgvarif(1,854,longL3)


                            måndag=eqv(dayofweek(),1)
                            tisdag=eqv(dayofweek(),2)
                            ej_fredag=lt(dayofweek(),5)
                            under=lt(c,mov(c,100,s))
                            days=if(under,6,3)
                            köpC1=and(måndag,lt(l,llv(aref(l,1),3)))
                            köpC2=and(tisdag,lt(l,llv(aref(l,1),2)))
                            köpC3=and(or(or(köpC1,köpC2),and(lt(l,llv(aref(l,1),days:10)),ej_fredag)),le(getgvar(855),0))
                            köpC4=and(and(köpC3,and(öppet,stängning)),dagen_efter)
                            setgvarif(1,855,köpC4)

                            lägsta=llv(aref(c,1),dagar)
                            stoploss=gt(c,add(lasttrade(s,p),mult(3,atr(10))))

                            coverL1=lt(c,lägsta)
                            coverL2=and(or(stoploss,coverL1),and(or(stoploss,stängning),öppet))
                            coverL3=and(coverL2,lt(getgvar(854),0))

                            setgvarif(0,854,coverL3)
                            setgvarif(0,855,coverL3)
                            setgvarif(portfolio(v),857,1)

                            volla=stdev(div(c,aref(c,1)),22)
                            draw(volla,2,baa)
                            hög_vo=hhv(gt(volla,0.015),100)
                            draw(mult(hög_vo,20),2,ksbf)

                            fusion_pos=if(hög_vo,add(getgvar(855),getgvar(854)),mult(2,getgvar(854)))
                            trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
                            and(lt(portfolio(v),fusion_pos),trade_time)




                            { Fusion OMX index shrt 160501 }

                            $par1:=10 {0-30}
                            advance:=5
                            pred1=find(lt(d,sub(const(d),30)),25,c,1)
                            pred2=find(lt(d,sub(const(d),60)),50,c,1)
                            pred3=find(lt(d,sub(const(d),90)),75,c,1)
                            pred4=find(lt(d,sub(const(d),120)),100,c,1)
                            pred5=find(lt(d,sub(const(d),150)),125,c,1)

                            steg=sub(23,mx(mn(advance,22),1))
                            år2=aref(c,236)
                            år3=aref(c,476)
                            år4=aref(c,729)
                            år5=aref(c,982)
                            år6=aref(c,1234)
                            medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
                            pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                            p1=lt(roc(add(medel,pred_tot),5,%),0)

                            v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
                            v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))

                            stängning=le(mult(1440,sub(market(c),frac(date()))),8)
                            öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                            dagen_efter=gt(int(d),lasttrade(b,d))

                            ma200=mov(c,200,s)
                            under=lt(c,ma200)
                            ej_extremt=gt(macd2(n),-50)

                            shrtL1=and(lt(c,aref(c,1)),under)
                            shrtL2=and(and(and(shrtL1,or(v1,v3)),ge(getgvar(854),0)),ej_extremt)
                            shrtL3=and(and(shrtL2,and(öppet,stängning)),dagen_efter)
                            setgvarif(-1,854,shrtL3)

                            ej_onsdag=not(eqv(dayofweek(),3))
                            shrtC1=and(ej_onsdag,gt(c,hhv(aref(c,1),2)))
                            shrtC2=and(shrtC1,lt(c,mov(c,150,s)))
                            shrtC3=and(shrtC2,ge(getgvar(855),0))
                            shrtC4=and(and(shrtC3,and(öppet,stängning)),dagen_efter)
                            setgvarif(-1,855,shrtC4)

                            ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
                            ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))
                            lägre=lt(c,aref(c,1))
                            rättd=ge(dayofweek(),2)
                            stoploss=lt(c,sub(lasttrade(b,p),mult(3,atr(10))))
                            sellL1=lt(c,llv(aref(c,1),2))
                            sellL2=and(and(sellL1,or(stoploss,or(ve1,ve3))),gt(getgvar(854),0))
                            sellL3=and(and(and(sellL2,and(or(lägre,stängning),öppet)),rättd),dagen_efter)
                            setgvarif(0,854,sellL3)

                            xhi=hhv(aref(c,1),2)
                            ma1=mov(c,100,s)
                            high=and(gt(c,xhi),lt(c,ma1))
                            fredag=eqv(dayofweek(),5)
                            säljC1=or(stoploss,or(high,fredag))
                            säljC2=and(säljC1,gt(getgvar(855),0))
                            säljC3=and(and(säljC2,and(öppet,stängning)),dagen_efter)
                            setgvarif(0,855,säljC3)

                            volla=stdev(div(c,aref(c,1)),22)
                            draw(volla,2,baa)
                            hög_vo=hhv(gt(volla,0.015),100)

                            fusion_pos=if(hög_vo,add(getgvar(855),getgvar(854)),mult(2,getgvar(854)))
                            trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
                            and(gt(portfolio(v),fusion_pos),trade_time)

                            Comment


                            • #59
                              "Ska vi köra denna som officiell version tycker ni?"

                              "Ska vi köra denna som officiell version tycker ni?"

                              Utan tvekan! Cant wait!

                              Comment


                              • #60
                                Toppen.Tycker vi kör.Otroligt starkt?

                                Comment

                                Working...
                                X