Eftersom att rullning inte fungerar har det varit svårt att simulera terminer under längre perioder. I praktiken sker ett manuellt köp och försäljning för att nolla den gamla terminen och ta position i den nya. I gamla AT gick det att bygga en sammansatt termin. Den nya terminen skarvades med den sammansatta en gång i månaden.
Genom att skapa en virtuell sammansatt termin går det att simulera terminshandel i AutoTrader under längre perioder än en månad. Det fungerar genom att två ordermodeller läggs till projektet. Dessa ordermodeller väljer aktuell termin från en lista av terminer och gör terminsbyten. Listan utökas efterhand som terminerna förfaller. För att särskilja vilken termin som ska handlas används crcid().
Det är "betascript" och ingen patentlösning. Synpunkter,förslag och eventuella problem är välkomna.
De ordinarie ordermodellerna måste ha tillägget eqv(crcid(),GetGvar(100). Tex,
……
köp1=and(signal, le(portfolio(v),0))
köp2=and(köp1,eqv(crcid(),GetGvar(100)))
De två sl)-scripten nedan läggs in i varsin ordermodell och ansluts till projektet. Byte sker automatiskt med inlagda datum för terminsbyte. Direkt efter sista möjliga tid för ordinarie signal sker en uppdatering av aktuell termin. Om modellen ligger lång tar köpscriptet(ordermodellen) position i den nya terminen och samtidigt tar säljscriptet(ordermodellen) exit av den gamla. Om modellen ligger blankad tar sälscriptet(ordermodellen) en kort position i den nya terminen och samtidigt tar köpscriptet(ordermodellen) exit av den gamla blankade positionen.
Köpscript terminsbyte:
{Sammansatt Termin: Köp nya och cover blankad gamla}
i1(
idag=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),7) {efter sista handelstid i signalmodellerna}
O4F=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),5)),eqv(dayofmonth(),15)),stängning)
O4G=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),6)),eqv(dayofmonth(),18)),stängning)
O4H=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),7)),eqv(dayofmonth(),17)),stängning)
O4I=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),8)),eqv(dayofmonth(),14)),stängning)
SetGvarIf(1391064143,100,O4F)
SetGvarIf(1395367544,100,O4G)
SetGvarIf(1484249413,100,O4H)
SetGvarIf(1505080178,100,O4I)
SetGvarIf(1391064143,100,eqv(GetGvar(100),0))
quant=and(and(idag,not(stängning)),eqv(crcid(),GetGvar(100)))
SetGvarIf(portfolio(v),101,quant)
covershort=and(not(eqv(crcid(),GetGvar(100))),lt(portfolio(v),0))
roll=and(eqv(crcid(),GetGvar(100)),lt(portfolio(v),GetGvar(101)))
and(and(or(covershort,roll),idag),stängning)
)
Säljscript Terminsbyte:
{Sammansatt Termin: blanka nya och sälj long gamla}
i1(
idag=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),7) {efter sista handelstid i signalmodellerna}
O4F=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),5)),eqv(dayofmonth(),15)),stängning)
O4G=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),6)),eqv(dayofmonth(),18)),stängning)
O4H=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),7)),eqv(dayofmonth(),17)),stängning)
O4I=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),8)),eqv(dayofmonth(),14)),stängning)
SetGvarIf(1391064143,100,O4F)
SetGvarIf(1395367544,100,O4G)
SetGvarIf(1484249413,100,O4H)
SetGvarIf(1505080178,100,O4I)
SetGvarIf(1391064143,100,eqv(GetGvar(100),0))
quant=and(and(idag,not(stängning)),eqv(crcid(),GetGvar(100)))
SetGvarIf(portfolio(v),101,quant)
exitlong=and(not(eqv(crcid(),GetGvar(100))),gt(portfolio(v),0))
roll=and(eqv(crcid(),GetGvar(100)),gt(portfolio(v),GetGvar(101)))
and(and(or(exitlong,roll),idag),stängning)
)
Va) Terminsbyte_Köp:
instrument=eqv(crcid(),GetGvar(100))
orderantal=if(instrument,add(GetGvar(101),portfolio(v)),abs(portfolio(v)))
Va) Terminsbyte_Sälj:
instrument=eqv(crcid(),GetGvar(100))
orderantal=if(instrument,add(mult(GetGvar(101),-1),portfolio(v)),abs(portfolio(v)))
Genom att skapa en virtuell sammansatt termin går det att simulera terminshandel i AutoTrader under längre perioder än en månad. Det fungerar genom att två ordermodeller läggs till projektet. Dessa ordermodeller väljer aktuell termin från en lista av terminer och gör terminsbyten. Listan utökas efterhand som terminerna förfaller. För att särskilja vilken termin som ska handlas används crcid().
Det är "betascript" och ingen patentlösning. Synpunkter,förslag och eventuella problem är välkomna.
De ordinarie ordermodellerna måste ha tillägget eqv(crcid(),GetGvar(100). Tex,
……
köp1=and(signal, le(portfolio(v),0))
köp2=and(köp1,eqv(crcid(),GetGvar(100)))
De två sl)-scripten nedan läggs in i varsin ordermodell och ansluts till projektet. Byte sker automatiskt med inlagda datum för terminsbyte. Direkt efter sista möjliga tid för ordinarie signal sker en uppdatering av aktuell termin. Om modellen ligger lång tar köpscriptet(ordermodellen) position i den nya terminen och samtidigt tar säljscriptet(ordermodellen) exit av den gamla. Om modellen ligger blankad tar sälscriptet(ordermodellen) en kort position i den nya terminen och samtidigt tar köpscriptet(ordermodellen) exit av den gamla blankade positionen.
Köpscript terminsbyte:
{Sammansatt Termin: Köp nya och cover blankad gamla}
i1(
idag=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),7) {efter sista handelstid i signalmodellerna}
O4F=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),5)),eqv(dayofmonth(),15)),stängning)
O4G=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),6)),eqv(dayofmonth(),18)),stängning)
O4H=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),7)),eqv(dayofmonth(),17)),stängning)
O4I=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),8)),eqv(dayofmonth(),14)),stängning)
SetGvarIf(1391064143,100,O4F)
SetGvarIf(1395367544,100,O4G)
SetGvarIf(1484249413,100,O4H)
SetGvarIf(1505080178,100,O4I)
SetGvarIf(1391064143,100,eqv(GetGvar(100),0))
quant=and(and(idag,not(stängning)),eqv(crcid(),GetGvar(100)))
SetGvarIf(portfolio(v),101,quant)
covershort=and(not(eqv(crcid(),GetGvar(100))),lt(portfolio(v),0))
roll=and(eqv(crcid(),GetGvar(100)),lt(portfolio(v),GetGvar(101)))
and(and(or(covershort,roll),idag),stängning)
)
Säljscript Terminsbyte:
{Sammansatt Termin: blanka nya och sälj long gamla}
i1(
idag=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),7) {efter sista handelstid i signalmodellerna}
O4F=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),5)),eqv(dayofmonth(),15)),stängning)
O4G=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),6)),eqv(dayofmonth(),18)),stängning)
O4H=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),7)),eqv(dayofmonth(),17)),stängning)
O4I=and(and(and(eqv(yearnumber(),2014),eqv(monthnumber(),8)),eqv(dayofmonth(),14)),stängning)
SetGvarIf(1391064143,100,O4F)
SetGvarIf(1395367544,100,O4G)
SetGvarIf(1484249413,100,O4H)
SetGvarIf(1505080178,100,O4I)
SetGvarIf(1391064143,100,eqv(GetGvar(100),0))
quant=and(and(idag,not(stängning)),eqv(crcid(),GetGvar(100)))
SetGvarIf(portfolio(v),101,quant)
exitlong=and(not(eqv(crcid(),GetGvar(100))),gt(portfolio(v),0))
roll=and(eqv(crcid(),GetGvar(100)),gt(portfolio(v),GetGvar(101)))
and(and(or(exitlong,roll),idag),stängning)
)
Va) Terminsbyte_Köp:
instrument=eqv(crcid(),GetGvar(100))
orderantal=if(instrument,add(GetGvar(101),portfolio(v)),abs(portfolio(v)))
Va) Terminsbyte_Sälj:
instrument=eqv(crcid(),GetGvar(100))
orderantal=if(instrument,add(mult(GetGvar(101),-1),portfolio(v)),abs(portfolio(v)))
Comment