Skip to main content
Акции, фьючерсы, опционы и облигации делят один денежный баланс, один учёт и один бандл. Стратегия на нескольких классах активов — обычный файл алгоритма. Готовые примеры лежат в examples/futures, examples/options, examples/bonds и examples/cross_asset репозитория Ziplime.
Справочник Финама в zipfinam сейчас импортирует только акции и фонды — фьючерсы и опционы при загрузке пропускаются. Календарь срочного рынка Мосбиржи (RTSX, расписание FORTS с вечерней сессией) zipfinam уже регистрирует, но данные по фьючерсам Мосбиржи нужно загружать из собственного источника. Примеры ниже используют американские контракты, для которых данные есть в Yahoo Finance.

Фьючерсы

Листинги и контракты

Листинг — то, что вы заявляете и оцениваете. Контракт (FuturesContract) хранит спецификацию — множитель, экспирацию — и доступен через listing.asset.

Ролловер

front_contract — одновременно выбор контракта и ролловер: как только удерживаемый контракт перестаёт проходить проверку roll_before_days, функция возвращает следующую поставку, и вы переходите в неё, заявляя то, что она вернула.
Непрерывный фьючерс нужен для чтения данных. Заявка по нему вызывает ошибку — заявляйте await data.current_contract(cf).

Размер позиции

Размер фьючерсной позиции считается от номинала: цена × множитель × количество.
Открытие фьючерсной позиции не списывает денежные средства; вариационная маржа начисляется ежедневно в обе стороны. Комиссия — PerContract плюс биржевые сборы по базовому тикеру.
Yahoo не сообщает объём во многих сессиях по фьючерсам, а симуляция не исполняет заявку на баре без сделок — заявка может исполняться несколько сессий. Кроме того, Yahoo удаляет истёкшие контракты, поэтому цепочка начинается с сегодняшнего дня. Прежде чем делать выводы по фьючерсным данным Yahoo, прочитайте examples/futures/README.md.

Опционы

Для оценки и греков нужен ziplime[options]. Выбор из доски:
nearest_delta принимает дельту по модулю (0.20 для 20-дельтового пута) и считает дельту по Блэку — Шоулзу с переданной волатильностью. Ближе к закрытию в день экспирации почти у всех контрактов дельта равна 0 или 1, поэтому там выбирайте через strike_offset. У OptionChain также есть calls, puts, strikes, at_strike, nearest_strike и strike_offset.
  • Стратегия 0DTE вызывает option_chain каждую сессию: контракты листингуются заново каждый день.
  • option_greeks берёт поле implied_volatility контракта, если оно есть в данных, и вызывает ошибку, если его нет, — вместо того чтобы выдумывать волатильность. В остальных случаях передавайте volatility= явно.
  • Опционы рассчитываются по внутренней стоимости. Комиссия по умолчанию — PerOptionContract.

Облигации

Купоны зачисляются в денежные средства, амортизация уменьшает номинал, погашение идёт по номиналу. Комиссия по умолчанию — PerBondTurnover. Учёт амортизации и оферт делает модель удобной для рублёвых облигаций, если их данные есть в вашем источнике.