Eget. Det går ej att simulera pararellt. Däremot har jag inte testat först till kvarn, dvs parallellt fast delar lasttrade, innehav, etc. Intressant idé.
Allmänt meddelande
Collapse
No announcement yet.
Fusion MultiStrategy
Collapse
X
-
Det kan bli olika signal eftersom timingen inte är exakt likadan i Fusion som i "originalmodellerna". De flesta dagarna kommer de signalera likadant men inte alltid. Fusion kanske blir vidareutvecklad mer som en egen strategi framöver.
Bifogar bild på ackumulerad avkastning sedan 2003 som jämförelse med Henrics variant att köra Coda under MA200 och Legato över. Klart intressant, och enkelt. Möjligen kan man använda MA200 för att ändra beteendent "intern" i Coda direkt så att den vässas även som fristående strategi.
Ser ut att bli högre vinst totalt med att bara switcha mellan strategierna också, så det kanske är den vägen vi ska gå istället.
Attached Files
Comment
-
Ursprungligen postat av Rikard Nilsson Visa inläggDet kan bli olika signal eftersom timingen inte är exakt likadan i Fusion som i "originalmodellerna". De flesta dagarna kommer de signalera likadant men inte alltid. Fusion kanske blir vidareutvecklad mer som en egen strategi framöver.
Bifogar bild på ackumulerad avkastning sedan 2003 som jämförelse med Henrics variant att köra Coda under MA200 och Legato över. Klart intressant, och enkelt. Möjligen kan man använda MA200 för att ändra beteendent "intern" i Coda direkt så att den vässas även som fristående strategi.
Ser ut att bli högre vinst totalt med att bara switcha mellan strategierna också, så det kanske är den vägen vi ska gå istället.
Skiljer mycket i max drawdown?
Undrar
Bertil
Comment
-
Jo det blir högre vinst och färre trades, just färre trades är kanske inte det första vi önskade med Fusion eftersom man då lika gärna kan köra Legato i princip. Men det är ju självklart intressant att koppla in olika strategier automatiskt beroende på börsklimatet. Jag gjorde ett enkelt test i Fusion med en switch med MA200 och fick följande avkastningsgraf sedan 2003 med 5 sek-animering. Följande vinstsiffror:
Avkastning 3673.64 kr 0.87% på 420 affärer under 22288:50:50 tim
Av dessa blankat 117 st med avkastning 1109.23 kr 0.93%
Innehav 195 st med vinst 4930.71 kr 2.53%
Innehav 108 st med förlust -2366.30 kr -2.14%
Blankning 78 st med vinst 1985.16 kr 2.47%
Blankning 39 st med förlust -875.93 kr -2.27%
PS. Ska prova en volatilitetsbaserad switch också....Attached Files
Comment
-
Och här är en variant med både MA200 och volatilitetsswitch, börjar se riktigt bra ut! De svarta områdena är när vollan är tillräckligt hög för att koppla in Coda istället för Legato.
Avkastning 4133.29 kr 0.69% på 584 affärer under 20177:03:56 tim
Av dessa blankat 195 st med avkastning 1603.03 kr 0.77%
Innehav 276 st med vinst 5016.72 kr 1.82%
Innehav 113 st med förlust -2486.46 kr -2.15%
Blankning 153 st med vinst 2238.80 kr 1.37%
Blankning 42 st med förlust -635.77 kr -1.46%
Scripten om någon vill labba vidare:
{ Fusion OMX index long 160419 }
$par1:=10 {0-30}
dagar:=20
advance:=5
pred1=find(lt(d,sub(const(d),30)),25,c,1)
pred2=find(lt(d,sub(const(d),60)),50,c,1)
pred3=find(lt(d,sub(const(d),90)),75,c,1)
pred4=find(lt(d,sub(const(d),120)),100,c,1)
pred5=find(lt(d,sub(const(d),150)),125,c,1)
steg=sub(23,mx(mn(advance,22),1))
år2=aref(c,236)
år3=aref(c,476)
år4=aref(c,729)
år5=aref(c,982)
år6=aref(c,1234)
medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)
p1=gt(roc(add(medel,pred_tot),5,%),0)
v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))
stängning=le(mult(1440,sub(market(c),frac(date()))),10)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
dagen_efter=gt(int(d),lasttrade(s,d))
hist=sub(macd2(n),macd2(t))
extremt=lt(hist,-5)
ma100=mov(c,150,s)
över=or(extremt,gt(c,ma100))
longL1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)
longL1b=and(lt(c,hhv(aref(c,1),3)),v4)
longL2=and(or(longL1a,longL1b),le(getgvar(854),0))
longL3=and(and(longL2,and(öppet,stängning)),dagen_efter)
setgvarif(1,854,longL3)
måndag=eqv(dayofweek(),1)
tisdag=eqv(dayofweek(),2)
ej_fredag=lt(dayofweek(),5)
under=lt(c,mov(c,100,s))
days=if(under,6,3)
köpC1=and(måndag,lt(l,llv(aref(l,1),3)))
köpC2=and(tisdag,lt(l,llv(aref(l,1),2)))
köpC3=and(or(or(köpC1,köpC2),and(lt(l,llv(aref(l,1),days:10)),ej_fredag)),le(getgvar(855),0))
köpC4=and(and(köpC3,and(öppet,stängning)),dagen_efter)
setgvarif(1,855,köpC4)
lägsta=llv(aref(c,1),dagar)
stoploss=gt(c,add(lasttrade(s,p),mult(3,atr(10))))
coverL1=lt(c,lägsta)
coverL2=and(or(stoploss,coverL1),and(or(stoploss,stängning),öppet))
coverL3=and(coverL2,lt(getgvar(854),0))
setgvarif(0,854,coverL3)
setgvarif(0,855,coverL3)
setgvarif(portfolio(v),857,1)
volla=stdev(div(c,aref(c,1)),22)
draw(volla,2,baa)
hög_vo=hhv(gt(volla,0.015),65)
draw(mult(hög_vo,20),2,ksbf)
ma200=mov(c,200,s)
under200=lt(aref(c,1),ma200)
fusion_pos=if(or(under200,hög_vo),getgvar(855),getgvar(854))
trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
and(lt(portfolio(v),fusion_pos),trade_time)
{ Fusion OMX index shrt 160419 }
$par1:=10 {0-30}
advance:=5
pred1=find(lt(d,sub(const(d),30)),25,c,1)
pred2=find(lt(d,sub(const(d),60)),50,c,1)
pred3=find(lt(d,sub(const(d),90)),75,c,1)
pred4=find(lt(d,sub(const(d),120)),100,c,1)
pred5=find(lt(d,sub(const(d),150)),125,c,1)
steg=sub(23,mx(mn(advance,22),1))
år2=aref(c,236)
år3=aref(c,476)
år4=aref(c,729)
år5=aref(c,982)
år6=aref(c,1234)
medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)
p1=lt(roc(add(medel,pred_tot),5,%),0)
v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))
stängning=le(mult(1440,sub(market(c),frac(date()))),8)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
dagen_efter=gt(int(d),lasttrade(b,d))
ma200=mov(c,200,s)
under=lt(c,ma200)
ej_extremt=gt(macd2(n),-50)
shrtL1=and(lt(c,aref(c,1)),under)
shrtL2=and(and(and(shrtL1,or(v1,v3)),ge(getgvar(854),0)),ej_extremt)
shrtL3=and(and(shrtL2,and(öppet,stängning)),dagen_efter)
setgvarif(-1,854,shrtL3)
ej_onsdag=not(eqv(dayofweek(),3))
shrtC1=and(ej_onsdag,gt(c,hhv(aref(c,1),2)))
shrtC2=and(shrtC1,lt(c,mov(c,150,s)))
shrtC3=and(shrtC2,ge(getgvar(855),0))
shrtC4=and(and(shrtC3,and(öppet,stängning)),dagen_efter)
setgvarif(-1,855,shrtC4)
ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))
lägre=lt(c,aref(c,1))
rättd=ge(dayofweek(),2)
stoploss=lt(c,sub(lasttrade(b,p),mult(3,atr(10))))
sellL1=lt(c,llv(aref(c,1),2))
sellL2=and(and(sellL1,or(stoploss,or(ve1,ve3))),gt(getgvar(854),0))
sellL3=and(and(and(sellL2,and(or(lägre,stängning),öppet)),rättd),dagen_efter)
setgvarif(0,854,sellL3)
xhi=hhv(aref(c,1),2)
ma1=mov(c,100,s)
high=and(gt(c,xhi),lt(c,ma1))
fredag=eqv(dayofweek(),5)
säljC1=or(stoploss,or(high,fredag))
säljC2=and(säljC1,gt(getgvar(855),0))
säljC3=and(and(säljC2,and(öppet,stängning)),dagen_efter)
setgvarif(0,855,säljC3)
volla=stdev(div(c,aref(c,1)),22)
draw(volla,2,baa)
hög_vo=hhv(gt(volla,0.015),65)
ma200=mov(c,200,s)
under200=lt(aref(c,1),ma200)
fusion_pos=if(or(ynder200,hög_vo),getgvar(855),getgvar(854))
trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
and(gt(portfolio(v),fusion_pos),trade_time)Attached Files
Comment
-
Ännu en variant, under volatila perioder kör man både Legato och Coda med 50% vikt vardera, under lugna upptrender kör man 100% Legato. Ser ut att bli ännu jämnare avkastning men aningen lägre totalvinst. Det man får tänka på med siffrorna här är att 1 punkt bara motsvarar 50% exponering.
Avkastning 7363.01 kr 1.04% på 704 affärer under 21163:43:55 tim
Av dessa blankat 218 st med avkastning 2849.54 kr 1.28%
Innehav 307 st med vinst 8355.87 kr 2.78%
Innehav 179 st med förlust -3842.40 kr -2.04%
Blankning 157 st med vinst 3749.01 kr 2.27%
Blankning 61 st med förlust -899.47 kr -1.57%Attached FilesLast edited by Rikard Autostock; 2016-05-01, 13:42.
Comment
-
Nu börjar vi närma oss tror jag, avkastningsgrafen är rak som en halvdan spik i alla fall. Har skippat MA200-delen och kör bara volatilitetsbaserad switch, och får följande:
Avkastning 7556.58 kr 1.05% på 713 affärer under 21204:01:55 tim
Av dessa blankat 214 st med avkastning 2942.97 kr 1.35%
Innehav 316 st med vinst 8419.51 kr 2.71%
Innehav 183 st med förlust -3805.90 kr -1.98%
Blankning 156 st med vinst 3754.48 kr 2.29%
Blankning 58 st med förlust -811.51 kr -1.50%
Ska vi köra denna som officiell version tycker ni?
Attached FilesLast edited by Rikard Autostock; 2016-05-01, 14:41.
Comment
-
Såklart, här är scripten:
{ Fusion OMX index long 160501 }
$par1:=10 {0-30}
dagar:=20
advance:=5
pred1=find(lt(d,sub(const(d),30)),25,c,1)
pred2=find(lt(d,sub(const(d),60)),50,c,1)
pred3=find(lt(d,sub(const(d),90)),75,c,1)
pred4=find(lt(d,sub(const(d),120)),100,c,1)
pred5=find(lt(d,sub(const(d),150)),125,c,1)
steg=sub(23,mx(mn(advance,22),1))
år2=aref(c,236)
år3=aref(c,476)
år4=aref(c,729)
år5=aref(c,982)
år6=aref(c,1234)
medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)
p1=gt(roc(add(medel,pred_tot),5,%),0)
v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))
stängning=le(mult(1440,sub(market(c),frac(date()))),10)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
dagen_efter=gt(int(d),lasttrade(s,d))
hist=sub(macd2(n),macd2(t))
extremt=lt(hist,-5)
ma100=mov(c,150,s)
över=or(extremt,gt(c,ma100))
longL1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)
longL1b=and(lt(c,hhv(aref(c,1),3)),v4)
longL2=and(or(longL1a,longL1b),le(getgvar(854),0))
longL3=and(and(longL2,and(öppet,stängning)),dagen_efter)
setgvarif(1,854,longL3)
måndag=eqv(dayofweek(),1)
tisdag=eqv(dayofweek(),2)
ej_fredag=lt(dayofweek(),5)
under=lt(c,mov(c,100,s))
days=if(under,6,3)
köpC1=and(måndag,lt(l,llv(aref(l,1),3)))
köpC2=and(tisdag,lt(l,llv(aref(l,1),2)))
köpC3=and(or(or(köpC1,köpC2),and(lt(l,llv(aref(l,1),days:10)),ej_fredag)),le(getgvar(855),0))
köpC4=and(and(köpC3,and(öppet,stängning)),dagen_efter)
setgvarif(1,855,köpC4)
lägsta=llv(aref(c,1),dagar)
stoploss=gt(c,add(lasttrade(s,p),mult(3,atr(10))))
coverL1=lt(c,lägsta)
coverL2=and(or(stoploss,coverL1),and(or(stoploss,stängning),öppet))
coverL3=and(coverL2,lt(getgvar(854),0))
setgvarif(0,854,coverL3)
setgvarif(0,855,coverL3)
setgvarif(portfolio(v),857,1)
volla=stdev(div(c,aref(c,1)),22)
draw(volla,2,baa)
hög_vo=hhv(gt(volla,0.015),100)
draw(mult(hög_vo,20),2,ksbf)
fusion_pos=if(hög_vo,add(getgvar(855),getgvar(854)),mult(2,getgvar(854)))
trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
and(lt(portfolio(v),fusion_pos),trade_time)
{ Fusion OMX index shrt 160501 }
$par1:=10 {0-30}
advance:=5
pred1=find(lt(d,sub(const(d),30)),25,c,1)
pred2=find(lt(d,sub(const(d),60)),50,c,1)
pred3=find(lt(d,sub(const(d),90)),75,c,1)
pred4=find(lt(d,sub(const(d),120)),100,c,1)
pred5=find(lt(d,sub(const(d),150)),125,c,1)
steg=sub(23,mx(mn(advance,22),1))
år2=aref(c,236)
år3=aref(c,476)
år4=aref(c,729)
år5=aref(c,982)
år6=aref(c,1234)
medel=mov(aref(div(add(add(add(add(år2,år3),år4),år5),år6),6),steg:22),5,s)
pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)
p1=lt(roc(add(medel,pred_tot),5,%),0)
v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))
stängning=le(mult(1440,sub(market(c),frac(date()))),8)
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
dagen_efter=gt(int(d),lasttrade(b,d))
ma200=mov(c,200,s)
under=lt(c,ma200)
ej_extremt=gt(macd2(n),-50)
shrtL1=and(lt(c,aref(c,1)),under)
shrtL2=and(and(and(shrtL1,or(v1,v3)),ge(getgvar(854),0)),ej_extremt)
shrtL3=and(and(shrtL2,and(öppet,stängning)),dagen_efter)
setgvarif(-1,854,shrtL3)
ej_onsdag=not(eqv(dayofweek(),3))
shrtC1=and(ej_onsdag,gt(c,hhv(aref(c,1),2)))
shrtC2=and(shrtC1,lt(c,mov(c,150,s)))
shrtC3=and(shrtC2,ge(getgvar(855),0))
shrtC4=and(and(shrtC3,and(öppet,stängning)),dagen_efter)
setgvarif(-1,855,shrtC4)
ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))
lägre=lt(c,aref(c,1))
rättd=ge(dayofweek(),2)
stoploss=lt(c,sub(lasttrade(b,p),mult(3,atr(10))))
sellL1=lt(c,llv(aref(c,1),2))
sellL2=and(and(sellL1,or(stoploss,or(ve1,ve3))),gt(getgvar(854),0))
sellL3=and(and(and(sellL2,and(or(lägre,stängning),öppet)),rättd),dagen_efter)
setgvarif(0,854,sellL3)
xhi=hhv(aref(c,1),2)
ma1=mov(c,100,s)
high=and(gt(c,xhi),lt(c,ma1))
fredag=eqv(dayofweek(),5)
säljC1=or(stoploss,or(high,fredag))
säljC2=and(säljC1,gt(getgvar(855),0))
säljC3=and(and(säljC2,and(öppet,stängning)),dagen_efter)
setgvarif(0,855,säljC3)
volla=stdev(div(c,aref(c,1)),22)
draw(volla,2,baa)
hög_vo=hhv(gt(volla,0.015),100)
fusion_pos=if(hög_vo,add(getgvar(855),getgvar(854)),mult(2,getgvar(854)))
trade_time=le(mult(1440,sub(market(c),frac(date()))),7)
and(gt(portfolio(v),fusion_pos),trade_time)
Comment
Comment