quarta-feira, 17 de julho de 2019

Bot

Bot

Estrutura do projeto

Estrutura do núcleo do sistema

Seja NΩ={node1,nodeN}\mathcal{N}_\Omega = \{\text{node}_1, \cdots \text{node}_{|\mathcal N|}\} conjunto de todos os nós (unidades de processamento) recolhendo informação do mercado, estimando então um conjunto de modelos M=M1,,Mn\mathfrak M=\mathfrak M_1, \cdots, \mathfrak M_n e agindo usando um conjunto de estratégias S=S1,,Sm\mathfrak S=\mathfrak S_1, \cdots, \mathfrak S_m de forma independente.

Nó é uma unidade que opera usando uma conta de exchange e alguns ativos atrelados ao mesmo, podendo gerenciar apenas uma posição.

Para cada nó arbitrariamente configurado temos

get random $node
if exist oportunity : send order
send order
daemon.init.sh
daemon.broker.s
daemon.http-server $node
daemon.autoreboot.sh
daemon.buy-for-sell.sh $node
wolfram Main.m $node
daemon.volumecrawler.sh
exchangeOf $node

Estimativa do modelo

Essa parte é dedicada à construção de um modelo abstrato com fundamentos econômicos.
Seja a dupla bid-ask no tempo denotada por (B,A)t=(([w1,b1],,[wn,bn]),([w1,a1],,[wn,an]))t\mathcal{\Big(B,A\Big)}_t = \Big( ([w'_1,b_1],\cdots,[w'_n,b_n]) , ([w''_1,a_1],\cdots,[w''_n,a_n]) \Big)_t o livro de ofertas em uma escala abitrária( 5%, 7%…etc) ; elementos do book são preço e volume.

O objetivo final quando construir a rede neural é criar um modelo
M:XY \mathfrak M : X \rightarrow Y
Ou equivalentemente
M:StSt+h \mathfrak M : S_t \rightarrow S_{t+h}
Ou equivalentemente neste caso particular:
M:Θ(Bt,At)GBM(μ,σ)t+h \mathfrak M : \Theta\Big( \mathcal{B_t,A_t} \Big) \rightarrow \text{GBM} \Big(\mu , \sigma\Big )_{t+h}
onde Θ(U)\Theta(\mathcal U) é conjunto das estatísiticas arbitrárias para um conjunto U\mathcal U qualquer e hh é o tamanho do intervalo que estamos tentando prever.

Gerando assim informações que serão salvas em disco para melhorar a performance do treino.

Θ( OrderBook [t] ) → Y[t]
train/train-file-1.mx
Θ( OrderBook [t+k] ) → Y[t+k]
train/train-file-k.mx
...
...
Θ( OrderBook [t+n] ) → Y[t+n]
train/train-file-n.mx

Treino da rede

Seja M:XY\mathfrak{M} : X \rightarrow Y uma rede neural com entrada de dimensão dd e saída com dimensão igual à 2, arquitetura de acordo com um grafo fixo GG , definamos explicitamente o modelo:

MG:dimK[XRd]tGBM[μ,σ]t+hR2 \mathfrak M_G : \dim^{-K}\Big[X \subset \mathbb R^d\Big]_t \rightarrow \text{GBM} \Big[\mu , \sigma\Big ]_{t+h} \subset \mathbb{R}^2

  • dimK\dim^{-K} denota o operador de redução de dimensão para uma nova dimensão de tamanho KK com intuito de minimizar a complexidade do treino durante os ajustes de pesos da rede . Os principais métodos populares de redução de dimensão são PCA e o t-SNE.
  • GBM[μ,σ]t+h\text{GBM} \Big[\mu , \sigma\Big ]_{t+h} é o espaço dos parametros estimados para simular um Geometric Brownian Motion com drift μ\mu e volatilidade σ\sigma para um tempo futuro t+ht+h

Script de treino

Na prática é basicamente:

executa: sh daemon.train-loop.sh
então: gera muitos arquivos de episódios de treino no diretório'train/****.mx' ; informação sobre X → Y
executa: wolfram BuildNetworks.wl

Nenhum comentário:

Postar um comentário