Allmänt meddelande

Collapse
No announcement yet.

Korrelation DAX-OMXS30

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

  • Korrelation DAX-OMXS30

    Halloj!
    I denna tråd tänkte jag ge lite tips om hur man skall scripta korrelationen mellan DAX och OMXS30 ur daytradingsynvinkel. För att göra det lite enklare för mig så använder jag terminen istället för OMXS30 indexet

    1) Hur bestämmer man bäst openingkursen för OMXS30 (terminen)

    a) man kan använda cmpref(O,0,a) (röd)
    b) man kan räkna baklänges till dagens öppning (grön)

    -------------------------------------------------

    { 190812 }

    perioder01:=Sub(int(mult(frac(d),1440)),540)

    i1(
    OMXS30imorse=cmpref(c,perioder01,a)

    draw(cmpref(O,0,c),3,rqb0)
    draw(OMXS30imorse,4,dgqb0)

    mult(1,0)
    )

    {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}

    ---------------------------------
    Perioder01 är alltså antalet minuter bakåt till öppningen.

    1) den röda öppningskurvan stämmer inte överens med när den blå linjen börjar att ritas.
    2) Den gröna kurvan har samma problem som den röda plus att den är hoppig (bugg).

    Att öppningskursen inte stämmer beror på att kurserna inte kommer igång kl 09.00 utan 09.01-09.02

    mvh
    Bertil

    Attached Files

  • #2
    Vi vill istället använda öppningskursen från 09.02 samt försöka att går runt buggen genom medelvärdesbildning.

    ------------------
    perioder01:=Sub(int(mult(frac(d),1440)),542)

    i1(
    OMXS30imorse=mov(cmpref(c,perioder01,a),12)

    draw(cmpref(O,0,c),3,rqb0)
    draw(OMXS30imorse,4,dgqb0)

    mult(1,0)
    )

    {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}

    -------------------------------------

    mvh
    Bertil
    Attached Files

    Comment


    • #3
      Min erfarenhet är att aldrig använda öppningskursen i dagsupplösning rakt av vid simulering. Jag skrev mycket om det tidigare. Sedan vet jag inte om det skiljer mellan diagram och simulering. Öppningskursen är första kursen för dagen som inte är den samma som gårdagens sista intradag. Risken är att det blir curve-fiting i de fall man använder gårdagens kurs vare sig det är öppningskurs eller ej. Orsaken är nog att vid simulering får det inte saknas någon data och om det gör det fylls perioden med sista insamlade data. Har tidigare analyserat detta många gånger. Om inget har ändrats gäller det fortfarande. Dessutom bör man använda eqv(int(date()),int(d))

      Comment


      • #4
        Jag håller med Henric, därför bestämmer jag öppningskursen kl 09.03 nedan (man kan använda 09.02, men DAX kan vara seg att komma igång)

        Vi önskar nu bestämma öppningskursen för DAX på samma sätt, samt justera DAX till samma område som OMXS30 för att kunna rita in dem i samma diagram.
        ---------------------------------

        { 190812 }

        perioder01:=Sub(int(mult(frac(d),1440)),543)

        i1(
        OMXS30imorse=mov(cmpref(c,perioder01,a),12)
        DAXimorse=mov(cmpref(c,perioder01,b),12)
        DAXjust=mult(div(OMXS30imorse,DAXimorse),cmpref(c,0,b))


        draw(DAXjust,3,rqb0)

        mult(1,0)
        )

        {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}

        ------------------------------
        mvh
        Bertil
        Attached Files
        Last edited by Bertil; 2019-08-12, 14:04.

        Comment


        • #5
          Vi ser av diagram03 ovan att korrelationen mellan DAX och OMXS30 verkar stor samt att DAX leder och OMXS30 hänger med.

          Jag vill nu ta fram en metod som bestämmer hur stor korrelationen är, dvs är korrelationen stor så kan man studera DAX men om den är liten så vinner man inget på det.

          Om DAX och OMXS30 går i synk minut för minut är korrelationen stor, dvs båda stiger samtidigt och båda sjunker samtidigt. Skall vi mäta korrelationen över hela dagen eller bara några timmar? Jag använder perioder02 där man antingen kan använda hela dagen (perioder01) eller valfritt antal minuter.

          Jag tar även fram en korrelationsfaktor korre01 som är 1 om det är full synk och 0 om indexen är helt okorrelerade. (Om de är omvänt korrelerade dvs OMXS30 går alltid upp då DAX går ner och vice versa blir korrelationsfaktorn -1). Man kan ju inte visa några siffervärden ej heller globala variabler live så därför multiplicerar jag med 10 samt adderar öppningskursen för att man skall kunna se korrelationen i diagrammet.
          ---------------------------------------------

          { 190812 }

          perioder01:=Sub(int(mult(frac(d),1440)),543)
          perioder02:=MN(perioder01,120)

          i1(
          OMXS30imorse=mov(cmpref(c,perioder01,a),12)
          DAXimorse=mov(cmpref(c,perioder01,b),12)
          DAXjust=mult(div(OMXS30imorse,DAXimorse),cmpref(c,0,b))

          samma01=and(gt(cmpref(c,0,a),cmpref(c,5,a)),gt(cmpref(c,0,b),cmpref(c,5,b)))
          samma02=and(Lt(cmpref(c,0,a),cmpref(c,5,a)),Lt(cmpref(c,0,b),cmpref(c,5,b)))
          korre01=div(sum(if(or(samma01,samma02),1,-1),perioder02:510),perioder02)

          korre02=mult(korre01,10)
          kurva01=add(OMXS30imorse,korre02)

          draw(OMXS30imorse,1,bqb0)
          draw(kurva01,2,kqb0)
          draw(DAXjust,3,rqb0)

          mult(1,0)
          )

          {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}

          ---------------------------------------------------
          mvh
          Bertil


          Edit: För att minska bruset så ändrade jag till 5 (rött) Detta ökar den intressanta korrelationen. Se diagram05
          Attached Files
          Last edited by Bertil; 2019-08-12, 15:18.

          Comment


          • #6
            Tänker du dig något liknande Alpha Shark där man har en hedge i ett av instrumenten, eller tänker du mer att man handlar när graferna spread:ar isär, och handlar den tillgången som laggar (OMX) med förhoppning att den tar samma väg som Dax och minskar spreaden?
            Last edited by PerG; 2019-08-12, 15:55.

            Comment


            • #7
              Ursprungligen postat av PerG Visa inlägg
              Tänker du dig något liknande Alpha Shark där man har en hedge i ett av instrumenten, eller tänker du mer att man handlar när graferna spread:ar isär, och handlar den tillgången som laggar (OMX) med förhoppning att den tar samma väg som Dax och minskar spreaden?
              Jag tänker att man handlar OMXS30 och får vägledning av DAX då korrelationen är stor och DAX drar.
              --------------------------
              { 190812 }
              { Följ DAX köp }

              perioder01:=Sub(int(mult(frac(d),1440)),543)
              perioder02:=MN(perioder01,120)

              i1(

              OMXS30imorse=mov(cmpref(c,perioder01,a),12)
              DAXimorse=mov(cmpref(c,perioder01,b),12)
              DAXjust=mult(div(OMXS30imorse,DAXimorse),cmpref(c,0,b))

              samma01=and(gt(cmpref(c,0,a),cmpref(c,5,a)),gt(cmpref(c,0,b),cmpref(c,5,b)))
              samma02=and(Lt(cmpref(c,0,a),cmpref(c,5,a)),Lt(cmpref(c,0,b),cmpref(c,5,b)))
              korre01=div(sum(if(or(samma01,samma02),1,-1),perioder02:510),perioder02)
              korre02=mult(korre01,10)
              kurva01=add(OMXS30imorse,korre02)

              diffomx=sub(c,aref(c,5))
              diffdax=mult(div(sub(cmpref(c,0,b),cmpref(c,5,b)),Daximorse),omxs30imorse)
              villkor01=Gt(diffomx,1)
              villkor02=Gt(diffdax,1)
              villkor03=Lt(sub(c,daxjust),-1)
              villkor04=Gt(korre01,0.5)
              villkor05=Gt(sub(diffdax,diffomx),0.3)

              köpa=and(and(and(and(villkor01,villkor02),villkor03),villkor04),villkor05)
              mult(köpa,20)
              )

              {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}
              -------------------------------------------

              { 190812 }
              { Följ DAX sälj }

              perioder01:=Sub(int(mult(frac(d),1440)),543)
              perioder02:=MN(perioder01,120)


              i1(

              OMXS30imorse=mov(cmpref(c,perioder01,a),12)
              DAXimorse=mov(cmpref(c,perioder01,b),12)
              DAXjust=mult(div(OMXS30imorse,DAXimorse),cmpref(c,0,b))

              samma01=and(gt(cmpref(c,0,a),cmpref(c,5,a)),gt(cmpref(c,0,b),cmpref(c,5,b)))
              samma02=and(Lt(cmpref(c,0,a),cmpref(c,5,a)),Lt(cmpref(c,0,b),cmpref(c,5,b)))
              korre01=div(sum(if(or(samma01,samma02),1,-1),perioder02:510),perioder02)
              korre02=mult(korre01,10)
              kurva01=add(OMXS30imorse,korre02)

              diffomx=sub(c,aref(c,5))
              diffdax=mult(div(sub(cmpref(c,0,b),cmpref(c,5,b)),Daximorse),omxs30imorse)
              villkor01=Lt(diffomx,-1)
              villkor02=Lt(diffdax,-1)
              villkor03=Gt(sub(c,daxjust),1)
              villkor04=Gt(korre01,0.5)
              villkor05=Lt(sub(diffdax,diffomx),-0.3)


              sälja=and(and(and(and(villkor01,villkor02),villkor03),villkor04),villkor05)
              kurva02=add(OMXS30imorse,0)

              mult(sälja,20)
              )

              {@A(1,)@B(1,B-IDX-DAXI)@C(0,)}

              -----------------------------------

              mvh
              Bertil


              Edit: Om man tänker Alpha Shark så kan man ju ha som villkor att korrelationen skall vara låg om man skall hedga.
              Attached Files
              Last edited by Bertil; 2019-08-12, 17:01.

              Comment


              • #8
                Först tar man tar koden från inlägg #5 och gör ett dummyscript och lägger korre01 i en global variabel.

                I de vanliga daytradingscripten har man sedan ett villkor på denna globala variabel. Om värdet är över 0.6 så vet man att man har DAX i ryggen. Är värdet mycket lågt är de okorrelerade och OMXS30 lever sitt egna liv. Kanske finns det ett intervall som man skall undvika ? 0.3-0.5 ? Var och en får labba och se.
                Man får lägga in den globala variabeln som extrakolumn i analysatorn och titta efter om det finns något samband. Jag har inte hunnit göra detta ännu.

                mvh
                Bertil

                Comment


                • #9
                  För praktisk tillämpning av korrelationen läs i tråden Studsa.

                  mvh
                  Bertil

                  Comment


                  • #10
                    En komplettering.
                    Om man önskar att se hur OMXS30 ändrat sig relativt DAX sedan dagens börsöppning se den röda linjen.
                    Om man önskar att se hur OMXS30 ändrat sig relativt DAX sedan gårdagens börsstängning se den mörkgröna linjen.
                    Om man önskar att se hur OMXS30 ändrat sig relativt DAX sedan förrgårdagens börsstängning se den magentafärgade linjen.

                    Om man ser på 16/8-19 mitt på dagen så har OMXS30 presterat bättre än DAX både jämfört med morgondagens börsöppning, gårdagens stängning och förrgårdagens stängning.

                    Man kan även göra liknande jämförelser med OMXSPI.
                    Nedanstående script innehåller även köpvillkor, men de är inte så lyckade...

                    { 190812 }
                    { Följ DAX köp }

                    innehav:=Portfolio(v)
                    ok_att_handla:=Eqv(innehav,0)

                    tidspärr1:=510
                    lt1:=LastTrade(B,D)
                    minSedanKöp:=Mult(Sub(Date(),lt1),1440)
                    delay_ok:=gt(minSedanKöp,tidspärr1)
                    perioder01:=Sub(int(mult(frac(d),1440)),543)
                    perioder02:=MN(perioder01,120)


                    i1(
                    tid1=gt(int(mult(frac(d),1440)),550)
                    tid2=lt(int(mult(frac(d),1440)),1020)

                    OMXS30imorse=mov(cmpref(c,perioder01,a),12)
                    DAXimorse=mov(cmpref(c,perioder01,b),12)
                    DAXjust=mult(div(OMXS30imorse,DAXimorse),cmpref(c,0,b))
                    SPIimorse=mov(cmpref(c,perioder01,c),12)
                    SPIjust=mult(div(OMXS30imorse,SPIimorse),cmpref(c,0,c))

                    OMXS30igårclose=mov(cmpref(c,add(perioder01,12),a),12)
                    DAXigårclose=mov(cmpref(c,add(perioder01,12),b),12)
                    DAXprecis=mult(div(OMXS30igårclose,DAXigårclose),cmpref(c,0,b))

                    OMXS30iförrgårclose=mov(cmpref(c,add(perioder01,522),a),12)
                    DAXiförrgårclose=mov(cmpref(c,add(perioder01,522),b),12)
                    DAXnu=mult(div(OMXS30iförrgårclose,DAXiförrgårclose),cmpref(c,0,b))


                    samma01=and(gt(cmpref(c,0,a),cmpref(c,5,a)),gt(cmpref(c,0,b),cmpref(c,5,b)))
                    samma02=and(Lt(cmpref(c,0,a),cmpref(c,5,a)),Lt(cmpref(c,0,b),cmpref(c,5,b)))
                    korre01=div(sum(if(or(samma01,samma02),1,-1),perioder02:510),perioder02)
                    korre02=mult(korre01,10)
                    kurva01=add(OMXS30imorse,korre02)

                    samma11=and(gt(cmpref(c,0,a),cmpref(c,5,a)),gt(cmpref(c,0,c),cmpref(c,5,c)))
                    samma12=and(Lt(cmpref(c,0,a),cmpref(c,5,a)),Lt(cmpref(c,0,c),cmpref(c,5,c)))
                    korre11=div(sum(if(or(samma11,samma12),1,-1),perioder02:510),perioder02)
                    korre12=mult(korre11,10)
                    kurva11=add(OMXS30imorse,korre02)


                    diffomx=sub(c,aref(c,5))
                    diffdax=mult(div(sub(cmpref(c,0,b),cmpref(c,5,b)),Daximorse),omxs30imorse)
                    villkor01=Gt(diffomx,0.1)
                    villkor02=Gt(diffdax,0.1)
                    villkor03=Lt(sub(c,daxjust),-0.1)
                    villkor04=Gt(korre01,0.5)
                    villkor05=Gt(sub(diffdax,diffomx),0.1)
                    villkor06=Gt(DAXjust,DAXprecis)
                    villkor07=Gt(sub(c,SPIjust),0.1)

                    bbw01=BolBands(25,2,U)
                    bbw02=wild(bbw01,25)
                    bbw03=BolBands(25,2,L)
                    bbw04=wild(bbw03,25)
                    bbw05=div(add(bbw02,bbw04),2)
                    bbw06=wild(c,25)
                    bbw07=mov(c,3)
                    villkor132=Gt(div(sub(bbw05,aref(bbw05,5)),bbw05),0.0001)
                    villkor131=Gt(sub(bbw06,bbw05),0.1)
                    villkor133=Gt(bbw07,aref(bbw07,0.1))
                    villkor134=Gt(sub(aref(bbw06,20),aref(bbw05,20)),0.1)
                    villkor135=Ge(add(add(add(villkor131,villkor132),villkor133),villkor134),3)
                    villkor500=Ge(Add(add(add(add(add(villkor01,villkor02),villkor03),villkor05),villkor06),villkor07),5)

                    köpa=and(villkor135,villkor500)

                    draw(DAXjust,1,rqb0)
                    draw(DAXprecis,2,dgqb0)
                    draw(DAXnu,4,mqb0)
                    { draw(SPIjust,3,kqb0) }


                    ditt_köpscript=And(And(And(köpa,tid1),tid2),delay_ok)
                    köpsignal=And(ditt_köpscript,ok_att_handla)
                    Mult(köpsignal,0)
                    )

                    {@A(1,)@B(1,B-IDX-DAXI)@C(1,SX All-Sha)}

                    -----------------------------------------------

                    mvh
                    Bertil
                    Attached Files

                    Comment

                    Working...
                    X