Backtest handelsstrategier med Amazon Kinesis Data Streams långsiktiga retention och Amazon SageMaker

Källnod: 1883045

Realtidsinsikt är avgörande när det gäller att bygga handelsstrategier. Varje försening av datainsikt kan kosta mycket pengar för handlarna. Ofta måste du titta på historiska marknadstrender för att förutsäga framtida handelsmönster och lägga rätt bud. Mer historisk data du analyserar, bättre handelsförutsägelse får du. Återspårning av strömmande data kan vara knepigt eftersom det kräver sofistikerade lagrings- och analysmekanismer.

Amazon Kinesis dataströmmar tillåter vår kund att lagra streamingdata i upp till ett år. Amazon Kinesis Dataströmmar Långtidslagring (LTR) för strömmande data gör det möjligt att använda samma plattform för både realtidsdata och äldre data som lagras i Amazon Kinesis Data Streams. Till exempel kan man träna maskininlärningsalgoritmer för finansiell handel, marknadsföringsanpassning och rekommendationsmodeller utan att flytta data till ett annat datalager eller skriva en ny applikation. Kunder kan också uppfylla vissa bestämmelser om datalagring, inklusive under HIPAA och FedRAMP, genom att använda långtidslagring. Detta förenklar således dataintagsarkitekturen för vårt handelsanvändningsfall som vi kommer att diskutera i det här inlägget.

I posten Bygga algoritmiska handelsstrategier med Amazon SageMaker, visade vi hur man backtestar handelsstrategier med Amazon SageMaker med historisk aktiekursdata lagrad i Amazon enkel lagringstjänst (Amazon S3). I det här inlägget utökar vi den här lösningen för streaming av data och beskriver hur man använder den Amazon Kinesis.

Dessutom vill vi använda Amazon SageMaker automatisk tuning för att hitta den optimala konfigurationen för en crossover-strategi för glidande medelvärde. I den här strategin beräknas två glidande medelvärden för en långsam och en snabb tidsperiod, och en affär utförs när en crossover inträffar. Om det snabbt glidande medelvärdet passerar över det långsamma glidande medelvärdet, placerar strategin en lång handel, annars blir strategin kort. Vi hittar den optimala periodlängden för dessa glidande medelvärden genom att köra flera backtest med olika längder över en historisk datauppsättning.

Slutligen kör vi den optimala konfigurationen för denna korsningsstrategi med rörligt medelvärde över en annan testdatauppsättning och analyserar prestandaresultaten. Om prestationen mätt i vinst och förlust (P&L) är positiv för testperioden, kan vi överväga denna handelsstrategi för ett forward-test.

För att visa dig hur enkelt och snabbt det är att komma igång med AWS, tillhandahåller vi en ett-klicks-distribution för en utbyggbar lösning för backtestning för handel som använder Kinesis långsiktig retention för strömmande data.

Lösningsöversikt

Vi använder Kinesis Data Streams för att lagra realtidsströmning såväl som historisk marknadsdata. Vi använder Jupyter-anteckningsböcker som vårt centrala gränssnitt för att utforska och backtesta nya handelsstrategier. SageMaker låter dig ställa in Jupyter-anteckningsböcker och integrera dem med AWS CodeCommit att lagra olika versioner av strategier och dela dem med andra teammedlemmar.

Vi använder Amazon S3 för att lagra modellartefakter och backtesting-resultat.

För våra handelsstrategier skapar vi Docker-behållare som innehåller de nödvändiga biblioteken för backtesting och själva strategin. Dessa containrar följer SageMaker Docker containerstruktur för att köra dem inuti SageMaker. För mer information om strukturen på SageMaker-behållare, se Använda SageMaker Training and Inference Toolkit.

Följande diagram illustrerar denna arkitektur.

Vi kör dataförberedelsesteget från en SageMaker-anteckningsbok. Detta kopierar historiska marknadsdata till S3-skopan.

Vi använder AWS datamigreringstjänst (AWS DMS) för att ladda marknadsdata till dataströmmen. De

SageMaker notebook ansluter till Kinesis Data Streams och kör handelsstrategialgoritmen via ett SageMaker-utbildningsjobb. Algoritmen använder en del av datan för träning för att hitta den optimala strategikonfigurationen.

Slutligen kör vi handelsstrategin med den tidigare bestämda konfigurationen på en testdatauppsättning.

Förutsättningar

Innan vi börjar ställer vi in ​​våra resurser. I det här inlägget använder vi us-east-2 Region som exempel.

  1. Distribuera AWS-resurserna med hjälp av de tillhandahållna AWS molnformation mall.
  2. För Stapla namn, ange ett namn för din stack.
  3. Ange ett befintligt S3-hinknamn för att lagra historiska marknadsdata.

Data laddas i Kinesis Data Streams från denna S3-hink. Din hink måste vara i samma region där din stack är uppställd.

  1. Acceptera alla standardvärden och välj Nästa.
  2. Erkänn att AWS CloudFormation kan skapa AWS identitets- och åtkomsthantering (IAM)-resurser med anpassade namn.
  3. Välja Skapa stack.

Detta skapar alla nödvändiga resurser.

Data laddas till Kinesis Dataströmmar

Utför följande steg för att utföra dataladdningen:

  1. På SageMaker-konsolen, under Notebook välj i navigeringsfönstret Notebook-instanser.
  2. Leta reda på anteckningsboken AlgorithmicTradingInstance-*.
  3. Välja Öppna Jupyter för den här instansen.
  4. Gå till algorithmic-trading->4_Kinesis mapp och välj Strategy_Kinesis_EMA_HPO.pynb.

Du kör nu dataförberedelsesteget i den bärbara datorn.

  1. Ladda datauppsättningen.

Ange den befintliga hinken där testdata lagras. Se till att testskopan är i samma region där du satte upp stapeln.

  1. Kör alla steg i anteckningsboken tills Steg 2 Dataförberedelse.
  2. På AWS DMS-konsolen väljer du Databasmigreringsuppgifter.
  3. Välj AWS DMS-uppgiften dmsreplicationtask-*.
  4. Handlingar meny, välj Starta om/återuppta.

Detta startar dataladdningen från S3-skopan till dataströmmen.

Vänta tills replikeringsuppgiften visar status Load complete.

  1. Fortsätt med stegen i Jupyter-anteckningsboken.

Läs data från Kinesis långtidsretention

Vi läser dagligen öppet, högt, lågt, stängt pris och volymdata från strömmens långsiktiga retention med AWS SDK för Python (Boto3).

Även om vi inte använder förbättrad fan-out (EFO) i det här inlägget kan det vara tillrådligt att göra så att en befintlig applikation redan läser från strömmen. På så sätt stör den här backtesting-appen inte den befintliga applikationen.

Du kan visualisera dina data, som visas i följande skärmdump.

Definiera din handelsstrategi

I det här steget definierar vi vår rörliga medelvärde för crossover-handelsstrategi.

Bygg en Docker-bild

Vi bygger vårt backtesting-jobb som en Docker-bild och driver det till Amazon ECR.

Hyperparameteroptimering med SageMaker på träningsdata

För den rörliga genomsnittliga crossover-handelsstrategin vill vi hitta den optimala snabba perioden och långsamma perioden för denna strategi, och vi erbjuder ett antal dagar att söka efter.

Vi använder vinst och förlust (P&L) för strategin som mått för att hitta optimerade hyperparametrar.

Du kan se trimningsjobbet rekommenderat ett värde på 7 och 21 dagar för den snabba och långsamma perioden för denna handelsstrategi med tanke på träningsdatauppsättningen.

Kör strategin med optimala hyperparametrar på testdata

Vi kör nu denna strategi med optimala hyperparametrar på testdata.

När jobbet är klart lagras prestationsresultaten i Amazon S3, och du kan granska prestandamåtten i ett diagram och analysera köp- och säljorder för din strategi.

Slutsats

I det här inlägget beskrev vi hur man använder Kinesis Data Streams långtidsretentionsfunktion för att lagra historiska aktiekursdata och hur man använder strömmande data för backtesting av en handelsstrategi med SageMaker.

Långtidslagring av strömmande data gör att du kan använda samma plattform för både realtidsdata och äldre data som lagras i Kinesis Dataströmmar. Detta gör att du kan använda denna dataström för ekonomiska användningsfall som backtesting eller för maskininlärning utan att flytta data till ett annat datalager eller skriva en ny applikation. Du kan också uppfylla vissa bestämmelser om datalagring, inklusive under HIPAA och FedRAMP, genom att använda långtidslagring. För mer information, se Amazon Kinesis Data Streams möjliggör lagring av dataström i upp till ett år.

Riskfriskrivning

Det här inlägget är endast för utbildningsändamål och tidigare handelsresultat garanterar inte framtida resultat.


Om författarna

Sachin Thakkar är Senior Solutions Architect på Amazon Web Services och arbetar med en ledande Global System Integrator (GSI). Han har över 22 års erfarenhet som IT-arkitekt och teknikkonsult för stora institutioner. Hans fokusområde ligger på Data & Analytics. Sachin tillhandahåller arkitektonisk vägledning och stödjer GSI-partnern i att bygga strategiska industrilösningar på AWS

Amogh Gaikwad är en lösningsutvecklare i prototypteamet. Han är specialiserad på maskininlärning och analys och har lång erfarenhet av att utveckla ML-modeller i verkliga miljöer och integrera AI/ML och andra AWS-tjänster i storskaliga produktionsapplikationer. Innan han började på Amazon arbetade han som mjukvaruutvecklare och utvecklade företagsapplikationer med fokus på Enterprise Resource Planning (ERP) och Supply Chain Management (SCM). Amogh har tagit sin magisterexamen i datavetenskap med specialisering på Big Data Analytics och Machine Learning.

Dhiraj Thakur är en lösningsarkitekt med Amazon Web Services. Han arbetar med AWS -kunder och partners för att ge vägledning om företags molnanpassning, migration och strategi. Han brinner för teknik och tycker om att bygga och experimentera inom Analytics och AI/ML -utrymme.

Oliver Steffmann är en Enterprise Solutions Architect på AWS baserad i New York. Han har över 18 års erfarenhet som IT-arkitekt, programvaruutvecklingschef och som managementkonsult för internationella finansinstitutioner. Under sin tid som konsult utnyttjade han sin omfattande kunskap om Big Data, Machine Learning och molnteknik för att hjälpa sina kunder att komma igång med sin digitala transformation. Dessförinnan var han chef för kommunal handelsteknik på en tier-one investmentbank i New York och började sin karriär i sin egen startup i Tyskland.

Källa: https://aws.amazon.com/blogs/big-data/backtest-trading-strategies-with-amazon-kinesis-data-streams-long-term-retention-and-amazon-sagemaker/

Tidsstämpel:

Mer från AWS