Оптимальная торговая позиция по распределению return

MediumАлгоритмы
05:00
Лучше работает на десктопе
AlgorithmsExpected ValueGreedyQuant
Реальный собес00:50:00-00:57:122026-03-02 17-39-02.movСтраница собеса

Черный ящик возвращает дискретное распределение следующего изменения цены:

r = price[t + 1] - price[t]

Перед следующим тиком можно выбрать позицию от -max_position до max_position. Прибыль одного шага равна:

profit = position * r

Верните позицию, которая максимизирует матожидание прибыли.

  • если ожидаемый return положительный, верните max_position;
  • если отрицательный, верните -max_position;
  • если он ровно нулевой, верните 0.

Сигнатура

def optimal_position(return_distribution: list[list[float]], max_position: int) -> int:

return_distribution — список пар [return_value, probability].

Примеры

Пример 1

Вход:
return_distribution = [[1,0.6],[-1,0.4]]
max_position = 10
Выход:10

Пример 2

Вход:
return_distribution = [[2,0.1],[-1,0.9]]
max_position = 7
Выход:-7

Пример 3

Вход:
return_distribution = [[5,0.5],[-5,0.5]]
max_position = 3
Выход:0
Консоль
Нажмите Run или Ctrl+Enter для запуска