Un tutorial su come estrarre passo dopo passo le serie temporali Bid Ask con l'SDK Matlab.

Artesian ti permette di avere un accesso semplice allo storico dei dati .

Vediamo passo passo come procedere.

Obiettivo

Estrarre i dati di un Bid Ask Time Serie Market Data.

I dati e i link di riferimento sono fittizi, creati appositamente per questo case. In Artesian è possibile estrarre qualsiasi dato che sia riconducibile a una Time Serie.

Vediamo passo per passo come procedere.

Importazione e configurazione di Artesian

La prima cosa da fare per poter utilizzare tutte le funzionalità di Artesian è autenticarsi. Per fare ciò dobbiamo installare il toolbox di Artesian che è fondamentale per istanziare l’autenticazione verso il servizio (linea 1 dello script) e successivamente per leggere i dati.

Una volta installato il toolbox, possiamo configurare Artesian, inserendo il link necessario e l’api-key.

Per poter ottenere questi due dati importanti, si può far riferimento al tutorial “Come Configurare Artesian Matlab SDK“. 

Terminata la configurazione di Artesian, possiamo configurare il Query Service (linea 3)

				
					
cfg = ArtesianServiceConfig("https://arkive.artesian.cloud/{tenantName}/", "{api-key}")

qs = QueryService(cfg)
				
			


La creazione dell'estrazione Bid Ask

Una volta configurato Artesian e il Query Service, possiamo iniziare a pensare a quali dati vogliamo estrarre e a come li vogliamo estrarre.

L’informazione di base da avere per poter effettuare una estrazione da Artesian è l’ID o una lista di ID relativa ai Market Data di interesse, questa può essere facilmente ottenuta tramite la UI.

Parametri fondamentali da decidere

Una volta ottenuti gli ID che ci interessa estrarre possiamo iniziare a valutare come li vogliamo estrarre. I parametri fondamentali da decidere sono:

Il Time Range di estrazione: Artesian mette a disposizione varie possibilità, per ognuna di esse va considerato che il riferimento temporale di fine estrazione è sempre esclusivo. Per questo specifico esempio, consideriamo l’AbsoluteDateRange(“2022-06-08″,”2022-06-29”).

La TimeZone di estrazione del dato può essere selezionata a seconda del proprio interesse, Artesian si occuperà di convertire i dati se necessario.

Il Prodotto che si vuole estrarre: Artesian permette di usare la nomenclatura Assoluta, nel caso si sia interessato a un prodotto specifico (es: “Feb-22”) o la nomenclatura relativa, nel caso in cui si voglia avere un prodotto sempre differente in base alla report date osservata (es: “M+1” corrisponde al prodotto “Apr-22” quando estrai dei dati in Marzo 2022, mentre diventerà “May-22” quando estrai dei dati ad Aprile 2022)Altra casistica supportata riguarda i prodotti “Speciali” come ad esempio il DA, BOM, WD, etc. Per un dettaglio maggiore sulla sintassi da usare per i prodotti consigliamo di utilizzare la UI e simulare una estrazione con essa.

Una volta stabiliti i parametri di base della nostra estrazione, la si può lanciare e visionare i dati ottenuti. 

				
					q = qs.createBidAsk()...
     .ForMarketData([100086916,100086917])...
     .ForProducts(["D+1","Feb-22"])...
     .InAbsoluteDateRange("2022-06-08","2022-06-29")...
     .Execute()
				
			

Altre opzioni per l'estrazione dei dati

 

Relativamente alla selezione dei range di estrazione, Artesian supporta le seguenti opzioni: 

AbsoluteDateRange” è un arco di tempo determinato assoluto (es.:  dal “2018-08-01” al “2018-08-13” ti permetterà di estrarre i dati dal “2018-08-01” al “2018-08-12”)

RelativePeriod” rappresenta un arco di tempo relativo, precedente o successivo ad oggi (es.: Considerando che oggi sia il “2021-03-31” richiedere il period “P-5D” significherà estrarre i dati dal “2021-03-26” al “2021-03-30”. Richiedendo il period “P5D” significherà estrarre i dati dal “2021-03-31” al “2021-04-04”). Per la sintassi è possibile fare riferimento allo standard ISO8601, oltre al semplice “RelativePeriod” è possibile usare il “RelativePeriodRange” (es: da “P-5D” a “P5D” estrarrà i dati dal “2021-03-26” al “2021-04-04”).

RelativeInterval” è un arco di tempo “rolling” a dimensione fissa. Le possibili opzioni sono: “RollingWeek”, “RollingMonth”, “RollingQuarter” o “RollingYear” ovvero gli ultimi 7, 30, 90, 365 giorni di dati (con il giorno in corso incluso);  “WeekToDate”, “MonthToDate”, “QuarterToDate” o “YearToDate” ovvero considerando dal giorno in corso a inizio settimana, mese o anno. 

				
					   .InAbsoluteDateRange("2022-03-06","2022-03-07")
   .InRelativeInterval(RelativeInterval.RollingWeek)
   .InRelativePeriod("P5D")
   .InRelativePeriodRange("P-3D","P10D")
        
				
			

 

Oltre a quelle menzionate precedentemente, Artesian offre anche la possibilità di applicare un filling ai dati in modo da gestire eventuali dati mancanti.  Le possibili opzioni sono:

FillNull() : un’operazione di default che ritorna nell’estrazione anche i valori vuoti (null).

FillNone() : un’operazione che non ritorna nell’estrazione i valori vuoti (null).

FillLatestValue(5) : un’operazione che ritorna nell’estrazione l’ultimo valore disponibile rispetto al periodo indicato nella chiamata, in questo caso “5” giorni indietro.

FillCustomValue() : un’operazione che applica nell’estrazione un valore custom al posto dei valori mancanti (null). Questi valori possono essere applicati al miglior Bid, miglior Ask, alla quantità associata al miglior Bid, alla quantità associata al miglior Ask, al prezzo dell’ultimo trade chiuso, al volume dell’ultimo trade chiuso.

				
					.WithFillNull()
   .WithFillNone()
   .WithFillLatestValue("P5D")
   .WithFillCustomValue(
        bestBidPrice=15.0,
        bestAskPrice=20.0,
        bestBidQuantity=40.0,
        bestAskQuantity=45.0,
        lastPrice=50.0,
        lastQuantity=65.0)\
				
			


Alternativa all'estrazione in SDK

In alternativa all’estrazione in SDK, possiamo estrarre i dati direttamente da portale in formato Excell.

 

Basta eseguire l’operazione una sola volta per poi averla completamente riproducibile e automatizzata nel nostro workflow.

Questo non solo permette di risparmiare tempo, ma permette anche di ridurre al minimo gli errori umani dati dall’eseguire operazioni ripetute su grandi moli di dati o su diversi file Excel. 

Un vantaggio innegabile che ci consente di focalizzarci sull’analisi del dato invece che sulla sua gestione e ottimizzazione.