К обычному разбору
Тренировка по собеседованию1 задачаТехническое собеседованиеOrder Capital2026-03-02

Order Capital: Техническое собеседование

Идите сверху вниз: сначала попробуйте сами, затем откройте разбор. Если шаг с кодом, пишите решение прямо здесь и запускайте проверки на странице.

1ЗадачаMedium

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

Условие

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

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].

Решение прямо на странице

Напишите код, запустите проверки и только потом открывайте разбор.

Проверка решения

Нажмите «Запустить проверки» или Ctrl+Enter.

Показать разбор

Подсказки

  • Линейность матожидания

    Позиция выбирается до тика, поэтому ее можно вынести из E[position * r].

  • Не вероятность знака

    Редкий большой минус может перевесить частые маленькие плюсы.

Идея решения

Матожидание прибыли при фиксированной позиции:

E[position * r] = position * E[r].

Это линейная функция по position на отрезке [-max_position, max_position]. Если наклон положительный, максимум на правой границе. Если отрицательный — на левой. При нулевом наклоне все позиции дают одинаковое матожидание, поэтому возвращаем 0.

Эталонный код

def optimal_position(return_distribution: list[list[float]], max_position: int) -> int:
    expected_return = 0.0
    for return_value, probability in return_distribution:
        expected_return += return_value * probability

    eps = 1e-12
    if expected_return > eps:
        return max_position
    if expected_return < -eps:
        return -max_position
    return 0
Сложность
Время: O(k). Память: O(1).
k — число точек в дискретном распределении return. Нужно один раз посчитать матожидание.