Django Trading System
Forex Trading Dagbok 1 - Automatiserad Forex Trading med OANDA API. Jag nämnde tidigare i QuantStart 2014 I Review artikeln att jag skulle spendera några av 2015 som skriver om automatiserad Forex trading. Given att jag själv brukar göra forskning på aktier och futures marknader Jag trodde att det skulle vara roligt och pedagogiskt att skriva om mina erfarenheter av att gå in i valutamarknaden i stil med en dagbok. Varje dagbokspost kommer att försöka bygga på alla tidigare, men bör också vara relativt självhäftad. I denna första posten I dagboken beskriver jag hur man skapar ett nytt mäklarekonto med OANDA, samt hur man skapar en grundläggande multithreaded händelsesdriven handelsmotor som automatiskt kan utföra handlar både i praktiken och i en levande miljö. Mycket tid att titta på händelsestyrd backtester främst för aktier och ETFs Den som jag presenterar nedan är inriktad mot valutahandel och kan användas för antingen pappershandel eller levande handel. Jag har skrivit Alla följande instruktioner för Ubuntu 14 04, men de ska enkelt översättas till Windows eller Mac OS X, med en Python-distribution som Anaconda. Det enda extra biblioteket som används för Python-handelsmotorn är begäran-biblioteket, vilket är nödvändigt för kommunikation till OANDA API. Since detta är det första inlägget direkt om handel med utländsk valuta och koden som presenteras nedan kan enkelt anpassas till en levande handelsmiljö, skulle jag vilja presentera följande ansvarsfriskrivningar. Ansvarsbegränsning Valutahandel på marginal har en hög nivå Av risk och kanske inte är lämplig för alla investerare Tidigare resultat är inte en indikation på framtida resultat Den höga hävstången kan fungera mot dig och för dig Innan du bestämmer dig för att investera i utländsk valuta bör du noga överväga dina investeringsmål, nivå av Erfarenhet och risk aptit Möjligheten finns att du kan bibehålla en förlust av vissa eller alla dina initiala investeringar och därmed Du borde inte investera pengar som du inte har råd att förlora. Du borde vara medveten om alla risker som är förknippade med handel med valutahandel och söka råd från en oberoende finansiell rådgivare om du är osäker. Den här mjukvaran tillhandahålls som är och vilken som helst uttryckt eller underförstådd Garantier, inklusive, men inte begränsade till, de underförstådda garantierna för säljbarhet och lämplighet för ett visst syfte, avvisas under inga omständigheter regenterna eller bidragsgivarna är ansvariga för direkta, indirekta, oavsiktliga, speciella, exemplifierande eller följdskador inklusive, men Inte begränsat till, upphandling av ersättnings varor eller tjänster förlust av användning, data eller vinst eller affärsavbrott men orsakade och på alla teorier om ansvar, vare sig i kontrakt, strängt ansvar eller skada inklusive försumlighet eller på annat sätt uppstår i något av användningen Av den här mjukvaran, även om den rekommenderas av möjligheten för sådan skada. Ställa in ett konto med OANDA. Den första frågan som kommer att tänka är Varför välja OANDA S Innebär att efter en bit av Googling runt för valutahandeln med API, såg jag att OANDA nyligen hade släppt ett korrekt REST API som lätt kunde kommuniceras med från nästan vilket språk som helst på ett extremt enkelt sätt. Efter att ha läst igenom utvecklarens API dokumentation jag Bestämde mig för att prova dem, åtminstone med ett praktikkonto. För att vara tydlig - Jag har inget tidigare eller befintligt förhållande med OANDA och tillhandahåller endast denna rekommendation utifrån min begränsade erfarenhet att leka med sin praxis API och lite kort användning för marknaden Data nedladdning medan du är anställd hos en fond tidigare Om någon har stött på någon annan forex mäklare som också har ett liknande modernt API så är jag glad att ge dem en titt också. Innan du använder API är det nödvändigt att registrera dig för en övning Konto För att göra detta, gå till registreringslänken Du kommer att se följande skärm. OANDA registreringsskärm. Du kan då logga in med dina inloggningsuppgifter. Se till att du väljer FxTradePractice-fliken från inloggningsskärmen. OANDA-inloggningsskärmen. När du behöver notera ditt konto-ID är det listat under den svarta rubriken My Funds bredvid Primärgruva är ett siffrigs nummer. Dessutom har du Kommer också behöva skapa en personlig API-token För att göra detta klickar du på Hantera API-åtkomst under fliken Övriga åtgärder längst ner till vänster. I det här skedet kommer du att kunna skapa en API-token. Du behöver nyckeln för användning senare, så se till att Att skriva ner det också. Du kommer nu vilja starta FXTrade Practice-applikationen, vilket gör det möjligt för oss att se de utförda orderna och vår pappersvinstförlust. Om du kör ett Ubuntu-system måste du installera en lite annorlunda version av Java I synnerhet Oracle-versionen av Java 8 Om du inte gör det kommer träningssimulatorn inte att laddas från webbläsaren. Jag körde dessa kommandon på mitt system. Du kommer nu att kunna starta träningsmiljöhandeln. Återgå till OANDA-instrumentbrädan Och klicka på den gröna hej Ghlighted Launch FXTrade Practice-länk Det kommer att ge en Java-dialogruta som frågar om du vill köra den. Klicka på Kör och fxTrade Practice-verktyget laddar gruvan i ett 15-min-ljusstegschema på EUR USD med citatpanelen till vänster. OANDA fxTrade Practice screen. At denna punkt är vi redo att börja utforma och koda vårt automatiserade Forex trading system mot OANDA API. Överblick över Trading Architecture. Om du har följt händelse-driven backtester serien för aktier och ETFs som jag skapade förra året, Du kommer att vara medveten om hur ett sådant händelsesdrivet handelssystem fungerar För dig som är nytt för händelsesdriven programvara, rekommenderar jag starkt att du läser igenom artikeln för att få insikt i hur de fungerar. I grunden är hela Programmet exekveras i ett infinte-loop som slutar endast när handelssystemet stängs av. Programmets centrala kommunikationsmekanism ges via en kö som innehåller händelser. Kön är ständigt frågad Att söka efter nya händelser När en händelse har tagits bort överst i köen måste den hanteras av en lämplig del av programmet. Därför kan ett marknadsdata-flöde skapa TickEvent s som placeras på köen när ett nytt marknadspris kommer A Signalgenererande strategibjekt kan skapa OrderEvent s som ska skickas till en mäklare. Nyttan av ett sådant system ges av det faktum att det spelar ingen roll vilken ordning eller typer av händelser som placeras i kön, eftersom de alltid kommer att Hanteras korrekt av den rätta komponenten inom programmet. Dessutom kan olika delar av programmet köras i separata trådar vilket innebär att det aldrig finns någon som väntar på någon viss komponent innan du behandlar någon annan. Detta är extremt användbart i algoritmiska handelssituationer där marknadsdata Foderhanterare och strategisignalgeneratorer har väsentligt olika prestandaegenskaper. Huvudhandelslingan ges av följande Python pseudo-kod. Som vi nämnde ovan torsken E körs i en oändlig slinga För det första köras köen för att hämta en ny händelse Om kön är tom, startar slingan helt enkelt efter en kort sömnperiod som kallas hjärtslag. Om en händelse hittas utvärderas dess typ och därefter den relevanta Modul antingen strategin eller exekveringshanteraren är skyldig att hantera händelsen och eventuellt generera nya som går tillbaka till köen. De grundläggande komponenterna som vi kommer att skapa för vårt handelssystem inkluderar följande. Streaming Price Handler - Detta kommer att hålla en Långvarig anslutning öppen för OANDAs servrar och skicka kryssdata, dvs bud, fråga över anslutningen för alla instrument som vi är intresserade av. Strategi Signal Generator - Detta kommer att ta en sekvens av tick händelser och använda dem för att generera handelsorder som ska utföras Av exekveringshanteraren. Execution Handler - Tar en uppsättning orderhändelser och utför dem sedan blankt med OANDA. Events - Dessa objekt utgör de meddelanden som skickas runt på händelserna Ue Vi behöver bara två för denna implementering, nämligen TickEvent och OrderEvent. Main Entry Point - Den viktigaste ingångspunkten inkluderar också handelslingan som kontinuerligt pollar meddelandekön och skickar meddelanden till rätt komponent. Detta kallas ofta händelsesslingan Eller händelsehanteraren. Vi kommer nu att diskutera genomförandet av koden i detalj Nedan i artikeln finns en fullständig lista över alla källkodsfiler Om du placerar dem i samma katalog och kör python börjar du generera order, förutsatt att du har Fyllt i ditt konto-ID och autentiseringstoken från OANDA. Python Implementation. It är dåligt att lagra lösenord eller autentiseringsnycklar i en kodbas, eftersom du aldrig kan förutsäga vem som så småningom får få tillgång till ett projekt. I ett produktionssystem skulle vi lagra dessa referenser Som miljövariabler med systemet och sedan fråga dessa envvars varje gång koden omfördelas. Detta säkerställer att lösenord och autotoken aldrig är Lagras i ett versionsstyrningssystem. Men eftersom vi endast är intresserade av att bygga ett leksakshandelssystem och inte är berörda av produktionsdetaljer i den här artikeln kommer vi istället att separera dessa authistolen i en inställningsfil. I följande konfigurationsfil vi Ha en ordbok som heter MILJÖER som lagrar API-ändpunkterna för både OANDA-prisöverförings API och handels API. Varje underordbok innehåller tre separata API-ändpunkter, verklig övning och sandbox. Sandbox API är enbart för testkod och för att kontrollera att det inte finns några fel Eller buggar Det har inte tidstidsgarantier för de verkliga eller praktiska API: erna. I praktiken ger praktiken API möjlighet att pappershandel. Det innebär att det ger alla funktioner i det riktiga API-en på ett simulerat praktikkonto. Det verkliga API är Just det - det är live trading Om du använder den slutpunkten i din kod kommer den att handla mot ditt live konto saldo. VAR EXTREMT NUVARIG. VIKTIGT Vid handel mot praktiken Ce API kom ihåg att en viktig transaktionskostnad, den som påverkar marknaden inte beaktas Eftersom inga affärer faktiskt placeras i miljön måste denna kostnad redovisas på ett annat sätt på annat håll med hjälp av en marknadsimportmodell om du vill realistiskt bedöma prestanda. Följande använder vi praktikkontot som anges av DOMAIN-inställningen Vi behöver två separata ordböcker för domänerna, en var och en för komponenterna Streaming och trading API. Till sist har vi ACCESSTOKEN och ACCOUNTID Jag har fyllt de två nedan med dummy-ID så att du Kommer att behöva använda din egen som kan nås från OANDA-kontosidan. Nästa steg är att definiera händelser som köen ska använda för att hjälpa alla enskilda komponenter att kommunicera Vi behöver två TickEvent och OrderEvent Den första butiken information om instrument Marknadsdata som det bästa budet och handelstiden Den andra används för att överföra order till exekveringshanteraren och innehåller sålunda instrumentet, Antalet enheter att handla, ordertypmarknaden eller gränsen och sidan, dvs köp och sälj. För framtidssäkra våra händelsekoder kommer vi att skapa en basklass som heter Event och har alla händelser som ärva härifrån Koden tillhandahålls nedan In. Nästa klass vi ska skapa kommer att hantera handelsstrategin I den här demonstrationen kommer vi att skapa en ganska nonsensisk strategi som helt enkelt tar emot alla ticks på marknaden och på varje femte kryssning köper eller säljer 10.000 enheter av EUR USD. Tydligen är det en löjlig strategi Men det är fantastiskt för teständamål eftersom det är enkelt att koda och förstå. I framtida dagboksposter kommer vi att ersätta detta med något betydligt mer spännande som förhoppningsvis kommer att göra en vinst. Filen kan hittas nedan S jobba igenom det och se vad som händer För det första importerar vi slumpmässigt bibliotek och OrderEvent-objektet från Vi behöver slumpmässiga lib för att välja en slumpmässig köp - eller säljorder Vi behöver OrderEvent eftersom det här är hur Strategibjektet skickar order till händelsekön, som senare kommer att köras av exekveringshanteraren. TestRandomStrategy-klassen tar helt enkelt instrumentet i detta fall EUR USD, antal enheter och händelsekön som en uppsättning parametrar. Det skapar då En ticks counter som används för att berätta hur många TickEvent-instanser den har sett. Mest av arbetet sker i calculatesignalsmetoden, som helt enkelt tar en händelse, avgör om det är en TickEvent annars ignorerar och ökar tickräknaren. Det kontrollerar sedan för att se Om räkningen är delbar med 5 och sedan slumpmässigt köper eller säljer, med en order på marknaden, det angivna antalet enheter Det är verkligen inte världens största handelsstrategi, men det kommer att vara mer än lämpligt för våra OANDA mäklare API-teständamål. Nästa komponent är exekveringshanteraren Den här klassen har till uppgift att agera på OrderEvent-instanser och göra förfrågningar till mäklaren i det här fallet OANDA på ett dumt sätt Det finns ingen risk mana Byggnadsöverdrag eller övergripande byggnadskonstruktion Exekveringshanteraren kommer enkelt att genomföra någon order som den har fått. Vi måste skicka all autentiseringsinformation till Exekveringsklassen, inklusive domänpraxis, verklig eller sandlåda, åtkomsttoken och konto-ID Vi skapar då En säker anslutning till en av Pythons inbyggda i bibliotek. Mest av arbetet sker i exekuteorder Metoden kräver en händelse som en parameter Det konstruerar sedan två ordböcker - rubrikerna och parametrarna Dessa ordböcker kommer då att kodas delvis av urllib ett annat Python-bibliotek Att skickas som en POST-förfrågan till OANDAs API. Vi skickar parametrarna Content Type and Authorization, som inkluderar vår autentiseringsinformation. Dessutom kodar vi parametrarna, som inkluderar instrumentet EUR USD, enheter, ordertyp och sidoköp sälja äntligen , Vi gör begäran och sparar svaret. Den mest komplexa delen av handelssystemet är StreamingForexPrices-objektet, som hanterar Marknadsprisuppdateringarna från OANDA Det finns två metoder connecttostream och streamtoqueue. Den första metoden använder Python-förfrågningsbiblioteket för att ansluta till ett strömmande uttag med lämpliga rubriker och parametrar. Parametrarna inkluderar konto-ID och listan över nödvändiga instrument som ska lyssnas på För uppdateringar i det här fallet är det bara EUR USD Observera följande rad. Detta berättar att anslutningen ska strömas och hålls så öppen på långvarigt sätt. Den andra metoden försöker streamtoqueue faktiskt att ansluta till strömmen Om svaret inte är Framgångsrik dvs svarskoden är inte 200, då vi bara återvänder och avslutar Om det lyckas försöker vi ladda JSON-paketet som returneras till en Python-ordbok. Slutligen konverterar vi Python-ordlistan med instrumentet, budfråga och tidsstämpel till en TickEvent som Skickas till evenemangskön. Vi har nu alla huvudkomponenter på plats. Det sista steget är att paketera upp allt vi har skrivit hittills i ett huvudprogram Målet med den här filen, känd som att skapa två separata trådar, varav en kör prissättaren och den andra som driver handelshanteraren. Varför behöver vi två separata trådar? Enkelt så utför vi två separata kodstycken, båda Av vilka löpande körs Om vi skulle skapa ett icke-gängat program så skulle strömningsuttaget som används för prissättning uppdateringar aldrig någonsin släppa tillbaka till huvudkodsstigen och därför skulle vi aldrig faktiskt utföra någon handel på samma sätt om vi sprang Handelskretsen se nedan, skulle vi aldrig faktiskt returnera flödesbanan till prisströmmarutrymmet. Därför behöver vi flera trådar, en för varje komponent, så att de kan utföras självständigt. De kommer båda att kommunicera med varandra via händelsekön. Låt oss undersöka detta lite längre. Vi skapar två separata trådar med följande rader. Vi skickar funktionen eller metodnamnet till målet sökordsargument och skickar sedan en iterbar som en lista eller tupel till args keywor D-argumentet, som sedan skickar dessa argument till den faktiska metoden funktionen. Vi börjar båda båda trådarna med följande linjer. Därför kan vi köra två, effektivt oändliga loopning, kodsegment oberoende, vilka båda kommunicerar genom händelsekön. Observera att Python threading-biblioteket producerar inte en sann flerkärnad multithreaded miljö på grund av CPython-implementeringen av Python och Global Interpreter Lock GIL. Om du vill läsa mer om multithreading på Python, kolla in den här artikeln. Låt oss undersöka Resten av koden i detalj För det första importerar vi alla nödvändiga bibliotek, inklusive kötråd och tid. Vi importerar sedan alla ovanstående kodfiler. Personligen föredrar jag att kapitalisera några konfigurationsinställningar, vilket är en vana jag hämtade upp från att arbeta med Django. Efter Att vi definierar handelsfunktionen, som förklarades i Python-pseudokoden ovan. En oändlig stundslinga utförs medan True att kontinuerligt pollar från t Han händelsekö och hoppar bara om slingan om den är tom. Om en händelse hittas är det antingen en TickEvent eller en OrderEvent och då kallas lämplig komponent för att utföra det. I det här fallet är det antingen en strategi eller en exekveringshandlare. Slingan sover då bara för hjärtslag sekunder i detta fall 0 5 sekunder och fortsätter. Först definierar vi huvudpunkten för koden i huvudfunktionen. Det kommenteras väl, men jag kommer att sammanfatta här. I huvudsak instanserar vi händelsekön och definierar Instrumentenheterna Sedan skapar vi StreamingForexPrices prisströmmande klass och sedan får exekveringsexekveringsbehandlaren Båda få nödvändiga autentiseringsuppgifter som ges av OANDA när du skapar ett konto. Vi skapar sedan testRandomStrategy-instansen Slutligen definierar vi de två tråden och startar dem sedan . För att köra koden behöver du helt enkelt placera alla filer i samma katalog och ringa följande på terminalen. Notera att stoppa koden vid Detta steg kräver en hård död av Python-processen via Ctrl-Z eller motsvarande. Jag har inte lagt till en extra tråd för att hantera letar efter det som skulle behövas för att stoppa koden på ett säkert sätt. En potentiell sätt att stoppa koden på en Ubuntu Linux-maskin är Att skriva. Og sedan mata utmatningen av detta ett processnummer i följande. Var PROCESSID måste ersättas med utdata från pgrep Observera att detta inte är särskilt bra. I senare artiklar kommer vi att skapa en mer sofistikerad stoppstartsmekanism som Använder sig av Ubuntu s processövervakning för att handelssystemet ska kunna köra 24 7. Utgången efter 30 sekunder eller så, beroende på tidpunkten i förhållande till de viktigaste handelstiderna för EUR USD, för ovanstående kod anges nedan . De första fem linjerna visar JSON-kryssdata som returneras från OANDA med budpris. Därefter kan du se Exekveringsorderutgången samt JSON-svaret som returneras från OANDA, vilket bekräftar öppnandet av en köphandel för 10 000 enheter av EUR USD och det pris det uppnåddes på. Detta fortsätter att löpa på obestämd tid tills du dödar programmet med ett Ctrl-Z-kommando eller liknande. I senare artiklar kommer vi att utföra några nödvändiga förbättringar, inklusive. Forex strategier som genererar lönsamma signaler. Produktion infrastruktur - Remote server implementering och 24 7 övervakade handelssystem, med stopp startkapacitet. Portfölj och riskhantering - Portfölj och risk överlagringar för alla förslag till order från strategin. Flera strategier - Konstruera en portfölj av strategier Som integreras i riskhanteringsöverläggningen. Som med händelsestyrd backtester för aktier måste vi också skapa en forex-backtesting-modul som gör att vi kan göra snabb forskning och göra det enklare att distribuera strategier. Kom ihåg att ändra ACCOUNTID och ACCESSTOKEN. Just Komma igång med kvantitativ Trading. Making pengar med Python. Making Money med Python. A medan tillbaka en vän berättade för mig om något som kallas gemenskapsvaluta också känd som Local Exchange Trading System Den grundläggande idén om vilken är det Människor inom ett geografiskt område kan byta varor och tjänster med skräddarsydda utbyten snarare än traditionella pengar. Så kan du till exempel klippa några gräsmattor i utbyte mot gitarrundervisning, även om det inte är gitarrlärarens gräsmatta som du klippar. Ingen fysisk valuta som sådan, medlemmar av gemenskapens valuta förlita sig på volontärer för att hålla reda på hur mycket valuta de äger Jag tycker att detta är en underbar idé Det främjar sunda utbyten utan att behöva mudliga saker med något så vulgärt som pengar Men vad slog mig Efter lite forskning är hur hela systemet har ett brådskande behov av mekanisering Det finns ingen centraliserad plats för att se ditt konto eller sätt att göra transaktioner online, och Jag tänkte att det borde vara Så det har varit mitt hobbyprojekt under de senaste månaderna, jag har byggt en sådan webbplats som nyligen har kommit ihop till en punkt där jag tycker om att mäta hur mycket intresse det finns där har jag inte ens kommit Upp med ett namn än så, så jag har ringt det av den ganska oinspirerade moniker av Currency Site. Apologies för den vilseledande titeln på det här inlägget är jag utan skam. Användare av Valuta webbplats kan skapa en valuta som de kan använda för att hålla reda på Någon form av skuld Valutan skaparen eller leverantören anger policyen för hur nya pengar skapas och hanteras När pengar har skapats kan pengar skickas till andra användare direkt till ett användarnamn eller indirekt via en e-postadress, och användarna kan skaffa sina pengar genom att skapa olika Konton När pengar har skickats till en användare har leverantören ingen kontroll eftersom någon användare är fri att lagra sina pengar eller skicka dem till andra. För alla ändamål är Currency Site som online banking, men med en mycket trevligare användare Gränssnitt än Vilket nätbankssystem jag någonsin har använt som brukar vara ett användarfält. Användare kan också se hur mycket pengar har präglats och hur mycket är för närvarande i omlopp, dvs inte lagrat av leverantören, vilket bidrar till att upprätthålla förtroendet för systemet. Du kanske tror att det här låter bekant om du någonsin har stött på Bitcoin-projektet, men det finns några betydande skillnader. Den största skillnaden är att valutasidan fortfarande kräver förtroende för den enskilda eller organisationen som hanterar valutan, dvs leverantören, och där Det finns ingen tvångsbrist på att nya valutaförsörjare kan pruta nya pengar som de passar. Det är lite överlapp men användningsfallet för Valuta webbplats är potentiellt bredare om än begränsat i skala jämfört med Bitcoin Gemensamma valutaprojekt är vad jag hade i åtanke när jag arbetade På detta, men det är lika tillämpligt för en mängd andra användningsområden. Till exempel, säg en familj vi ska kalla dem, Smiths har några barn som inte gillar att göra th Eir sysslor, så föräldrarna skapar en valuta som heter Smith Dollars När lilla Bobby Smith gör sina läxor eller rensar upp sitt rum skickar hans föräldrar honom 10 Smith Dollars När Bobby har 100 Smith Dollars kan han betala dem för ett nytt videospel eller Spendera 15 för att stanna upp en extra timme Men om han ville, kunde han också skicka sin syster 5 Smith Dollars i utbyte mot ett lån på sin bärbara dator. Andra användningsområden kan vara anställda att hålla reda på vem som går för munkar eller ett par utbyte av favoriter Din fantasi för den där. Valutasidan är byggd med Django och jag har använt det utmärkta Bootstrap-biblioteket för temat. Webbplatsen är användbar för tillfället, men det finns fortfarande några saker jag vill göra med det innan jag trycker på den överallt Bara för att bevisa att det inte är vaporware, här är några skärmdumpar. Jag ska leta efter några modiga själar för att hjälpa mig att testa det här jag planerar att göra en privat beta där databasen kommer att torkas helt innan den går live en stund Kommer att ge mig möjlighet att rea Lly stryk ut kinks utan att behöva oroa dig för att göra en röra av DB Om du är intresserad av att hjälpa till, ta kontakt eller 1 om du läser på Google Jag är också intresserad av förslag på ett bra namn för Det här projektet Det verkar som om någon domän med någon form av referens till pengar eller valuta är taget inte förvånande antar jag. Jag m upp för att hjälpa testet Älska den här ideen x. Reply till Jean Paldan. Har du en titt på rippel för en väg till Gör denna skala. Där har pengarna du får ges av ersättningen som andra ger dig, och om du vill handla med någon som inte gav dig ett bidrag, försöker systemet hitta ett sätt att flytta pengarna över andra Människor, så båda har båda en ersättning i slutet av den här kedjan. Reaktivt på Arne Babenhauserheide. Value Function RLDirect RL. Värdesfunktion RL Q-learning Q-learning5. Direkt RL Q-learningQ-tabell Återkommande förstärkning Lärande RRL RRL5 RRL. RRL Financial Trading Framework. Agent RRL-trader. State. Reward tt 1.Action trading signal köp sälja kort lång neutralt håll. Differential Sharpe Ratio DSR vikt. T lång eller kort. Ft tecken summa w rw F vt Ft -1,1 kort -1, lång 1 viktviktvektor vt tröskel för neuralt nätverk rt pt - p. 1 vt viktvektor. Pt sum Rt Rt F rt-Ft-F transaktionskostnad 1. Differential Sharpe Ratio DSR skarvförhållande DSR hatt 0 Dt frac.
Comments
Post a Comment