Deurlopende termynkontrakte vir back testing doeleindes Deur Michael Saal-Moore op 29 Januarie 2014 In 'n vorige artikel oor QuantStart ondersoek ons hoe om vry termynmark data aflaai vanaf Quandl. In hierdie artikel gaan ons die eienskappe van termynkontrakte dat 'n data uitdaging van 'n back testing oogpunt bespreek. In die besonder, die idee van die "deurlopende kontrak" en "roll opbrengste". Ons sal die belangrikste probleme van termynkontrakte uiteen te sit en bied 'n uitvoering in Python met pandas wat gedeeltelik die probleme kan verlig. Kort oorsig van termynkontrakte Futures is 'n vorm van die kontrak tussen twee partye vir die aankoop of verkoop van 'n hoeveelheid van 'n onderliggende bate teen 'n bepaalde datum in die toekoms getrek. Hierdie datum is bekend as die lewering of verstryking. Wanneer hierdie datum bereik die koper moet die fisiese onderliggende (of kontantekwivalent) te lewer aan die verkoper vir die prys ooreengekom op die vorming kontrak datum. In die praktyk termynmark verhandel op handel (in teenstelling met oor die toonbank - OTC handel) vir gestandaardiseerde hoeveelhede en eienskappe van die onderliggende. Die pryse is gemerk om elke dag te bemark. Futures is ongelooflik vloeistof en is baie gebruik vir spekulatiewe doeleindes. Terwyl termynmark is dikwels gebruik om die pryse van landbou-of industriële goedere te verskans, kan 'n termynkontrak word gevorm op enige tasbare of ontasbare onderliggende soos aandele indekse, rentekoerse van buitelandse valuta waardes. 'N Gedetailleerde lys van al die simbool kodes gebruik word vir termynkontrakte oor verskillende beurse kan gevind word op die CSI Data webwerf: Futures Feite. Die belangrikste verskil tussen 'n termynkontrak en eienaarskap is die feit dat 'n termynkontrak het 'n beperkte venster van beskikbaarheid uit hoofde van die vervaldatum. Op enige gegewe oomblik is daar 'n verskeidenheid van termynkontrakte op dieselfde onderliggende al met wisselende datums van verval nie. Die kontrak met die naaste vervaldatum staan bekend as die nabye kontrak. Die probleem wat ons in die gesig staar as kwantitatiewe handelaars is dat by enige punt in die tyd het ons 'n keuse van verskeie kontrakte waarmee om handel te dryf. So het ons te doen met 'n oorvleueling stel tydreekse eerder as 'n deurlopende stroom soos in die geval van aandele of buitelandse valuta. Die doel van hierdie artikel is om verskeie benaderings uiteen te bou van 'n deurlopende stroom van kontrakte van hierdie stel verskeie reeks en die werkinge wat verband hou met elke tegniek na vore te bring. Die vorming van 'n Deurlopende termynkontrak Die grootste probleem met die probeer om 'n deurlopende kontrak van die onderliggende kontrakte met wisselende aflewerings te genereer, is dat die kontrakte nie dikwels handel teen dieselfde prys. So situasies ontstaan waar hulle nie 'n gladde Splice voorsien van die een na die ander. Dit is te danke aan contango en backwardation effekte. Daar is verskeie benaderings tot hierdie probleem, wat ons nou bespreek aanpak. gemeenskaplike Benaderings Ongelukkig is daar nie 'n enkele "standaard" metode vir deelname aan termynkontrakte saam in die finansiële bedryf. Uiteindelik die gekose metode sal swaar hang af van die strategie in diens van die kontrakte en die metode van teregstelling. Ten spyte van die feit dat geen enkele metode bestaan daar 'n paar algemene benaderings: Back / Forward ( "Panama") Aanpassing Hierdie metode verlig die "gaping" oor verskeie kontrakte deur die verskuiwing elke kontrak sodanig dat die individu aflewerings aan te sluit in 'n gladde wyse om die aangrensende kontrakte. So die oop / beslote oor die vorige kontrakte by verstryking wedstryde op. Die grootste probleem met die Panama metode sluit die bekendstelling van 'n tendens vooroordeel, wat 'n groot drif sal stel om die pryse. Dit kan lei tot negatiewe data vir voldoende historiese kontrakte. Daarbenewens is daar 'n verlies van die relatiewe prys verskille as gevolg van 'n absolute verskuiwing in waardes. Dit beteken dat opbrengste is ingewikkeld om te bereken (of net plain verkeerd). proporsionele Aanpassing Die verhouding Aanpassing benadering is soortgelyk aan die aanpassing metode van hantering voorraad split in aandele. Eerder as om 'n absolute verskuiwing in die opeenvolgende kontrakte, is die verhouding van die ouer omlysting (naby) prys die nuwe oop prys wat gebruik word om die pryse van historiese kontrakte proporsioneel aan te pas. Dit laat 'n deurlopende stroom sonder 'n onderbreking van die berekening van die persentasie opbrengs. Die grootste probleem met proporsionele aanpassing is dat enige handel strategieë afhanklik n absolute prysvlak ook sal moet insgelyks aangepas word ten einde die korrekte sein uit te voer. Dit is 'n problematiese en fout sensitiewe proses. So hierdie tipe van deurlopende stroom is dikwels net nuttig vir opsomming statistiese analise, in teenstelling met direkte back testing navorsing. Roll / Deurlopende Reeks Die kern van hierdie benadering is om 'n deurlopende kontrak van opeenvolgende kontrakte te skep deur die neem van 'n lineêr geweeg deel van elke kontrak oor 'n aantal dae tot 'n gladder oorgang tussen elke verseker. Byvoorbeeld oorweeg vyf glad dae. Die prys op dag 1, $ P_1 $, is gelyk aan 80% van die ver kontrakprys ($ F_1 $) en 20% van die nabye kontrakprys ($ N_1 $). Net so, op dag 2 die prys is $ P_2 = 0.6 \ keer F_2 + 0.4 \ keer N_2 $. Bedags 5 het ons $ P_5 = 0.0 \ keer F_5 + 1.0 \ keer N_5 = N_5 $ en die kontrak dan net word 'n voortsetting van die nabye prys. So na vyf dae die kontrak glad transitioned van die ver na die wat naby is. Die probleem met die roll metode is dat dit vereis handel oor al vyf dae, wat transaksiekoste kan verhoog. Daar is ander minder algemene benaderings tot die probleem, maar ons sal dit hier voorkom. Roll-Return Vorming in Python en Pandas Die res van die artikel sal konsentreer op die implementering van die ewige reeks metode aangesien dit die meeste geskik is vir back testing. Dit is 'n nuttige manier om strategie pyplyn navorsing uit te voer. Ons gaan stik die WTI ru-olie "naby" en "ver" termynkontrak (simbool CL) ten einde 'n deurlopende prys reeks genereer. Ten tyde van die skryf van (Januarie 2014), die nabye kontrak is CLF2014 (Januarie) en die ver kontrak CLG2014 (Februarie). Ten einde die aflaai van termynkontrakte data uit te voer het ek gebruik van die Quandl plugin gemaak. Maak seker dat jy die korrekte Python virtuele omgewing stel op jou rekenaar en installeer die Quandl pakket deur te tik die volgende in die terminale: Noudat die Quandl pakket is geïnstalleer het, moet ons gebruik van Numpy en pandas te maak ten einde uit te voer die roll-opbrengste konstruksie. As jy nog nie het Numpy of pandas geïnstalleer, hier volg my handleiding. Skep 'n nuwe lêer en tik die volgende invoer state: Die belangrikste werk is in die futures_rollover_weights funksie gedra. Dit vereis 'n begindatum (die eerste datum van die nabye kontrak), 'n woordeboek van die kontrak vereffeningsdatums (expiry_dates), die simbole van die kontrakte en die aantal dae tot die kontrak oor (gebreke tot vyf) te rol. Die kommentaar hieronder verduidelik die kode: Nou dat die gewig matriks is opgestel, is dit moontlik om dit toe te pas om die individuele tydreekse. Die belangrikste funksie afgelaai die nabye en verre kontrakte, skep 'n enkele DataFrame vir beide, bou die roll gewig matrix en dan produseer uiteindelik 'n deurlopende reeks van beide pryse, gepaste gewig: Die produksie is soos volg: Dit kan gesien word dat die reeks is nou onafgebroke oor die twee kontrakte. Die volgende stap is om dit uit te voer vir verskeie aflewerings oor 'n verskeidenheid van jaar, afhangende van jou back testing behoeftes. Verwysings As jy wil graag meer detail in die vorming van deurlopende reeks van termynkontrakte pryse, dan moet jy 'n blik op die volgende skakels: Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansingsfondse.
No comments:
Post a Comment