Thursday 26 October 2017

Trading strategi quantmod


Jag är väldigt ny på R och försöker backa upp en strategi Ive programmerad redan i WealthLab. Flera saker jag förstår inte (och det fungerar inte självklart :) Jag får inte de snygga priserna snyggt i en vektor. eller någon form av vektor men det börjar med struktur och jag förstår inte riktigt vad den här funktionen gör. Det är varför min serie, ett samtal förmodligen inte fungerar. n-lön (serier) fungerar inte heller, men jag behöver det för Loop Så jag antar att om jag får dessa 2 frågor som svaras ska min strategi fungera. Jag är väldigt tacksam för någon hjälp .. R verkar ganska komplicerat även med programmeringserfarenhet på andra språk ja Jag typ av kopierade några rader kod från denna handledning och förstår verkligen inte den här raden. Jag menar serier, 1 Jag trodde skulle tillämpa funktionen f på kvotkvot 1 i serien. Men eftersom denna serie är lite komplicerad med struktur etc. fungerar det inte. I39m pratar om denna handledning: r-bloggersbacktesting-a-trading-strategi ndash MichiZH Jun 6 13 vid 14:22Införande av quantmod: Det är möjligt med en quantmod-funktion att ladda data från olika källor, inklusive. Yahoo Finance (OHLC data) Federal Reserve Bank of St. Louis FRED174 (11 000 ekonomiska serier) Google Finance (OHLC data) Oanda, Valutasidan (FX och Metals) MySQL databaser (Din lokala data) R binära format (.RData och. rda) Comma Separated Value-filer (.csv) Mer att komma med (RODBC, economagic, Rbloomberg.) Hur du frågar Göra data gt getSymbols (YHOO, srcgoogle) från google finance 1 YHOO gt getSymbols (GOOG, srcyahoo) från yahoo finance 1 GOOG gt getSymbols (DEXJPUS, srcFRED) FX-priser från FRED 1 DEXJPUS gt getSymbols (XPTUSD, srcOanda) Platinum från Oanda 1 XPTUSD Varje samtal resulterar i att data laddas direkt i ditt arbetsområde, med namnet på objektet som returneras från samtalet. Sort av praktisk, men det blir bättre. gt Ange uppslagsparametrar och spara för framtida sessioner. gt gt setSymbolLookup (YHOOgoogle, GOOGyahoo) gt setSymbolLookup (DEXJPUSFRED) gt setSymbolLookup (XPTUSDlist (nameXPTUSD, srcoanda)) gt saveSymbolLookup (filemysymbols. rda) gt nya sessioner call loadSymbolLookup (filemysymbols. rda) gt gt getSymbols (c (YHOO, GOOG, DEXJPUS, XPTUSD)) 1 YHOO GOOG DEXJPUS XPTUSD Nu är det enkelt att ladda data från olika källor till ditt arbetsområde (eller någon annan miljö) utan att uttryckligen kräva uppdrag eller ständigt minnesspecifika anslutningsparametrar. Tänk på det som ett lastkommando som kan hämta data från nästan var som helst. Testa det själv gettingdata. R Kartläggning med quantmod Nu när vi har några data kanske vi vill titta på det. Ange den nya funktionen chartSeries. För närvarande är det här ett bra verktyg för att visualisera finansiella tidsserier på ett sätt som många praktikanter känner till - linjekartor, samt OHLC-bar och ljusdiagram. Det finns bekvämlighetspaket till dessa olika stilar (lineChart, barChart. Och candleChart), men chartSeries gör det ganska enkelt att hantera data automatiskt på det lämpligaste sättet. En snabb titt på hur man skapar några diagram, inklusive vissa funktioner och en titt på vad som kommer i framtida utgåvor. gt Ange uppslagsparametrar och spara för framtida sessioner. gt gtSymbols (AAPL, srcyahoo) 1 AAPL gt barChart (AAPL) gt Lägg till flera färger och ändra bakgrund till white gt candleChart (AAPL, multi. colTRUE, themewhite) Non-OHLC och Volume serier hanteras automatiskt gt getSymbols (XPTUSD, srcoanda) 1 XPTUSD gt chartSeries (XPTUSD, namePlatinum (.oz) i USD) Platinum, nu varje vecka med anpassade färgstearinljus med hjälp av quantmod-funktionen till. weekly gt chartSeries (to. weekly (XPTUSD), up. colwhite, dn. colblue) Tekniska analysdiagramverktyg Från version 0.3-0 kan man nu lägga till tekniska analysstudier från paketet TTR till ovanstående diagram. En detaljerad exempelsida kommer att följa inom kort, men här är en del av godheten: Mycket bra teknisk funktionalitet från biblioteket av Josh Ulrich - på CRAN gt kräver (TTR) gt getSymbols (AAPL) 1 AAPL gt chartSeries (AAPL) gt addMACD ) gt addBBands () Använda data för att generera signaler Byggnadsmodeller kommer oftast att lämnas för en senare exempelserie, men för de som är ivriga att fortsätta slösa en fredagsmiddag på jobbet (när de flesta av mina besökare verkar synas), kommer jag att fortsätta. Modellering i R är vad R handlar om. Data förekommer i den här diskussionen mest allvarligt på grund av det faktum att mycket ekonomiska data inte finns i enskilda dataobjekt. Mycket, om inte allt, måste samlas in och aggregeras av dig, modellen. Det är här förhandsspecifika datakällor och anslutningsparametrar är så praktiska. setSymbolLookup gör det möjligt för modellerna att instruera quantmod till källdata - givet en viss symbol - på ett visst sätt. När man bygger modeller i R. ofta matas en formel till anpassningsfunktionen tillsammans med lämpligt dataobjekt att söka. För att hantera många olika källor är det nödvändigt att antingen skapa ett dataobjekt med alla kolumner som förutbestäms, ELLER att använda objekt som är synliga inom användarmiljön. Båda har uppenbara nackdelar - inte minst som är beroende av att modellen har manuellt laddat och anpassat serien i fråga. I bästa fall är det tidskrävande och definitivt inte särskilt upplysande. I värsta fall kan det vara farligt, eftersom datahantering i sig är felaktig. Datafel i forskning kan vara kostsamma, datafel i handel kan snabbt leda till en ny karriär. Som sagt kommer jag att omformulera villkoren i LICENSEN med angivande av fullständig garanti för denna programvara och alla R för den delen. Användare akta För att underlätta denna relativt unika dataförlust skapar quantmod dataobjekt för användning inom modelleringsprocessen, skapar en modellram internt efter att ha gått igenom en rad steg för att identifiera källkoden för data som krävs - laddas vid behov. specifyModel är arbetshästfunktionen för att hantera alla datafrågor, och dess hjälpfil ska läsas för att förstå vad som händer internt. För våra ändamål här är det tillräckligt att veta att man kan ange någon data inom samtalet att specificeraModel, och quantmod hanterar sökning och dataaggregering för dig. Naturligtvis måste uppgifterna vara lokaliserbara och unika, men det var troligen misstänkt. Letss ta en titt på ett exempel på specifyModel. gt Skapa ett quantmodobjekt för användning i gt i senare modellmontering. Observera att det finns ingen anledning att ladda data före handen. gt gt setSymbolLookup (SPYyahoo, VXNlist (nameVIX, srcyahoo)) gt gt mm lt - specifyModel (Nästa (OpCl (SPY)) OpCl (SPY) Cl (VIX)) gt gt modelData (mm) mm är nu ett quantmodobjekt som håller modellformel och datastruktur som medför följande (följande) perioder som är öppna för stängning av SampP 500 ETF (OpCl (SPY)) modelleras som ett fucntion av den aktuella perioden öppen för stängning och nuvarande stängning av VIX (Cl (VIX) ). Samtalet till modelData extraherar den relevanta datasatsen, med transformeringar applicerade magiskt. Du kan ta data och göra med det som du vill. En mer direkt funktion för att uppnå samma ända är buildData. Vad är nästa Vad sägs om några exempel på kvantmods datahantering Denna programvara är skriven och underhållen av Jeffrey A. Ryan. Se licens för detaljer om kopiering och användning. Copyright 2008. Jag har problem med att backtesting en Bollinger Band-strategi i R. Logiken är att jag vill ta en kort position om Close är större än Upper Band och stäng sedan positionen när den passerar genomsnittet. Jag vill också ta en lång position om Close är lägre än Lower Band, och Stäng positionen när den passerar medelvärdet. Hittills har jag det här: bbands lt - BBands (stockClose, n20, sd2) sig1 lt - Lag (ifelse ((stockClose gtbbandsup), - 1,0)) sig2 lt - Lag (ifelse ((stockClose ltbbandsdn), 1 , 0)) sig3 lt - Lag (ifelse (1, -1)) sig lt-sig1 sig2 Här är jag fast, hur använder jag sig3 för att få önskade resultatKategori Arkiv: Handelsstrategi I kom över den här videoserien under helgen, diskuterar en alternativhandlare hur han handlar kreditspridningar (främst letar efter genomsnittsbackback). De flesta av dig kommer att vara bekanta med bollingerband som en vanlig medelåtervändningsstrategi, i huvudsak tar du det rörliga genomsnittet och flyttar standardavvikelsen för beståndet. Du plottar sedan på ditt diagram det glidande medelvärdet och ett övre och nedre band (glidande medelvärde - standardavvikelser). Det antas att priset kommer att återgå till det glidande genomsnittet, vilket innebär att varje prisflytt till banden är en bra inträdespunkt. Ett vanligt problem med denna strategi är att det rörliga genomsnittet är en LAGGING-indikator och är ofta mycket långsamt för att spåra prisflyttningen om en lång återgångstid används. Video 1 presenterar en teknik som heter 8220linjära regressionskurvor8221 ca 10 min. Linjära regressionskurvor syftar till att lösa problemet med det rörliga genomsnittet är långsamt för att spåra priset. Linjär regressionskurva vs Enkelt rörligt medelvärde Se hur hårt den blåa linjära regressions kurvan följer den snabba priset, it8217s är avsevärt snabbare för att identifiera varv på marknaden där som det enkla glidande medlet har ett stort spårningsfel. MSE kunde tas för att kvantifiera tätheten. Hur man beräknar linjär regressionskurva: I det här exemplet har du 100 stängningspriser för ditt givna lager. Bar 1 är det äldsta priset, bar 100 är det senaste priset. Vi kommer att använda en 20-dagars regression. 1. Ta priserna 1-20 och rita linjen med bästa passform genom dem 2. I slutet av din bästa passform (så bar 20), rita en liten cirkel. 3. Ta priserna 2-21 och dra längden på bästa passformen genom dem 4. I slutet av din bästa passform (så bar 21) rita en liten cirkel 5. Upprepa upp till bar 100 6. Gå med alla dina små cirklar, det här är din 8216linjära regressionskurve8217 Så i ett nötskal sätter du bara ihop med ändar av en rullande linjär regression. Det här inlägget ser ut att undersöka om den välkända frasen 8220 desto högre risk desto högre belöning8221 gäller för FTSE 100-beståndsdelarna. Många modeller har försökt att fånga riskbelöningsmetod, den mest kända är Kapitaltilldelningsprissättningsmodellen (CAPM). CAPM försöker kvantifiera avkastningen på en investering som en investerare måste ta emot för att kunna kompenseras tillräckligt för den risk som de har tagit. Koden nedan beräknar den rullande standardavvikelsen för avkastningen, 8216risken8217, för FTSE 100-beståndsdelarna. Det grupperar sedan aktier i kvartiler med denna riskmått, grupperna uppdateras dagligen. Quartile 1 är de lägsta volatilitetslager, kvartil 2 är högst. Ett lika viktat (amt) index skapas för varje kvartil. Enligt ovanstående teori bör Q4 (high vol) producera den högsta kumulativa avkastningen. När man använder en 1 månad återgång för stdev-beräkningen finns det ett klart vinnande index, det lägsta volindexet (svart). Intressant är det 2: a bästa indexet det högsta volymprocentet (blått). Diagrammet ovan beräknas med hjälp av aritmetisk avkastning. När man använder en längre återgång på 250 dagar, ett handelsår är det högsta volymprojektet den bästa artisten och det lägsta volymindexet den värsta artisten. För kort lookback (30days) var lågvolymindex den bästa artisten. För lång återblick (250 dagar) var högvolymindex den bästa artisten. En möjlig förklaring (otestad) är att för en kort lookback är volatilitetsrisken metrisk mer känslig för rörelser i beståndet och därmed på ett nyhetsmeddelande har aktien en högre sannolikhet att flytta från det8217s nuvarande index till ett högre volymindex. Kanske är det inte rimligt att anta att högvolymindexet endast innehåller de aktier som nyligen har haft en tillfällig volatilitet och befinner sig i en konsolideringsperiod eller en genomsnittlig omgång. Eller för att sätta det på ett annat sätt för korta återslag innehåller högvolymindexet doesn8217t de beståndsdelar som är permanent höga volymer, medan för långa återkänningar utjämnas alla tillfälliga volvvikelser. Nedan är samma diagram som ovan men för geometrisk avkastning.

No comments:

Post a Comment