Proposta di un algoritmo di Reinforcement Learning.

Proposta di un algoritmo di Reinforcement Learning.

Marzo 1, 2022 0 Di Ruggero Grando

Come calcolo la sensibilità dell’algoritmo di Reinforcement Learning?

Diciamo che per prima cosa, all’interno della tabella bot_qvalue si possono ordinare tutti gli stati di acquisto di una pair e un exchange specifico dal valore più grande al valore più piccolo. A tal punto, si prendono in considerazione, per esempio, i primi venti risultati. Se, lo “Stato” calcolato, di cui abbiamo già ampiamente parlato dall’algoritmo di Reinforcement Learning, in termini di valore dello stato di acquisto compare nel range dei risultati considerati, allora si può procedere ad eseguire l’azione di acquisto vera e propria. Se il valore calcolato dall’algoritmo non compare tra i risultati, allora non si fa nulla.

Per quanto concerne la tabella bot_qvalue e l’elaborazione degli stati dell’algoritmo di Reinforcement Learning si evidenziano i seguenti punti:

  1. Nel momento in cui l’algoritmo di Reinforcement Learning calcola un valore per uno stato già presente nella tabella bot_qvalue quale potrebbe essere l’azione da fare?
    1. Si esegue l’update per quello stato con il nuovo valore?
    2. Si somma il valore a quello precedente?
    3. Non si fa nulla perchè già presente?
  2. E se il valore non è presente, allora ovviamente lo si scrive.

Del punto 1) si possono intraprendere il punto 1.1) e il punto 1.3) escludendo il punto 1.2. Per il test e per verificare se l’algoritmo funziona scelgo per ora il punto 1.3) tenendo in considerazione che i campi idmoneta, nomeexchange e stato diventeranno la chiave principale della tabella bot_qvalue.

Il passo successivo è di creare una store procedure in MYSQL che automaticamente riversi nella tabella bot_qvalue_max il valore massimo di acquisto, il valore massimo di vendita e il valore massimo dello stato “nullo” calcolato leggendo dalla tabella bot_qvalue i primi, per esempio, venti risultati, dal più grande al più piccolo.

Di seguito, è presente la prima struttura logica della tabella bot_qvalue_max.

Struttura logica della tabella bot_qvalue_max
Fig 5.
(Tabella bot_qvalue_max: prima versione)

In realtà, la versione finale della tabella bot_qvalue_max è la seguente.

Tabella bot_qvalue_max contenente i valori max calcolati dall'algoritmo di Reinforcement Learning salvati nella tabella bot_qvalue
Fig 6.
(Seconda versione della tabella bot_qvalue_max).

La versione finale della tabella bot_qvalue_max contiene, allo stato di fatto, i seguenti campi:

  1. idmoneta (INT11)
  2. nomeexchange (VARCHAR(255))
  3. valMaxAcquisto DOUBLE
  4. valMaxVendita DOUBLE
  5. valMaxNulla DOUBLE
  6. data ultimo calcolo TIMESTAMP

Quindi, riassumendo, per i records considerati, per i campi A (Acquisto), V(Vendita), e N(Nulla) della tabella bot_qvalue si ordinano i valori dal più grande al più piccolo senza tener conto dello stato, e i valori massimi si salvano nella tabella bot_qvalue_max.

Ma, come realizzo tale compito? Il tutto si compie con una store procedure che ho chiamato “calcolasensibilità’ chiamata da una CALL nel pieno del codice Python, come descritto nell’immagine seguente.

Store procedure Call calcolasensibilità dal codice Python.
Fig. 7
(Chiamata della call “calcolasensibilità”)

Finalmente, ho creato la store procedure che elabora la tabella q_value e inserisce i valori massimi di acquisto, vendita e valore nullo nella tabella bot_qvalue_max. 

Ecco il codice della store procedure “calcolasensibilità”.

CREATE DEFINER=`admin`@`%` PROCEDURE `calcolasensibilita`(IN mercato varchar(255), IN moneta varchar(255))

BEGIN

SELECT @maxa := MAX(A), @maxv := MAX(V), @maxn := MAX(N) FROM bot_qvalue where idmoneta = moneta and nomeexchange = mercato;

INSERT INTO bot_qvalue_max (idmoneta, nomeexchange,valMaxAcquisto,valMaxVendita,valMaxNulla) values (moneta, mercato, @maxa,@maxv,@maxn);

END

Pagina Precedente | Pagina Successiva

No votes yet.
Please wait...

Pagine: 1 2 3