ObjectiveModelΒΆ

Defined in fynance.models.objective

class ObjectiveModel(net=None, *, layers=(16, 8), loss=None, optimizer=torch.optim.Adam, lr=1e-3, epochs=80, position_fn=torch.tanh, seed=0)[source]

Bases: object

Train a net to maximize a differentiable financial objective.

Parameters:
nettorch.nn.Module, optional

Architecture mapping a feature matrix (T, F) to (T, 1). Defaults to an MLP built lazily on the first fit (so it learns F). Pass any nn.Module (e.g. a TCN/LSTM) to use a custom architecture.

layerstuple of int

Hidden sizes of the default MLP (ignored when net is given).

lossBaseLoss, optional

Differentiable financial loss applied to the strategy returns positions * returns. Defaults to SharpeLoss.

optimizertype[torch.optim.Optimizer]

Optimizer class (default Adam).

lrfloat

Learning rate.

epochsint

Full-batch training steps per fit.

position_fncallable

Maps the net output to a position; default tanh (positions in [-1, 1]).

seedint

Seed for reproducible initialization/training.

Notes

The net is warm-started across successive fit calls (so a walk-forward refit adapts online). Build a fresh model for an independent run.

fit(X, y)[source]

Train the net to maximize the objective of positions * y.

Parameters:
Xarray-like, shape (T, F)

Feature matrix.

yarray-like, shape (T,)

Realized per-bar returns aligned with X (not a supervised label).

Returns:
ObjectiveModel

self.

predict(X)[source]

Return positions in [-1, 1] for each row of X.