Allmänt meddelande

Collapse
No announcement yet.

ROC and Roll

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

  • #46
    Jag har för mig att jag såg en ny position efter utstoppnng utan att det var ny månad eller cash(a)=0. Jag ska kolla med en körning och återkommer om så är fallet.

    Comment


    • #47
      Entry kan slinka igenom om en utstoppning har skett och att kassan räcker till. Det sker även om ingen skanning för dagen har skett, dvs ny månad eller cash(a)=0. Behöver dock inte vara samma dag som stoppen. Ändrar jag villkoret "finns_ej" så tas inte dessa lite slumpartade affärerna.

      finns_ej=and(not(or(long1a,long1b)),not(eqv(GetGvar(9884),-1)))

      Comment


      • #48
        Vore intressant om man på samma sätt gjorde en Roc & Roll Blank där man istället blankar 10 av de lägst rankade aktierna som går att blanka.
        Sedan sätter man ihop Roc & Roll Blank med Roc & Roll (10 aktier lång och 10 aktier kort). På så sätt blir man inte lika påverkbar av makrohändelser, vilket borde ge en mycket jämnare vinstkurva (visst ja, vinstkurvan i NAT är ju dålig på att hantera blankningar, men man får väl rita externt ).

        Detta är väl värt att testa tycker jag. (Bertil Blink)

        mvh
        Bertil Blank
        Last edited by Bertil; 2020-02-21, 16:49.

        Comment


        • #49
          Den är utvecklad för mid-cap som inte går att blanka eller handla med någon märkbar hävstång. Visst, skulle kanske fungerar på large cap. Alternativ är att blanka den långa exponeringen med att sälja index-termin och därmed bli marknadsneutral och fånga alfa.

          Comment


          • #50
            Ursprungligen postat av Henric Visa inlägg
            Den är utvecklad för mid-cap som inte går att blanka eller handla med någon märkbar hävstång. Visst, skulle kanske fungerar på large cap. Alternativ är att blanka den långa exponeringen med att sälja index-termin och därmed bli marknadsneutral och fånga alfa.
            Jo så kan man ju göra.
            Tycker ändå att det vore intressant att simulera blankning av de 10 aktier som presterar sämst enligt rankningen på large-cap som motvikt till de 10 mid-cap aktier som presterar bäst enligt rankningen.
            Jag är inne på att det på samma sätt som det blir ett positivt resultat för de aktier som har högst rankning så blir det även ett positivt resultat av de 10 large-cap aktier som har sämst ranking och som man blankar, jämfört med blankning av indexterminen

            mvh
            Bertil


            Den som simulerar får se...

            Comment


            • #51
              Jo, kan vara så. Min intuition är att både sämsta och bästa kan ge bra resultat. Fångar olika faktorer av pris. Sedan fungerar det förmodligen helt olika beroende på var i den långa trenden man är. Varför testar du inte?

              Comment


              • #52
                Ursprungligen postat av Henric Visa inlägg
                Jo, kan vara så. Min intuition är att både sämsta och bästa kan ge bra resultat. Fångar olika faktorer av pris. Sedan fungerar det förmodligen helt olika beroende på var i den långa trenden man är. Varför testar du inte?
                Jag har ju snöat in på att enbart handla terminen så för mig är Roc & Roll inte intressant. Ville bara ge ett tips i all välmening.

                mvh
                Bertil Termin

                Comment


                • #53
                  Ursprungligen postat av Henric Visa inlägg
                  Om jag förstod frågan från Jimmy så vill han kunna ändra insatsen. Det bör framgå att modellen är byggd för just 10 positioner/aktier och att det inte är rekommenderat att ändra i insatsprocenten i insatsscriptet. Det kan blir galet.

                  Rätt aktier handlas då cash(a)=0 eller ny månad. Annars vid utstoppning kommer ny position att fyllas på fastän cell 9884 och 9885 är satt till -1. Ny kandidat kan slinka igenom ändå.

                  Som jag har skrivit tidigare är det inget jag vill att ni ändrar, utan bara för er info.
                  Ursprungligen postat av Rikard Autostock Visa inlägg
                  Fast jag har inte sett någon ny position i samband med utstoppning, bara efter att ny scan gjorts. Borde ju bli säkrare nu när kalendertid används istället för systemklockan. Det som var intressant att utstoppning kunde ske i callen tidigare, helt klart bättre resultat utan den "risken".
                  Ursprungligen postat av Henric Visa inlägg
                  Entry kan slinka igenom om en utstoppning har skett och att kassan räcker till. Det sker även om ingen skanning för dagen har skett, dvs ny månad eller cash(a)=0. Behöver dock inte vara samma dag som stoppen. Ändrar jag villkoret "finns_ej" så tas inte dessa lite slumpartade affärerna.

                  finns_ej=and(not(or(long1a,long1b)),not(eqv(GetGvar(9884),-1)))
                  Jag testade även i simulering och positionerna kan slinka igenom.

                  Comment


                  • #54
                    Hm, skumt i så fall. Det betyder att Cash(a) måste bli noll trots att det finns positioner. Kanske lika bra att ta bort villkoret så att den bara kan handla första dagen efter månadsskifte. Enda anledningen att det fanns där är att man får positioner samma dag man ansluter strategin första gången, kanske inte helt nödvändigt.

                    Comment


                    • #55
                      Jag tror att det beror på hysteres och att ny kanditat kan sättas även om 9884 och 9885 är -1. Det kan lösas genom att ändra "ej_finns". Då kan man använda cash(a) och man behöver inte vänta en månad på positioner när man startar. Dessutom skulle cash(a) kunna vara ett bra villkor om det inte finns några kanditater vid ett månadskiftet och att förustättningarna ändras mitt i en månad. Har inte tittat på detta.


                      finns_ej=and(not(or(long1a,long1b)),not(eqv(GetGvar(9884),-1)))

                      Comment


                      • #56
                        Jag tog bort villkoret "ingen_pos" och fick ändå affär på tex DIOS den 11:e sep 2012, och det visade sig att det berodde på att data saknades flera dagar innan så att 11:e blev första börsdagen i månaden för DIOS. Därmed är villkoret uppfyllt, och den köpte i alla fall. Så det är alltså bara vid datafel som det händer. Vet inte om man ska gräva i det så mycket mer då egentligen, om aktien inte skulle igång i topp 10-listan vid nästa scan åker den ju ändå ut.

                        Comment


                        • #57
                          Kan så vara. Jag kör på LargeCap och får samma problem. Varför löser jag då problemet med villkoret nedan eller båda kanske spökar?

                          finns_ej=and(not(or(long1a,long1b)),not(eqv(GetGvar(9884),-1)))


                          Jag ska minska antalet aktier efter hand på largecap så länge problemet kvarstår. Sedan blir det lätt att kolla data på kvarstående. Behöver bara köra en månad med strul. Om det är som jag tror skulle det kunna innebära att modellen fortsätter köpa efter stoppar i nertrend. Vid rätt trend över tid i simulering blir det givetvis bättre att köpa på sig vid spöksignaler. Återkommer om jag hittar något.

                          Edit: Jag vände på problemet. Köpte varje aktie max en gång per dag när ny_mån är sant. Inga försäljningar görs. Köp sker bara när det faktiskt är ny månad, dvs inga spöksignaler. Tillbaka till originalscriptet. Det kan alltså ske köp utan att det finns någon aktie som kvalificeras som kandidat enligt villkoret write.
                          Nedan kan ignoreras. Jag kollade bara ny_mån ovan och väntade inte till stängning.
                          Sedan har villkoret "ingen_pos "någon egentlig verkar och kan tas bort. Den köper bara en aktie när villkoret är sant och sedan blir ju inte villkoret sant längre. Däremot om depån kommer in till stängning utan positioner skulle det kunna blir skillnad mot nuvarande simulering. Måste testas, tex med att registrera cash(a) i en cell innan stängning.
                          Last edited by Henric; 2020-02-23, 10:07.

                          Comment


                          • #58
                            En variant kan ju vara att köra rankingmotorn varje dag och ifall någon aktie stoppas ut så köps åtminstone en på topp-listan.

                            Comment


                            • #59
                              Absolut. Det blir en topprankad och att write är sant. Fortfarande behövs en kolla att cell 9884 inte är -1, dvs det finns minst en kandidat. Se även min edit i inlägg #57.

                              Comment


                              • #60
                                Det blev betydligt bättre om jag kör rankingen dagligen, men fortfarande handlar som nu. De affärer som ändå görs mellan ordinarie månadsscan blir bättre. Har lagt koll att cell 9884 inte är -1 också, tack till Henric!


                                { ROC and Roll Investor buy ver 1.1 200223 }



                                weight_q:=2 {2}
                                weight_y:=1 {1}
                                weight_m:=-1 {-1}
                                hysteres1:=1.02
                                hysteres2:=0.98
                                min_avg_daily_oms:=200000
                                hävstång:=1


                                datesame=eqv(int(d),int(ref(d,1)))
                                dagar_data=sum(not(datesame),250)

                                no_split=llv(lt(div(abs(sub(c,ref(c,1))),c),0.3),250)
                                samma_dag=ge(int(d),sub(int(date()),2))
                                avg_oms_daily=div(sum(mult(c,v),250),250)
                                data_ok=and(and(and(gt(avg_oms_daily,min_avg_daily_oms),samma_dag),no_split),gt(dagar_data,240))

                                rc_y=roc(c,250,%)
                                rc_q=roc(c,63,%)
                                rc_m=roc(c,21,%)
                                tot=add(add(mult(weight_q,rc_q),mult(weight_m,rc_m)),mult(weight_y,rc_y))
                                poäng_tt=mult(tot,data_ok)
                                draw(poäng_tt,1,dwaaw)

                                setgvarif(hävstång,9800,1)
                                best=getgvar(9885)
                                id1=getgvar(9875)
                                id2=getgvar(9876)
                                id3=getgvar(9877)
                                id4=getgvar(9878)
                                id5=getgvar(9879)

                                id6=getgvar(9880)
                                id7=getgvar(9881)
                                id8=getgvar(9882)
                                id9=getgvar(9883)
                                idx=getgvar(9884)


                                abb=eqv(crcid(),3588324501)

                                konto=sub(add(cash(t),cash(a)),mult(2,abs(cash(s))))
                                pengarfinns=lt(cash(a),mult(hävstång,mult(konto,0.9)))
                                ingen_pos=eqv(cash(a),0)

                                ny_mån=or(not(eqv(aref(monthnumber(),1),monthnumber())),ingen_pos)
                                ej_innehav=le(portfolio(v),0)
                                innan1720=ge(mult(1440,sub(market(c),frac(date()))),8)
                                stängning=le(mult(1440,sub(market(c),frac(date()))),12)
                                2tim_innan=le(mult(1440,sub(market(c),frac(date()))),140)
                                2_tim_innan=gt(mult(1440,sub(market(c),frac(date()))),140)
                                write=and(data_ok,and(and(not(abb),{ny_mån}1),and(2tim_innan,and(and(innan1720,gt(poäng_tt,mult(best,hysteres1))),gt(tot,0)))))
                                setgvarif(poäng_tt,9885,write)
                                setgvarif(crcid(),9884,write)


                                nollställ=and(or(2_tim_innan,eqv(xtime(date(),h),15)),1)
                                setgvarif(-1,9885,nollställ)
                                setgvarif(-1,9884,nollställ)
                                setgvarif(-1,9883,nollställ)
                                setgvarif(-1,9882,nollställ)
                                setgvarif(-1,9881,nollställ)
                                setgvarif(-1,9880,nollställ)
                                setgvarif(-1,9879,nollställ)
                                setgvarif(-1,9878,nollställ)
                                setgvarif(-1,9877,nollställ)
                                setgvarif(-1,9876,nollställ)
                                setgvarif(-1,9875,nollställ)
                                setgvarif(-1,9886,or(nollställ,gt(getgvar(9886),mult(hysteres1,getgvar(9885)))))
                                setgvarif(-1,9887,or(nollställ,gt(getgvar(9887),mult(hysteres1,getgvar(9886)))))
                                setgvarif(-1,9888,or(nollställ,gt(getgvar(9888),mult(hysteres1,getgvar(9887)))))
                                setgvarif(-1,9889,or(nollställ,gt(getgvar(9889),mult(hysteres1,getgvar(9888)))))
                                setgvarif(-1,9890,or(nollställ,gt(getgvar(9890),mult(hysteres1,getgvar(9889)))))
                                setgvarif(-1,9891,or(nollställ,gt(getgvar(9891),mult(hysteres1,getgvar(9890)))))
                                setgvarif(-1,9892,or(nollställ,gt(getgvar(9892),mult(hysteres1,getgvar(9891)))))
                                setgvarif(-1,9893,or(nollställ,gt(getgvar(9893),mult(hysteres1,getgvar(9892)))))
                                setgvarif(-1,9894,or(nollställ,gt(getgvar(9894),mult(hysteres1,getgvar(9893)))))

                                long1a=or(or(or(or(eqv(crcid(),id1),eqv(crcid(),id2)),eqv(crcid(),id3)),eqv(crcid(),id4)),eqv(crcid(),id5))
                                long1b=or(or(or(or(eqv(crcid(),id6),eqv(crcid(),id7)),eqv(crcid(),id8)),eqv(crcid(),id9)),eqv(crcid(),idx))
                                finns_ej=and(not(or(long1a,long1b)),not(eqv(getgvar(9884),-1)))

                                set_kand2=and(and(gt(poäng_tt,getgvar(9886)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9885))))),innan1720)
                                setgvarif(poäng_tt,9886,set_kand2)
                                setgvarif(crcid(),9883,set_kand2)

                                set_kand3=and(and(gt(poäng_tt,getgvar(9887)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9886))))),innan1720)
                                setgvarif(poäng_tt,9887,set_kand3)
                                setgvarif(crcid(),9882,set_kand3)

                                set_kand4=and(and(gt(poäng_tt,getgvar(9888)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9887))))),innan1720)
                                setgvarif(poäng_tt,9888,set_kand4)
                                setgvarif(crcid(),9881,set_kand4)

                                set_kand5=and(and(gt(poäng_tt,getgvar(9889)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9888))))),innan1720)
                                setgvarif(poäng_tt,9889,set_kand5)
                                setgvarif(crcid(),9880,set_kand5)

                                set_kand6=and(and(gt(poäng_tt,getgvar(9890)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9889))))),innan1720)
                                setgvarif(poäng_tt,9890,set_kand6)
                                setgvarif(crcid(),9879,set_kand6)

                                set_kand7=and(and(gt(poäng_tt,getgvar(9891)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9890))))),innan1720)
                                setgvarif(poäng_tt,9891,set_kand7)
                                setgvarif(crcid(),9878,set_kand7)

                                set_kand8=and(and(gt(poäng_tt,getgvar(9892)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9891))))),innan1720)
                                setgvarif(poäng_tt,9892,set_kand8)
                                setgvarif(crcid(),9877,set_kand8)

                                set_kand9=and(and(gt(poäng_tt,getgvar(9893)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9892))))),innan1720)
                                setgvarif(poäng_tt,9893,set_kand9)
                                setgvarif(crcid(),9876,set_kand9)

                                set_kandx=and(and(gt(poäng_tt,getgvar(9894)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9893))))),innan1720)
                                setgvarif(poäng_tt,9894,set_kandx)
                                setgvarif(crcid(),9875,set_kandx)


                                long2=and(or(long1a,long1b),stängning)
                                long3=and(and(long2,ej_innehav),pengarfinns)
                                mult(long3,not(abb))




                                { ROC and Roll sell ver 1.1 200219 }

                                stoploss:=0.8

                                vinst=gt(c,portfolio(p))
                                innehav=gt(portfolio(v),0)
                                kand1=getgvar(9875)
                                kand2=getgvar(9876)
                                kand3=getgvar(9877)
                                kand4=getgvar(9878)
                                kand5=getgvar(9879)
                                kand6=getgvar(9880)
                                kand7=getgvar(9881)
                                kand8=getgvar(9882)
                                kand9=getgvar(9883)
                                kandx=getgvar(9884)

                                ny_mån=not(eqv(aref(monthnumber(),1),monthnumber()))
                                exit=and(not(ny_mån),lt(c,mult(lasttrade(b,p),stoploss)))
                                sell1a=and(and(and(and(not(eqv(crcid(),kand1)),not(eqv(crcid(),kand2))),not(eqv(crcid(),kand3))),not(eqv(crcid(),kand4))),not(eqv(crcid(),kand5)))
                                sell1b=and(and(and(and(not(eqv(crcid(),kand6)),not(eqv(crcid(),kand7))),not(eqv(crcid(),kand8))),not(eqv(crcid(),kand9))),not(eqv(crcid(),kandx)))
                                sell2=or(and(sell1a,sell1b),exit)
                                öppet=ge(mult(1440,sub(market(c),frac(date()))),8)
                                stängning=le(mult(1440,sub(market(c),frac(date()))),12)
                                sell3=and(and(and(or(exit,ny_mån),sell2),and(öppet,stängning)),innehav)
                                mult(sell3,1)

                                Comment

                                Working...
                                X