Allmänt meddelande

Collapse
No announcement yet.

ROC and Roll

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

  • #31
    Precis, dividera kursen dagen innan med kursen dagen efter och lägg in som splitt så har man tagit tillräcklig hänsyn tycker jag.

    Comment


    • #32
      Finns det nån bra informationskanal där man kan hålla sig uppdaterad om splittar m.m för de aktier man valt att köra i strategin? Jag har lagt in allt för ett år tillbaka men vill fånga upp nya händelser som sker på ett enkelt sätt utan att behöva scanna igenom informationen på skatteverkets sida kontinuerligt för att inte missa nåt.

      Comment


      • #33
        Du kan titta i Nordnets finanskalender. Annars handlar inte ROC så ofta. Du skulle kunna köra en sim eller kalkyl med villkoret att kursen idag jämfört med igår absolut avviker med x-procent.

        Comment


        • #34
          Ursprungligen postat av Rikard Autostock Visa inlägg
          Den tar egentligen 9,9%, men det är endast relevant vid första omgången. Därefter kommer kontosaldot att variera med resultatet och kontroll görs om pengar finns till 10:e positionen varje gång den ska handla. Det kommer fattas pengar vissa gånger och finnas pengar över andra gånger, men det blir aldrig mer än 10 öppna positioner.
          Hej, jag tror jag hittat en bugg i ROC Roll investor.
          När jag ändrar insatsproc t.ex. till =0.04 så får jag mer än 10 köp per månad. Beteendet är först 10 köp den första handelsdagen, sedan senare i månaden köps ytterligare några aktier, sedan månad för månad så sker lite olika köp efter den första handelsdagen.

          1. Jag undrar om det går att få till en rättning så att insatsen går att ställa in?
          2. Jag skulle också önska att modellen kan handla även om inte kontot är tomt, jag uppfattar som att handel sker inte vid anslutning under en månad, då regeln "ingen_pos=eqv(cash(a),0)" finns. Jag experimenterade med att bort denna regel, men oklar på konsekvenserna. Jag har fått modellen att handla även om det finns andra innehav vid anslutning, men antar att det kanske finns en anledning till att den har lagts till vid skapandet av strategin.


          { ROC and Roll insatsscript }

          insatsproc:=0.099
          i1(
          insatsbelopp=mult(mult(sub(add(cash(a),cash(t)),mult(2,abs(cash(s)))),insatsproc),getgvar(9800))
          köpantal=Int(Div(insatsbelopp,s))
          innehav=Portfolio(v)
          övermål=Ge(innehav,köpantal)
          slutantal1=If(övermål,0,SUB(köpantal,innehav))
          add(0,slutantal1)
          )

          Comment


          • #35
            Jag tog en sanbb titt.

            1. Modellen är byggd för just 10 aktier, allokering ca 0.1
            Om allokeringen sätts till flera aktier( lägre än ca 0.1) handlas fortfarande max 10 aktier men den enskilda allokeringen blir lägre och då även på totalen. Om allokeringen sätt till färre aktier (högre än ca 0.1) handlas rätt antal aktier, men tillfälligheter avgör vilka som köps. Sedan blir det strul då även exit och tillgänglig kassa är anpassade till 10 aktier. Det skulle gå att lösa med ett dynamiskt antal, men då krävs en ombyggnad och inget som bara kan ändras i antalscriptet.

            2.Modellen handlar vid ny månad eller om ingen position finns på kontot.

            Comment


            • #36
              Det som kan hända är att en eller flera positioner stoppas ut under månaden vilket lämnar en "slot" ledig.

              Comment


              • #37
                Det händer. Svarar ändå inte på fråga 1 i inlägg#34. Om insatsen går att ställa in. Jag rekommenderar att inte ändra insatsen enligt inlägg ovan.

                Stoppen borde bara slå till innan stängningscallen, dvs innan 17:25 för heldag. Jag får i simuleringen en utstoppning i stängningscallen då kursen under en sekund går ner massor. Det är inget riktigt avslut och bör inte kunna påverka. Dessutom går det inte att handla aktier som tänkt i callen och definitivt inte minifuture.

                Skulle första handelsdagen i månaden vara en halvdag(om det kan hända?) så kommer cellerna att nollställas och en tvingad exit att ske. Därför bör tid till stängning användas och inte bara frac(date()).

                Om det sker en utstoppning så kan rankningen för den lediga "sloten" bli konstigt. Bästa rankningen används inte då det ej är nymånad eller tom depå. Utan första aktien som inte har hunnits nollställs handlas. Det räcker att poängen är större -1 och sedan gör hysteres2 att villkoret blir sant. Det påverkar nog inte så mycket om enstaka positioner
                inte skulle välja bästa(kanske om det blir en rad utstoppningar i rad). Det skulle gå att lösa genom att villkoret write även kan bli sant då pengarfinns är sant. Sedan endast nollställa om 1 veckan till 14 dagar har gått förutom om stoppen slår till.

                setgvarif(-1,9886,or(nollställ,gt(getgvar(9886),mult(hysteres1,getgvar(9885)))))
                ....
                ....
                set_kand2=and(and(gt(poäng_tt,getgvar(9886)),and(finns_ej,lt(poäng_tt,mult(hysteres2,getgvar(9885))))),innan1720)


                Jag kan själv göra ändringar till mina önskemål. Bara info och inget klagomål.

                Comment


                • #38
                  Tackar för input! Helt klart en miss att stoppen kan lösa i callen, det är ju lätt fixat.

                  Ska kolla igenom resten också så att man inte nollar hela rankningen på en halvdag osv.

                  Comment


                  • #39
                    Bara ett litet förslag för att under lite längre tid öka avkastningen.

                    Jag skulle använda denna för kassan:
                    pengarfinns=lt(cash(a),mult(konto,sub(1,mult(hävstång,0.05))))

                    Använder man 0.9 kommer nog genomsnitts exponeringen för häv 1 ligga runt 0.95. Sätter man den till 0.95 kommer genomsnitts allokeringen ligga runt 1.0, medan enskild maxexponering kan ligga mellan 0.95-1.05

                    Comment


                    • #40
                      Ursprungligen postat av Rikard Autostock Visa inlägg
                      Tackar för input! Helt klart en miss att stoppen kan lösa i callen, det är ju lätt fixat.

                      Ska kolla igenom resten också så att man inte nollar hela rankningen på en halvdag osv.
                      toppen!
                      vore kul om man kunde ställa in hur ofta ombalansering/utvärdering sker i skriptet också.

                      Comment


                      • #41
                        Hej Rikard

                        Meddela gärna när uppdaterad version av ROC finns.
                        Du får gärna maila mig då jag inte får notifications ifrån forumet...

                        Comment


                        • #42
                          Här är moddade script, jag får bättre resultat vid simulering dessutom:


                          { ROC and Roll Investor buy ver 1.1 200219 }



                          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),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=not(or(long1a,long1b))

                          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


                          • #43
                            Nån som hunnit testa? Jag lägger ut den som officiell uppdatering om ingen hittar några fel etc.

                            Comment


                            • #44
                              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.

                              Comment


                              • #45
                                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".

                                Comment

                                Working...
                                X