Allmänt meddelande

Collapse
No announcement yet.

Söndagsstrategin från Nineambell

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

  • #16
    Tjena!

    Först och främst är det jag som är författaren till hemsidan och kul att jag kan hjälpa till att inspirera.

    Jag är medveten om att jag inte har tagit hänsyn till Survivorship bias och därför är troligtvis resultatet lite överskattat, men det är bra att du tar upp det.

    Jag har dock inte velat, eller kunskapen att, testa "strategin" så som om man hade kört den live, alltså med money management och hänsyn till att man endast kan ta ett visst antal affärer. Ville mer visa vad för edge denna signal kan ge.

    Jag har inte tillräckligt med kunskap för att kunna göra portföljtester i autotrader.

    Henric, jag antar att du har varit med ett tag men var har du lärt dig allt detta? Väldigt imponerade.

    Skulle också vilja lära mig att göra tester där jag tar hänsyn till vilka aktier som fanns med i LC det året och göra urvalskriterier om flera aktier triggar samtidigt.

    MVH
    Calle

    Comment


    • #17
      Hej Calle!
      Trevlig hemsida du har. Såg här https://nineambell.com/daglig-paverkan-google-sheets/ att du beräknar de ingående aktiernas påverkan på indexet. Jag har gjort ett antal NAT script som gör liknande och sorterar fram den aktie som påverkar indexet mest. Om någon är intresserad av dessa så starta en ny tråd så kan jag redovisa.
      mvh
      Bertil

      Comment


      • #18
        Jag har lärt mig en del den hårda vägen. Även en del litteratur och poddar. Många tar upp tex survivorship som en möjlig fälla. Särskilt när det gäller flyers som tex Fingerprint när den gick upp tustentals procent och analys under längre perioder. Grundläggande portföljhantering är ganska enkelt i Autotrader. Sedan får man bygga på med mer avancerade upplägg.

        Leta generella edgar är ett bra sätt. Man får dock vara försiktig. Finns det tillräcklig med signaler och hur hanteras signaler i kluster. Även om edgen visar bra resultat tas tex ingen hänsyn till risk.

        Comment


        • #19
          Ursprungligen postat av Bertil Visa inlägg
          Och här är OMXS30 index som man måste slå.

          mvh
          Bertil
          Håller med om att det är lite svag avkastning. 2015-2019 ser den ut att klara sig bra mot index. Förmodligen får den svårt då trenden är stark utan att tillräckligt många aktier dippar. Samtidigt verkar den klara djupare daler bättre index. Sedan beror det också på hur strategin samverkar med andra strategier.

          Comment


          • #20
            Eftersom man såklart kör många strategier parallellt är den här ett bra tillskott till robotportföljen om den går starkt när index backar.

            Comment


            • #21
              Ursprungligen postat av Henric Visa inlägg
              Jag körde lite tester. Är det Deja Vu? Har vi inte kört denna strategi på forumet eller mycket liknande med köp på djupare dipp och exit 5 dagars medelvärde.

              Jag körde med en positionsstorlek på 8% av depåvärdet och max exponering vid ordertillfället x1=depåvärdet. Detta för att inte få för stora slumpmässiga effekter av återinvestering. Hur man sedan kör är en annan sak. Om flera aktier triggar samtidigt tas först position i de aktier med bästa 3månaders momentum. Annars har jag inte tweakat något. Varje år körs med de akter som då ingick i large cap. Största värdetappet skedde med 16% under 2011.

              2009 7%
              2010 5%
              2011 0 %
              2012 7%
              2013 4%
              2014 -1%
              2015 12%
              2016 11%
              2017 5%
              2018 4%
              2019 8%
              Hur löser du "max exponering vid ordertillfället x1=depåvärdet" mot ett fiktivt konto. Det är rimligtvis kontrollerat genom et va) scrip?
              Finns det färdigt i AT eller du lust att dela med dig?
              Jag har script som köper utan koll på hur mycket som redan är köpt. Då fiktiva konton accepterar att ligga på minus så handlas det fritt vilket inte är så bra alla gånger.

              Comment


              • #22
                Om du kör Long-only på testkontot kan du mäta sammanlagda värdet av öppna positioner som Cash(A). Cash(T) kommer också fungera som Tillgängligt att handla för.

                Så i princip ok att handla så länge Cash(T) är större än noll.

                Comment


                • #23
                  cash(t)>0 kommer att leda till en liten översponering, men effekten beror ju så klart på hur stor den enskilda allokeringen är.

                  I simulering och testkonto fungerar det utmärkt med cash(a) och cash(t)
                  Handlar man aktier direkt på det skarpa blir formeln lite annorlunda.

                  För att inte lägga en massa nollorder och skvättar brukar jag även lägga kontrollen av cash(t) i triggerscripten. Dels ska cash(t) vara positiv och dels större än ett minibelopp. Hur mycket cash(t) som krävs beror på allokeringen av enskilda aktier. Det finns ingen patenterad lösning, utan man får välja något som passar en själv.

                  Det går att ha gränser i belopp och/eller procent av depåvärdet. Tex:

                  Belopp:=xxxx
                  pengarOK=gt(cash(t),Belopp)

                  allokering:=0.1
                  egetkapital=add(cash(a),cash(t))
                  pengarOK=gt(cash(t),mult(egetkapital,div(allokering,2))

                  Delar man allokeringen med 2 får man en genomsnittlig exponeringen av x1. Ju mindre allokering ju mindre betydelse får detta. Tex om allokeringen är 10% kommer exponeringen att pendla mellan 0,95-1,05 som beror på hur portföljen utvecklas och ändras.

                  Comment


                  • #24
                    Precis, det blir överexponerat med 1 aktieposition. Men det är fixat enligt nedan, där ligger villkor i triggerscriptet som mäter kontot och hur stor en position är och avgör om det finns tillräckligt med ledigt kapital. En fördel att handla på testkonto är att det blir lätt att nettopositionera med andra aktiestrategier via PC Link (som numera är gratis). Då kan man replikera nettopositionen till antingen aktier eller minifutures på skarpa kontot, vilket man föredrar.


                    { Mr Market buy }

                    insats_per_aktie:=0.08

                    konto=sub(add(cash(a),cash(t)),mult(2,cash(s)))
                    pengar_finns=gt(cash(t),mult(insats_per_aktie,konto))
                    setgvarif(insats_per_aktie,803,1)
                    mv1=ema(c,26)
                    ma5=mov(c,5,s)
                    keltner=sub(mv1,mult(3,atr(26)))
                    draw(keltner,2,dgqbw)
                    ej_innehav=le(portfolio(v),0)

                    stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                    öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                    buy1=and(and(lt(c,keltner),ej_innehav),pengar_finns)
                    buy2=and(and(buy1,lt(keltner,ma5)),and(stängning,öppet))
                    mult(buy2,10)



                    { Mr Market Sell }

                    mv1=ema(c,26)
                    ma5=mov(c,5,s)
                    keltner=sub(mv1,mult(3,atr(26)))

                    innehav=ge(portfolio(v),0)

                    stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                    öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                    sell1=and(gt(ma5,keltner),innehav)
                    sell2=and(and(sell1,gt({c}rsiws(2),{ma5}95)),and(stängning,öppet))
                    mult(sell2,10)


                    { Mr Market insats 190923 }

                    i1(
                    hävstång=getgvar(803)
                    konto=sub(add(cash(a),cash(t)),mult(2,abs(cash(s))))
                    målantal=mult(int(div(konto,c)),hävstång)
                    övermål=Ge(portfolio(v),målantal)
                    insats=If(övermål,0,SUB(målantal,portfolio(v)))
                    int(insats)
                    )

                    Scripten ovan har en moddad exit som ger högre vinst, men det är ju enkelt att byta tillbaka till "original-exit".

                    Genomsnittsvinst/trade ökar från ca 0,66% till 2,5% med mitt aktieurval, ca 20 st från OMXS30. Har inte bytt aktie per årtal, mitt intresse ligger främst i att se hur bra strategin funkar över tid på "random" aktier.

                    Attached Files

                    Comment


                    • #25
                      Ska man vara petig kommer du nu ha 4% genomsnittlig underexponering om allokeringen sätts till 8%. Kan påverka en del i längden.

                      pengar_finns=gt(cash(t),mult(div(insats_per_aktie,2),konto))

                      rsi-villkoret verkar bra, men kanske lite riskabelt i kraftigt fallande marknad. Får testa lite.

                      Det viktiga är inte minna kommentarer här och därför inkluderar jag Rikards senaste inlägg.


                      Ursprungligen postat av Rikard Autostock Visa inlägg
                      Precis, det blir överexponerat med 1 aktieposition. Men det är fixat enligt nedan, där ligger villkor i triggerscriptet som mäter kontot och hur stor en position är och avgör om det finns tillräckligt med ledigt kapital. En fördel att handla på testkonto är att det blir lätt att nettopositionera med andra aktiestrategier via PC Link (som numera är gratis). Då kan man replikera nettopositionen till antingen aktier eller minifutures på skarpa kontot, vilket man föredrar.


                      { Mr Market buy }

                      insats_per_aktie:=0.08

                      konto=sub(add(cash(a),cash(t)),mult(2,cash(s)))
                      pengar_finns=gt(cash(t),mult(insats_per_aktie,konto))
                      setgvarif(insats_per_aktie,803,1)
                      mv1=ema(c,26)
                      ma5=mov(c,5,s)
                      keltner=sub(mv1,mult(3,atr(26)))
                      draw(keltner,2,dgqbw)
                      ej_innehav=le(portfolio(v),0)

                      stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                      öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                      buy1=and(and(lt(c,keltner),ej_innehav),pengar_finns)
                      buy2=and(and(buy1,lt(keltner,ma5)),and(stängning,öppet))
                      mult(buy2,10)



                      { Mr Market Sell }

                      mv1=ema(c,26)
                      ma5=mov(c,5,s)
                      keltner=sub(mv1,mult(3,atr(26)))

                      innehav=ge(portfolio(v),0)

                      stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                      öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                      sell1=and(gt(ma5,keltner),innehav)
                      sell2=and(and(sell1,gt({c}rsiws(2),{ma5}95)),and(stängning,öppet))
                      mult(sell2,10)


                      { Mr Market insats 190923 }

                      i1(
                      hävstång=getgvar(803)
                      konto=sub(add(cash(a),cash(t)),mult(2,abs(cash(s))))
                      målantal=mult(int(div(konto,c)),hävstång)
                      övermål=Ge(portfolio(v),målantal)
                      insats=If(övermål,0,SUB(målantal,portfolio(v)))
                      int(insats)
                      )

                      Scripten ovan har en moddad exit som ger högre vinst, men det är ju enkelt att byta tillbaka till "original-exit".

                      Genomsnittsvinst/trade ökar från ca 0,66% till 2,5% med mitt aktieurval, ca 20 st från OMXS30. Har inte bytt aktie per årtal, mitt intresse ligger främst i att se hur bra strategin funkar över tid på "random" aktier.

                      Comment


                      • #26
                        Hehe, härligt att vara petig!

                        Enda nackdelen jag ser med RSI-villkoret är att avkastningen tenderar att vara lägre senaste 2 åren, men det går kanske att hitta en "hybrid" mellan de båda villkoren.

                        Comment


                        • #27
                          Ok.
                          Har jag förstått det rätt i exemplet nedan där jag tagit va)-scriptet från Smart Beta (SB) och ändrat näst sista raden.
                          Om hävstången är satt till exempel 0.1 i köpscriptet så kommer SB handla i runda slängar 9-11 positioner beroende om värdet går upp eller ner tills det fiktiva kontot börjar bli tomt på pengar?

                          { Smart Beta insats Maxköp kontostorlek 190923 }

                          ---
                          Har tagit bort kod som inte fungerade...
                          se istället post #29
                          ---


                          EDIT: Såg inte att ni skrivit en massa medan jag klurade på antalscriptet.

                          Om koden ovan fungerar som tänkt så borde den läggas in som standard i SB och MASS så exponeringen inte rusar iväg vilket det kan göra idag om man kopplar på en hel del papper.
                          Jag testade koden och den agerar inte rätt, men klurar vidare...
                          Last edited by EMA; 2019-09-23, 13:42.

                          Comment


                          • #28
                            Smart Beta handlar olika tillgångsslag som i teorin har varienrande korrelation. Enskilda aktier har förmodligen en större korrelation med aktieportföljen och kör man på testkonto kan man ändå styra den skarpa exponeringen med kontostorlek. Visst kan det bli situationer då korrelationen närmar sig 1. Tex under 2008.
                            Det går att själv lägga in villkor som tillåter en max exponering, men är nog individuellt. Rikard ska egentligen svara på SB.

                            Comment


                            • #29
                              Den här koden ser vid en snabb simulering ut att fungera som tänkt.

                              Rikard, du får gärna titta igenom koden så jag inte gjort någon "tankevurpa".

                              Jag har bara ändrat 1 rad ifrån originalscriptet:
                              målantal=If(gt(cash(T),0),mult(int(div(konto,c)),hävstång),0)

                              { Smart Beta insats Maxköp kontostorlek 190923 }

                              i1(
                              hävstång=getgvar(9987) {kräver att hävstång < 1}
                              konto=sub(add(cash(a),cash(t)),mult(2,abs(cash(s))))
                              målantal=If(gt(cash(T),0),mult(int(div(konto,c)),hävstång),0)
                              övermål=Ge(portfolio(v),målantal)
                              insats=If(övermål,0,SUB(målantal,portfolio(v)))
                              int(insats)
                              )

                              Comment


                              • #30
                                Det förutsätter att det inte finns några blankningar på testkontot, annars ok.

                                Comment

                                Working...
                                X