Основы (тестирование стратегий)

29.04.2019 palmax

Основы (тестирование стратегий)

В предыдущих топиках мы сформировали ценовой ряд и начали считать по нему разные стратегии. Сегодня мы продолжим. Возьмем наиболее популярные стратегии и прогоним их через свои расчеты.

Файл. https://cloud.mail.ru/public/2AsF/43ssbSj4g

Напомню. У нас есть ценовой ряд (лист РТС ценовой ряд Close), из него мы находим приращения логарифмов (дисперсию), генерим триггер (в данном случае алгоритм СЛУЧМЕЖДУ()), определяем направление (покупка или продажа). Дальше, мы подставляем сумму начального капитала и находим его изменение на следующем шаге. Для этого наш капитал умножаем на экспоненту приращения логарифма*триггер. На листе все формулы видны. Нажимая на F9, мы получаем пересчет алгоритма и график экви. В данном случае (лиси РТС), ценовой ряд у нас статичный и взят с реального рынка, а точки входа выхода пересчитываются.

Но еще у нас есть синтезированный ценовой ряд, с теми же свойствами, что и график РТС. Лист «Цена». Тут ценовой ряд пересчитывается кнопкой F9 и вы можете видеть все атрибуты (графики) этого ряда. Отсюда мы будем брать цену и подставлять в наши стратегии.

Лист «Стратегии». Кроме нашей АА, я смог придумать еще три стратегии. Пересечение скользящей средней и пересечение уровня. Еще одна, МО это расчет математического ожидания БА. Выбраны триггеры «продать-1 купить+1» Получился портфель алгоритмических алгоритмов для торговых роботов. А так же, среднее по портфелю.

Как это работает на примере Машки. Я брал машку своего имени с весом по Альфа. Если Альфа ближе к 0, то это обычная 21периодная, а если ближе к 1, то добавляется вес последних значений, как бы уменьшая период машки. Мы отслеживаем, когда цена станет больше значения машки, и записываем в триггер «1» из графы купить. Вы можете в эту графу вписать «-1», тогда, при пробои машки у вас будет продать или «0», тогда, на заборе. В общем, суть не поменяется. Дальше мы рассчитываем  Экви, согласно описанному выше алгоритму.

«Уровень» я брал от начальной цены. Если цена закрепляется выше этого уровня, то мы в покупках, если ниже, то в продажах. Вы можете сдвинуть уровень или округлить.

Нажимая на F9 вы получаете пересчет и финрез этих стратегий. В общем, игра с ценовыми рядами дает ожидаемый результат. Чем больше вы играете, тем менее предсказуем результат. Можно наворачивать еще разных условий. Я сделал «Суммарно». Там триггер срабатывает пропорционально сигналам от всех взятых стратегий. Сказать, что какая то стратегия лучше или хуже, ни чего не сказать. Можно отметить, что подбрасывание монетки «купить/продать» дает результат не хуже умных расчетов скользящих средних и уровней. Сказать, что как то это можно контролировать, очень сильно сказать. А уж предсказать…

Тем не менее, все эти стратегии генерят торговые сигналы, которые можно использовать по назначению. Продавать. Продавать через СМС и торговых роботов.  Они же не всегда в минус уводят. Тут самое главное психология. Дисциплинированность и выдержка. Не малое значение имеет упертость или упирание. То есть святая вера, что вы высоко профессиональный трейдер. Короче, вы поиграйтесь и отпишите какая стратегия лучше. А мы двинемся дальше.

На листе «Расчет погрешности» мы изучим следующий вопрос. Посыл такой. Мы сделали ценовой график из дневных свечей. Но сама дневная свеча, это не открытие и закрытие. Внутри происходят процессы и нам надо их вычислить. Вычислить точно не получится. Поэтому нам надо понять меру приближения наших вычислений. Давайте рассуждать.

Допустим, вы открываете сделку в начале дня на 1000 рублей. Какой доход она вам принесет?  Естественно, процент на который изменится БА. Но БА может измениться как +, так и в -. Что не справедливо. Что бы такого не происходило, нам надо держать длинную позицию по ходу БА вверх и короткую, вниз. А сколько мы можем потерять на перекладке позиции вверх/вниз? Можно построить сетку, прописать алгоритм на 10 листов эксела и я это как то делал. А можно просто посчитать.

Представим себе, что весь наш ряд в 100 (примерно) периодов одна большая свеча. Что бы узнать ее величину нам достаточно сложить все приращения логарифмов и взять по модулю. «Модуль суммы пр». Ну и допустим, мы вошли в рынок в лонг и цена пошла вверх без остановок. Тогда наш финрез это наш капитал*экспоненту всех приращения за этот период. Но вот так не бывает. Обычно, цена возвращается, меняет свое направление и собирает ваши любимые стоп ордера. Можем ли мы заранее посчитать, сколько стоп ордеров сработает?  Конечно можем. Для этого нам надо найти волатильность всего ценового ряда, внутри нашей большой свечи. И это СКО. У нас 100 периодов. Поэтому, мы найденное СКО умножим на корень квадратный из 100=10. И получим внутреннюю волатильность (СКО общее). Тогда, наш финрез будет зависеть от того, куда цена уйдет за 100 шагов, минус, сколько цена будет болтаться внутри «Разность СКО». (А это (1/(2Пи)^0.5)*вола*время*2)). Тогда берем наш капитал 1000 и умножаем на экспоненту разности СКО. Если разность будет положительной, то мы в плюсе. Значит, изменение БА за 100 периодов оказалась больше внутренней болтанки по сбору стопов, волатильности.

Теперь нам надо сравнить, нашу расчетную Экви с Реальной. А реальная, это сумма всех приращений экви. (если умножить ее на капитал, то получим финрез (проверка)). И тут возникает маленькая тонкость. Если я зайду сразу на всю котлету и буду переворачиваться на одном уровне, то расчет разности СКО будет не точным. Потому что, часть колебаний не будут принимать участие в сделках, а в СКО будут учитываться. Мы возьмем 4 уровня 2000, 6000, -2000 и -6000, а наш ордер триггер разделим на 4 части. И у нас будет получаться. Пересекли один уровень +0,5, пересекли второй +1 и т.д. В результате «Разность СКО» расчетная и «Изменение Экви» реальное, должны совпадать. Теоретически, чем больше таких уровней, тем точнее. Я взял 4. У меня, при каждом пересчете, вылезает «Погрешность по итого». Для демонстрации реальной и расчетной экви погрешность допустимая. Что я этим хотел показать?

В дальнейшем, при расчете наших стратегий, мы не будем гонять каждую цифру, а используем этот расчет, что бы прикинуть процессы внутри свечи. Мы будем сравнивать приращения и волатильности. При этом понимать, какая погрешность в наших расчетах может вылезти.

А на сегодня все. Осталось найти опытного программиста, которой сможет написать робота Алгоритмического Алгоритма (АА) имени ДН, что бы продавать их опытным трейдерам.

Если интересно…