Add gmadl loss function

This commit is contained in:
Filip Stefaniuk 2024-09-05 15:48:57 +02:00
parent 6923b6cb05
commit dbd99bba3b
3 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,67 @@
future_window:
value: 1
past_window:
value: 24
batch_size:
value: 64
max_epochs:
value: 30
data:
value:
dataset: "btc-usdt-5m:latest"
sliding_window: 4
validation: 0.2
fields:
time_index: "time_index"
target: "returns"
group_ids: ["group_id"]
dynamic_unknown_real:
- "high_price"
- "low_price"
- "open_price"
- "close_price"
- "volume"
- "open_to_close_price"
- "high_to_close_price"
- "low_to_close_price"
- "high_to_low_price"
- "returns"
- "log_returns"
- "vol_1h"
- "macd"
- "macd_signal"
- "rsi"
- "low_bband_to_close_price"
- "up_bband_to_close_price"
- "mid_bband_to_close_price"
- "sma_1h_to_close_price"
- "sma_1d_to_close_price"
- "sma_7d_to_close_price"
- "ema_1h_to_close_price"
- "ema_1d_to_close_price"
dynamic_unknown_cat: []
dynamic_known_real: []
dynamic_known_cat:
- "hour"
static_real:
- "effective_rates"
- "vix_close_price"
- "fear_greed_index"
- "vol_1d"
- "vol_7d"
static_cat:
- "weekday"
loss:
value:
name: "GMADL"
a: 1000
b: 2
model:
value:
name: "TemporalFusionTransformer"
hidden_size: 64
dropout: 0.1
attention_head_size: 2
hidden_continuous_size: 8
learning_rate: 0.001
optimizer: "Adam"

View File

@ -0,0 +1,38 @@
program: ./scripts/train.py
project: wne-masters-thesis-testing
command:
- ${env}
- ${interpreter}
- ${program}
- "./configs/experiments/temporal-fusion-btcusdt-gmadl.yaml"
- "--patience"
- "10"
method: random
metric:
goal: minimize
name: val_loss
parameters:
past_window:
distribution: int_uniform
min: 20
max: 100
batch_size:
values: [64, 128, 256]
model:
parameters:
name:
value: "TemporalFusionTransformer"
share_single_variable_networks:
value: false
hidden_size:
values: [128, 256, 512, 1024]
dropout:
values: [0.0, 0.1, 0.2, 0.3]
attention_head_size:
values: [1, 2, 4, 6]
hidden_continuous_size:
values: [4, 8, 16, 32]
learning_rate:
value: 0.001
optimizer:
value: "Adam"

View File

@ -15,6 +15,8 @@ from pytorch_forecasting.metrics import MAE, RMSE
from pytorch_forecasting import QuantileLoss from pytorch_forecasting import QuantileLoss
from pytorch_forecasting.models.temporal_fusion_transformer import TemporalFusionTransformer from pytorch_forecasting.models.temporal_fusion_transformer import TemporalFusionTransformer
from ml.loss import GMADL
def get_args(): def get_args():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
@ -130,6 +132,12 @@ def get_loss(config):
if loss_name == 'Quantile': if loss_name == 'Quantile':
return QuantileLoss(config['loss']['quantiles']) return QuantileLoss(config['loss']['quantiles'])
if loss_name == 'GMADL':
return GMADL(
a=config['loss']['a'],
b=config['loss']['b']
)
raise ValueError("Unknown loss") raise ValueError("Unknown loss")