В качестве альтернативного подхода можно моделировать объем исполнения заявки как случайную величину с заданным заранее законом распределения, зависящим от тех же переменных (объем спроса и предложения, усредненный дневной объем, открытый интерес, величина спреда).
При моделировании объема исполнения необходимо также учитывать, что ордер, генерируемый системой бэктестинга должен быть кратным величине стандартного лота. Если в теории опцион может рассматриваться как одна ценная бумага, то на биржах опционы торгуются в виде стандартизированных лотов, размер которых определяется установленным биржей множителем. Обычно один лот опционов на американские акции равен 100, на опционы на фьючерс S&P 500 E-Mini один лот равен 50, один лот на опционы на фьючерсы на VIX равен 1000, и т. д. Такой множитель является обязательным элементом опционной базы данных. В силу указанной дискретности объемы открываемых позиций должны быть величинами, кратными лотам. Этого можно добиться либо на этапе формирования ордера, либо в процессе его исполнения.
5.3.2. Моделирование цены
В условиях недостаточной ликвидности лимитный ордер может быть исполнен не полностью (что выражается в более низком объеме исполнения по сравнению с объемом ордера), однако цена его не может быть хуже заявленного лимита. Противоположная ситуация наблюдается в случае рыночного ордера – объем исполнения, как правило, соответствует заявленному, зато цена исполнения может оказаться гораздо хуже той, которая существовала на рынке в момент генерирования сигнала на открытие позиции. Такое явление известно под названием «проскальзывание» (slippage).
Для того чтобы смоделировать цену исполнения, необходимо ввести в систему бэктестинга параметр, выражающий величину проскальзывания. Так же как и в случае с моделированием объема исполнения лимитного ордера, этот параметр представляет собой функцию, значение которой зависит от следующих аргументов: среднедневной объем; величина спреда между ценой спроса и предложения; удаленность страйка от текущей цены базового актива; число дней до экспирации. Такой набор аргументов объясняется тем, что в большинстве случаев величина проскальзывания тем меньше, чем выше дневной объем сделок и чем меньше величина спреда. Ликвидность опционов тем выше (соответственно, проскальзывание меньше), чем ближе цена базового актива к страйку и чем меньше дней остается до истечения опционов.
При разработке стратегий, ориентированных на торговлю высоколиквидными опционами со страйками «около денег» и близкими датами экспирации, проскальзыванием можно пренебречь. При моделировании таких ситуаций объем позиций, открываемых в течении заданного промежутка времени по каждому контракту, не должен превышать определенную долю от среднедневного оборота. Величина промежутка времени и доли от оборота являются параметрами бэктестинга и должны задаваться разработчиком стратегии исходя из реалий рынка, на котором он работает. Если считать проскальзывание нулевым, то при использовании рыночных ордеров в качестве цены покупки и продажи можно принимать худшую сторону спреда (покупка по цене предложения (Ask), продажа по цене спроса (Bid)).
Помимо нулевого проскальзывания, можно также предположить, что в реальной торговле заявки на открытие и закрытие позиций могут исполняться по ценам лучшим, чем худшая сторона спреда. Система исполнения может быть автоматической (основанной на специализированных алгоритмах), а может быть поручена трейдеру. Возможны и различные промежуточные варианты, когда заявки исполняются человеком, использующим различные вспомогательные алгоритмы. В зависимости от квалификации трейдера или от эффективности применяемых алгоритмов, система исполнения может быть способна исполнять ордера по ценам, находящимся внутри спреда.
Такую возможность можно учесть в бэктестинге с помощью параметра μ, принимающего значения от 0 до 1. При μ = 0 покупка происходит по цене Ask, а продажа – по цене Bid (то есть реализуются худшие цены исполнения). При μ = 1 реализуются лучшие цены исполнения – покупка по цене Bid и продажа по цене Ask. В общем случае: