146 lines
6.6 KiB
Markdown
146 lines
6.6 KiB
Markdown
# Appunti sullo sviluppo del progetto
|
|
|
|
Il titolo di riferimento per la prima parte di studio è Microsoft. Perché:
|
|
* molto capitalizzato
|
|
* longevo
|
|
* è un titolo tech ma non subisce dinamiche troppo "strane" rispetto al normale andamento di mercato (es. Tesla)
|
|
|
|
Per prima cosa si testa la performance di un modello non trainato, semplice, che prova a predire il segno del ritorno del giorno successivo sulla base del ritorno del giorno precedente (+ segue + e - segue -).
|
|
|
|
Si riporta anche un piccolo grafico a barre per avere un'idea della distribuzione dei ritorni.
|
|
|
|
winrate detected: 0.47638123852445335
|
|
|
|
Primi test con logistic regression, aggiungendo come features giorni passati: lieve increase, troppi giorni porta a overfitting
|
|
|
|
provare a effettuare lo stesso test ma aggiungendo qualche metrica (es. moving average) -> C'è un lieve miglioramento
|
|
|
|
Nell'MLP, nei nomi dei file di dati, i numeri sono la dimensione degli hidden layer, in ordine di profondità
|
|
Primo test semplice semplice, architettura di seguito:
|
|
Model: "sequential"
|
|
_________________________________________________________________
|
|
Layer (type) Output Shape Param #
|
|
=================================================================
|
|
lstm (LSTM) (None, 20, 50) 10400
|
|
|
|
dropout (Dropout) (None, 20, 50) 0
|
|
|
|
lstm_1 (LSTM) (None, 20, 50) 20200
|
|
|
|
dropout_1 (Dropout) (None, 20, 50) 0
|
|
|
|
lstm_2 (LSTM) (None, 50) 20200
|
|
|
|
dropout_2 (Dropout) (None, 50) 0
|
|
|
|
dense (Dense) (None, 1) 51
|
|
|
|
=================================================================
|
|
Total params: 50,851
|
|
Trainable params: 50,851
|
|
Non-trainable params: 0
|
|
semplici 25 epoche e split 0.8 / 0.2
|
|
il plot che si ottiene è quello
|
|
|
|
con dati (win rate sui ritorni):
|
|
tutto il testing set (): 0.4991624790619765
|
|
primi 200 giorni: 0.605
|
|
primi 100 giorni: 0.58
|
|
primi 50 giorni: 0.66
|
|
|
|
su tutto ho
|
|
RMSE: 76.4 (dollari ?)
|
|
MAPE: 21.8 %
|
|
|
|
su 300 giorni:
|
|
RMSE su 300 gg: 6.4 $
|
|
MAPE su 300 gg: 2.9 %
|
|
|
|
In presentazione metto prima grafico con mape e rmse su tutto facendo considerazioni, poi mi allargo con mape e rmse specifiche + winrate su meno giorni
|
|
|
|
|
|
nel firts advanced l'architettura è:
|
|
Model: "sequential"
|
|
_________________________________________________________________
|
|
Layer (type) Output Shape Param #
|
|
=================================================================
|
|
lstm (LSTM) (None, 10, 10) 480
|
|
|
|
dropout (Dropout) (None, 10, 10) 0
|
|
|
|
lstm_1 (LSTM) (None, 10) 840
|
|
|
|
dropout_1 (Dropout) (None, 10) 0
|
|
|
|
dense (Dense) (None, 5) 55
|
|
|
|
dropout_2 (Dropout) (None, 5) 0
|
|
|
|
dense_1 (Dense) (None, 1) 6
|
|
|
|
=================================================================
|
|
Total params: 1,381
|
|
Trainable params: 1,381
|
|
Non-trainable params: 0
|
|
_________________________________________________________________
|
|
|
|
|
|
LTSM advanced 2: training data ridotta a 2000 giorni, arch:
|
|
Model: "sequential"
|
|
_________________________________________________________________
|
|
Layer (type) Output Shape Param #
|
|
=================================================================
|
|
lstm (LSTM) (None, 10, 20) 1760
|
|
|
|
dropout (Dropout) (None, 10, 20) 0
|
|
|
|
lstm_1 (LSTM) (None, 20) 3280
|
|
|
|
dropout_1 (Dropout) (None, 20) 0
|
|
|
|
dense (Dense) (None, 5) 105
|
|
|
|
dropout_2 (Dropout) (None, 5) 0
|
|
|
|
dense_1 (Dense) (None, 1) 6
|
|
|
|
=================================================================
|
|
Total params: 5,151
|
|
Trainable params: 5,151
|
|
Non-trainable params: 0
|
|
|
|
risultati
|
|
RMSE: 10.799429328578809
|
|
MAPE: 3.1894335488381116
|
|
RMSE su 300 gg: 11.607057105021592
|
|
MAPE su 300 gg: 3.591834377775106
|
|
|
|
training di 50 epoche
|
|
ma win rate sul ritorno del giorno dopo sempre ~0.5
|
|
|
|
|
|
Il 3 ha un'architettura molto semplificata e tiene una timewindow di soli 5 gg:
|
|
Model: "sequential"
|
|
_________________________________________________________________
|
|
Layer (type) Output Shape Param #
|
|
=================================================================
|
|
lstm (LSTM) (None, 10) 480
|
|
|
|
dropout (Dropout) (None, 10) 0
|
|
|
|
dense (Dense) (None, 1) 11
|
|
|
|
=================================================================
|
|
Total params: 491
|
|
Trainable params: 491
|
|
Non-trainable params: 0
|
|
_________________________________________________________________
|
|
RMSE: 12.955399161548117
|
|
MAPE: 3.7480157718302904
|
|
RMSE su 300 gg: 11.019121338505466
|
|
MAPE su 300 gg: 3.3382726092879706
|
|
|
|
non si guadagna molto in winrate
|
|
|
|
semilog histo
|