Allmänt meddelande

Collapse
No announcement yet.

Momentumportfölj

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

  • Momentumportfölj

    Hej alla!

    Tänkte kolla om någon försökt sig på att skapa någon typ av momentumstrategi?
    Finns ju mycket forskning kring detta där aktier som presterat bäst under X-antal månader också tenderar att prestera bättre nästkommande Y-antal månader.

    Min tanke är tex att man sätter ihop en portfölj på OMXS30 där man efter varje månad viktar om till de 10 bäst presterande från förra månaden? (Tid och antal aktier lär ju såklart optimeras).

    Först väl dock någon typ av rankinglista som jag inte riktigt vet hur man ska få ihop? Kanske kan kalkylforskaren användas men då vet jag inte om det går att köra i analysern?

    Mvh Calle

  • #2
    Nej har inte tittat på momentum. Men här är en liknande strategi där man även tar hänsyn till fundamental analys.
    http://www.aktiespararna.se/Hitta-Ku...ktinformation/
    (Jag har inte använt ovanstående produkt, länken endast införd för att ta del av olika idéer)
    Med vänlig hälsning
    Bertil

    Comment


    • #3
      Ursprungligen postat av Holfve22 Visa inlägg
      Hej alla!

      Tänkte kolla om någon försökt sig på att skapa någon typ av momentumstrategi?
      Finns ju mycket forskning kring detta där aktier som presterat bäst under X-antal månader också tenderar att prestera bättre nästkommande Y-antal månader.

      Min tanke är tex att man sätter ihop en portfölj på OMXS30 där man efter varje månad viktar om till de 10 bäst presterande från förra månaden? (Tid och antal aktier lär ju såklart optimeras).

      Först väl dock någon typ av rankinglista som jag inte riktigt vet hur man ska få ihop? Kanske kan kalkylforskaren användas men då vet jag inte om det går att köra i analysern?

      Mvh Calle
      Om jag har förstått ditt upplägg rätt så handlar du bara en gång i månaden. Då borde en kalkyl fungera bra. Alternativt kalkyl eller script och spara kandidaterna i en globala celler med crcId som identifierar instrumentet.

      Comment


      • #4
        En rankingfunktion fonns i MFI3-modellen som du skulle kunna utgå ifrån. Spännande upplägg!

        Comment


        • #5
          Ok då ska vi se, jag har kollat lite på MFI-modellen och försökt modifiera den.

          Kan jag använda samma globala celler? givetvis inte vid live men i analysern?

          Jag har ingen aning om vad jag scriptat ihop nu, detta är lite över min kunskapsnivå men då jag gått både svenskt gymnasium och högskola har jag "copy and paste"-kunskaper i världsklass hehe.

          Om någon som faktisk kan scripta skulle kunna ge lite råd vore jag tacksam. Som det ör nu fick jag inga signaler i bänken(kanske pga cellerna är samma som i mfi?). Den här körs väl varje dag nu, men det går ju lätt att ändra senare till månadsvis.

          Här kommer min Frankenstein.


          { läs av aktuell rating från celler 830-833}
          rating1=getgvar(830)
          rating2=getgvar(831)
          rating3=getgvar(832)
          rating4=getgvar(833)

          { läs av aktiellt ID för kandidater }
          crc1=getgvar(835)
          crc2=getgvar(836)
          crc3=getgvar(837)
          crc4=getgvar(838)

          { räkna ut aktuell rating för den aktie scriptet exekveras på just nu }
          Nu=aref(c,1)
          Då=aref(c,23)
          Change=div(nu,då)


          { definiera klockslag då rating testas och skrivs till celler följt av själva handeln minuten efter}
          kl1720=le(mult(1440,sub(market(c),frac(date()))),8)
          kl1719=and(le(mult(1440,sub(market(c),frac(date()))),9),not(kl1720))
          ej_innehav=le(portfolio(v),0)


          högre_rate=and(gt(change,rating1),ej_innehav)

          skriv_rate=and(högre_rate,kl1719)
          setgvarif(rating1,831,skriv_rate)
          setgvarif(rating2,832,skriv_rate)
          setgvarif(rating3,833,skriv_rate)
          setgvarif(rating4,834,skriv_rate)
          setgvarif(crcid(),835,skriv_rate)
          setgvarif(crc1,836,skriv_rate)
          setgvarif(crc2,837,skriv_rate)
          setgvarif(crc3,838,skriv_rate)
          setgvarif(crc4,839,skriv_rate)

          {klockslag då alla celler nollställs direkt efter öppning}
          nolltid=lt(frac(date()),0.377)
          nollställ0=setgvarif(0,830,nolltid)
          nollställ1=setgvarif(0,831,nolltid)
          nollställ2=setgvarif(0,832,nolltid)
          nollställ3=setgvarif(0,833,nolltid)
          nollställ4=setgvarif(0,834,nolltid)
          nollställ5=setgvarif(0,835,nolltid)

          {läs av ID för sparade köpkandidater och jämför med CRC ID för den aktie scriptet exekveras på just nu}
          aktie1=getgvar(835)
          aktie2=getgvar(836)
          aktie3=getgvar(837)
          aktie4=getgvar(838)
          aktie5=getgvar(839)
          kandidat_a=if(gt(aktie1,0),aktie1,aktie2)
          kandidat_b=if(gt(kandidat_a,0),kandidat_a,aktie3)
          kandidat_c=if(gt(kandidat_b,0),kandidat_b,aktie4)
          kandidat_d=if(gt(kandidat_c,0),kandidat_c,aktie5)


          { koppla ihop logiska villkor och testa om CRC ID är lika med sparad kandidat. Köp i så fall och nollställ cellen så att nästa scriptkörningscykel läser nästa sparade kandidat}
          köp1=and(ej_innehav,and(öppet,kl1720))
          köp2=and(and(köp1,eqv(crcid(),kandidat_d)),gt(kandidat_d,0))
          setgvarif(0,835,or(nolltid,and(eqv(crcid(),aktie1),köp2)))
          setgvarif(0,836,or(nolltid,and(eqv(crcid(),aktie2),köp2)))
          setgvarif(0,837,or(nolltid,and(eqv(crcid(),aktie3),köp2)))
          setgvarif(0,838,or(nolltid,and(eqv(crcid(),aktie4),köp2)))
          setgvarif(0,839,or(nolltid,and(eqv(crcid(),aktie5),köp2)))
          retval(2,0)
          mult(köp2,10)

          Comment


          • #6
            Minnesreffen Öppet i Köp1 är ej definierad.

            Comment


            • #7
              Ibland är man blind. Ok nu får jag signaler. Men nu får jag signaler på alla aktier som är anslutna?

              också en fråga kring nedanstående del, "högre_rate" är ju låst mot rating1. Men borde inte rating3 jämföras med rating2 osv?

              högre_rate=and(gt(change,rating1),ej_innehav)

              skriv_rate=and(högre_rate,kl1719)
              setgvarif(rating1,831,skriv_rate)
              setgvarif(rating2,832,skriv_rate)
              setgvarif(rating3,833,skriv_rate)
              setgvarif(rating4,834,skriv_rate)
              setgvarif(crcid(),835,skriv_rate)
              setgvarif(crc1,836,skriv_rate)
              setgvarif(crc2,837,skriv_rate)
              setgvarif(crc3,838,skriv_rate)
              setgvarif(crc4,839,skriv_rate)

              Comment


              • #8
                Jag vet ej hur modellen är designad. Kanske cash-villkor sätter stopp för nya positioner. Annars kan du bygga en sorteringsfunktion som sorterar kandidaterna som utan innehav.

                Comment


                • #9
                  Ja så kan det vara, strippade några cash-villkor nämligen. Hur bygger man en sådan funktion? Det hade ju varit smidigt att modellen endast köper X-antal som rankas högst.

                  Mvh Calle

                  Comment


                  • #10
                    Sorteringsfunktionen finns redan där, det som händer är att "högre_rate" blir sant då en aktie hittas som får högre poäng. Då roteras värdena i cellerna ett steg upp och den nya vinnarkandidatens poäng lagras i cell 831 och dess CrcId i cell 836. Om en ny aktie med ännu högre poäng hittas upprepas proceduren så att man alltid har kandidaterna sorterade med högsta poäng i cell 831, nr två i cell 832 osv. Crcid lagras i motsvrande celler 836-839 så att scriptet kan känna att det "står på" en aktie som har fått poäng och avgöra om det finns innehav eller ej och därmed om den ska köpas.

                    Så det du behöver är något sätt att poängsätta dina kandidater så är det ganska enkelt att implementera sorteringsfunktionen.



                    Ps. Tillbaka till poolen.......

                    Comment


                    • #11
                      Ok tack Rikard! Som jag har nu använder jag:

                      Nu=aref(c,1)
                      Då=aref(c,23)
                      Change=div(Nu,Då)

                      Där %-förändringen är mitt enda poängsystem, borde inte det fungera?


                      Mvh Calle

                      Comment


                      • #12
                        Jo det räcker, då har du ett mått på "kvaliteten" på kandidaten. Som MFI-modellen är skriven nu körs sorteringen kl 17:19 och minuten senare själva handeln. Det går såklart att ändra på om man vill.


                        Comment

                        Working...
                        X