예제 #1
0
"""Гены и хромосома ответственные за оптимизацию портфеля."""
from poptimizer.evolve.chromosomes import chromosome

MAX_STD = chromosome.GeneParams(
    name="max_std",
    default_range=(0.1, 0.2),
    lower_bound=0,
    upper_bound=None,
    path=("utility", "max_std"),
    phenotype_function=float,
)


class Utility(chromosome.Chromosome):
    """Хромосома ответственные за оптимизацию портфеля."""

    _genes = (MAX_STD, )
예제 #2
0
"""Гены и хромосома ответственные за политику обучения."""
from poptimizer.evolve.chromosomes import chromosome

MAX_LR = chromosome.GeneParams(
    name="max_lr",
    path=("scheduler", "max_lr"),
    default_range=(0.001, 0.01),
    lower_bound=0.0,
    upper_bound=None,
    phenotype_function=float,
)
EPOCHS = chromosome.GeneParams(
    name="epochs",
    path=("scheduler", "epochs"),
    default_range=(0.999, 1.001),
    lower_bound=0.0,
    upper_bound=None,
    phenotype_function=float,
)
PCT_START = chromosome.GeneParams(
    name="pct_start",
    path=("scheduler", "pct_start"),
    default_range=(0.299, 0.301),
    lower_bound=0.0,
    upper_bound=1.0,
    phenotype_function=float,
)
ANNEAL_STRATEGY = chromosome.GeneParams(
    name="anneal_strategy",
    path=("scheduler", "anneal_strategy"),
    default_range=(0.0, 1.0),
예제 #3
0
"""Гены и хромосома ответственные за параметры оптимизации модели."""
from poptimizer.evolve.chromosomes import chromosome

BETA2 = chromosome.GeneParams(
    name="betas",
    default_range=(0.99899, 0.99901),
    lower_bound=0.0,
    upper_bound=1.0,
    path=("optimizer", "betas"),
    phenotype_function=lambda x: (0.9, x),
)
EPS = chromosome.GeneParams(
    name="eps",
    default_range=(0.999e-8, 1.001e-8),
    lower_bound=0.0,
    upper_bound=None,
    path=("optimizer", "eps"),
    phenotype_function=float,
)
WEIGHT_DECAY = chromosome.GeneParams(
    name="weight_decay",
    default_range=(0.999e-2, 1.01e-2),
    lower_bound=0.0,
    upper_bound=None,
    path=("optimizer", "weight_decay"),
    phenotype_function=float,
)


class Optimizer(chromosome.Chromosome):
    """Хромосома ответственная за параметры оптимизации модели с помощью AdamW."""
예제 #4
0
"""Гены и хромосома ответственные за оптимизацию портфеля."""
from poptimizer.evolve.chromosomes import chromosome

RISK_AVERSION = chromosome.GeneParams(
    name="risk_aversion",
    default_range=(0, 1),
    lower_bound=0,
    upper_bound=None,
    path=("utility", "risk_aversion"),
    phenotype_function=float,
)

ERROR_TOLERANCE = chromosome.GeneParams(
    name="error_tolerance",
    default_range=(0, 1),
    lower_bound=0,
    upper_bound=None,
    path=("utility", "error_tolerance"),
    phenotype_function=float,
)


class Utility(chromosome.Chromosome):
    """Хромосома ответственные за параметры функции полезности при оптимизации портфеля.

    Оптимизация портфеля осуществляется с использованием функции полезности следующего вида:

    U = r - risk_aversion / 2 * s ** 2 - error_tolerance * s, где

    risk_aversion - классическая нелюбовь к риску в задачах mean-variance оптимизации. При значении 1 в первом
    приближении максимизируется логарифм доходности или ожидаемые темпы роста портфеля.