Блог им. kurd |Алготрейдинг с обезличенными сделками. С чего начать

Обезличенные сделки в Quik'е содержат информацию о направлении сделок — Buy и Sell. Теоретически, это даёт дополнительные возможности прогноза движения цены. На практике дело сразу упирается в громадный объём этих тиковых данных и недоступность их во всех широко известных источниках.
Запрос «smart-lab Обезличенные сделки» в Яндексе даёт подборку
smart-lab.ru/blog/583818.php?ysclid=l5rmqam0or156053926
smart-lab.ru/tag/%D0%BE%D0%B1%D0%B5%D0%B7%D0%BB%D0%B8%D1%87%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B8/?ysclid=l5rmr8efkg459101185
Разговоры сводятся к откачивание данных из Quik'а с помощью QLua и манипуляциям в Excel. Подход беспомощный и бесперспективный.

Во-первых, держать Quik включённым целый день только для получения данных по обезличенным сделкам впрок, для дальнейшего анализа — испытание терпения, немногим по силам. Ведь для реалистичности тестирования нужны данные за много дней.
Во-вторых,  объёмы данных за один торговый день — сотни тысяч записей, до полутора миллиона и более. Никакой Excel или Python не справятся. Выход в использовании источника с готовыми данными и эффективного средства программирования вроде C++, C# или Java.

( Читать дальше )

Блог им. kurd |"Акела промахнулся" или "Мальчик Buybuy" слишком гениален, чтобы кто-то его мог понять?

По следам статей
«Рынок — это просто! Часть 3» 03 июня 2022, 01:12 «ВПК России — лучший»
smart-lab.ru/blog/808353.php
«грааль от BuyBuy» 05 июня 2022, 05:17 «Sergey Pavlov»
smart-lab.ru/blog/808971.php

Резюмируем сжато:
Цена актива в момент t — это x(t), приращение цены — d(t)=x(t)-x(t-1).
Индикатор id(t)=A*d(t-1)+B*d(t-2)
Покупка, когда id(t)>=0, продажа, когда id(t)<0.

Чтобы индикатор работал идеально на 2-х предыдущих барах, д.б.
d(t-1)=A*d(t-2)+B*d(t-3)
d(t-2)=A*d(t-3)+B*d(t-4)

Решение с точностью до множителя существует всегда:
A=d(t-1)*d(t-4)-d(t-2)*d(t-3)
B=d(t-2)*d(t-2)-d(t-1)*d(t-3)

Все это работает на таймфрейме 1 min и ниже.

И добавим однозначности:
Если считать, что d(t) = d(t-0) = x(t-0) — x(t-1),
то d(t-1) = x(t-1) — x(t-2) и т.д.

Скрипт C# на WealthLab
protected override void Execute()	{
    var d1 = (Close >> 1) - (Close >> 2);
    var d2 = (Close >> 2) - (Close >> 3);
    var d3 = (Close >> 3) - (Close >> 4);
    var d4 = (Close >> 4) - (Close >> 5);
    for (int i = 5; i < Bars.Count-2; i++) {
      double A = d1[i]*d4[i] - d2[i]*d3[i];
      double B = d2[i]*d2[i] - d1[i]*d3[i];
      double id = A*d1[i] + B*d2[i];
      int posDir = (! IsLastPositionActive) ? 0
        : LastPosition.PositionType == PositionType.Long ? 1 : -1;  
      if (id >= 0 && posDir != 1) {
        if (posDir == -1)
          ExitAtClose (i, LastPosition);
        BuyAtClose (i);
      } else if (id < 0 && posDir != -1) {
        if (posDir == 1)
          ExitAtClose (i, LastPosition);
        ShortAtClose (i);
      }
    } // for (int i
  } // Execute()
даёт результаты на минутках на 68 днях от 10:00 до 18:44 для сделок без комиссии и проскальзывания

( Читать дальше )

Блог им. kurd |История доходности вложений в биржу с 1995

За начало взял сентябрь 1995, т.к. для индекса РТС Финам не даёт более ранних дат. Но для долгосрочника этот индекс — отстой. Так что его смотреть не будем.
Для сравнения принята цена Close на 31.01.2022.
Начнём с недельных графиков SnP500. Правда, его Финам выдал только с февраля 2001.
На верхнем графике для каждой недели подсчитаны доходности покупки по Open в процентах относительно Close последнего бара. Для последних 365 дней доходность не считается. Последний год на жёлтом фоне. Средняя доходность без поледнего года показана красной горизонталью. На нижнем графике синяя горизонталь показывает Close последнего бара.
История доходности вложений в биржу с 1995
Таблица построена за тот же период.
StrategyName Growth
SANDP-500_010216_220131dayly Weekly
ini     1326.6100
fin     4546.5400
growth     3.4272
bars         1091
years     20.9699
year%      6.0498
mean%     12.3421
nn;HiIdx;HiMax     ; HiDate    ; LoIdx;LoMin     ; LoDate    ;Days ;Drawdown ;Pct>=20
 0;    0;   1326.61; 17.02.2001;    86;    768.63; 11.10.2002;  601;   557.98;  42.06
 1;  344;   1576.03; 13.10.2007;   417;    667.04; 07.03.2009;  511;   908.99;  57.68
 2;  530;   1370.58; 06.05.2011;   552;   1075.09; 07.10.2011;  154;   295.49;  21.56
 3;  915;   2940.91; 21.09.2018;   929;   2346.58; 28.12.2018;   98;   594.33;  20.21
 4;  989;   3393.52; 21.02.2020;   994;   2192.07; 27.03.2020;   35;  1201.45;  35.40
Самая долгая просадка
 0;    0;   1326.61; 17.02.2001;    86;    768.63; 11.10.2002;  601;   557.98;  42.06
Наибольшая абсолютная
 4;  989;   3393.52; 21.02.2020;   994;   2192.07; 27.03.2020;   35;  1201.45;  35.40
Наибольшая относительная
 1;  344;   1576.03; 13.10.2007;   417;    667.04; 07.03.2009;  511;   908.99;  57.68
Результаты по NASDAQ

( Читать дальше )

Блог им. kurd |"Усердие всё превозмогает. Иногда даже рассудок" (Козьма Прутков). О выявлении крупных сделок

В источнике smart-lab.ru/blog/760357.php код QLua и картинка из Quik'а.
Возможно, смысл в том, чтобы отловить сделки крупных игроков. Но склеивание в одну «крупную сделку» всех обезличенных сделок одного направления, пришедших в одну миллисекунду или несколько подряд, вряд ли служит цели. Это заявки разных игроков. Ведь уловка китов, прибегающих к «Айсберг-заявкам», в том и состоит, чтобы расщепить свою крупную заявку во времени.
Так что если кто хочет схватить такого кита за руку, может попробовать выявлять последовательности тиков одного объёма и направления через равные интервалы времени.
Но!
1) Точно ли  все «Айсберг-заявки» формируются равными объёмами и через равные интервалы времени? Это было бы довольно глупо.
2) Даже если такая глупость существует, к любому тику с заявкой кита может прилепиться много заявок мелкоты. Это сильно затруднит выявление регулярных «Айсберг-заявок».
3) Самые киты входят-выходят на рынке не одной «Айсберг-заявкой» и даже не в один день! А то и ещё и через день — по обстановке. Шансов опознать именно их заявки среди прочих — ноль.
4) В самом ли деле так важно знать сделки крупных игроков? Крупняк никогда не проигрывает?

NB Почему эти вопросы не пришли в голову никому из заинтересованных комментаторов?
Включая торговый терминал, не забудьте включить голову.
  • обсудить на форуме:
  • Quik Lua

Блог им. kurd |Какой риск в шорте недельных стрэддлов "30% годовых без рисков". Тестируем на истории 495 недель

Народ последние дни воодушевился открытием Грааля smart-lab.ru/blog/754088.php
Давайте разберёмся. Ставим эксперимент.

У меня в хозяйстве скачана с Финама минутная история 36 квартальных фьючерсов Si с 2013 по 2021 год. Разделяю кварталы на недели с четверга по четверг и в начале каждой недели в 19:01 регистрирую шорт кола и пута на центральном (ближайшем к цене фьючерса) страйке, а в конце этой же недели в 18:44 регистрирую откуп опционов.
Теоретические цены-премии опционов определяю по Блэку-Шоулзу. Волатильность в начале недели принимаю 15%, в конце — 20%. Проскальзывание на шорт принимаю 1% от теорцены. Комиссию на куплю+продажу одного опциона принимаю 8 руб. Это вполне оптимистично.
Логика видна в главном цикле скрипта WealthLab'а.
for (int i = i0; i < weeks.Count; ++i) {
  int idxIni = IndexOf (weeks[i][0]-1, entryTime);
  int idxFin = IndexOf (weeks[i][1], exitTime);
  double strike = mwu.RoundTo (Open[idxIni], strikeStep);
  double dura = (Date[idxFin] - Date[idxIni]).TotalDays;
  double calIni = OptPrice ('C', Open[idxIni], strike, dura, volaIni);
  double putIni = OptPrice ('P', Open[idxIni], strike, dura, volaIni);
  double calFin = OptPrice ('C', Close[idxFin], strike, 1e-6, volaFin);
  double putFin = OptPrice ('P', Close[idxFin], strike, 1e-6, volaFin);
  double win = (calIni+putIni) * (1-slpg) - (calFin+putFin) - 2*fee;
  PrintDebug (String.Format (fmt, i, Date[idxFin].ToShortDateString()
    ,calIni, putIni, calFin, putFin, win));
} // for (int i = i0
Вот выдача за первый квартал

( Читать дальше )

Блог им. kurd |Правда ли что биржа США так хороша? Оценка в рублях за 24 года

Залезаем на Финам и скачиваем историю индекса Дау-Джонса тикер D&J-IND
www.finam.ru/profile/mirovye-indeksy/d-j-ind/export/?market=6&em=91&token=&code=DJI&apply=0&df=13&mf=8&yf=2021&from=13.09.2021&dt=13&mt=8&yt=2021&to=13.09.2021&p=7&f=DJI_210913_210913&e=.txt&cn=DJI&dtf=1&tmf=1&MSOR=1&mstime=on&mstimever=1&sep=1&sep2=1&datf=1&at=1
Рост от 7651 до 35516.6 — в 4.697 раза.

Затем скачиваем «Курс рубля. USDRUB курс ЦБ» тикер USDCB
www.finam.ru/profile/kurs-rublya/usd-from-cb/export/?market=41&em=82485&token=03AGdBq26IJk6CztMjcUSh-HSEeCSnKqkyT4jKDa6_TRojZmdiXBAWUFTnHAjf8IoYvsI9W7MBFa2OzcIS9In75k55ReIhxIdMMWP4JNHDi1Io4Ry7qY0F4ZUO9H62M-P3dA_P0Noo2Zyx14Gq9uLNKVBye6PEbGMi9nTdOVnQLLdikrqG0YiS8ywMR6__e0Isc5QyyxOfni7PGoqibw4o1QLNDV-DxbQrN9ZN-qswsG5U5-wSlKYLlI96ZkPKU7ZbHi92dV9pw5CEaQIqJaYP2NlhMmXtwiUpVkXFcSrI_3DS_TxZwovaitoqSCo-K_7wXhpFwj-mM4tDcFJH6ld0rHV6QoCbVZZv_nRVYpEEN3t34by4IPO3LoWBoACzBlLUTxN99HLEL6K5eegZNdJ3yVztZmFLzxKIi9Tm9UD6W3-7QVDQGFMK1kXrfHJRQeul6omvIQm9TR-B&code=USDCB&apply=0&df=1&mf=8&yf=1997&from=01.09.1997&dt=13&mt=7&yt=2021&to=13.08.2021&p=8&f=USDCB_970901_210813&e=.csv&cn=USDCB&dtf=1&tmf=1&MSOR=0&mstime=on&mstimever=1&sep=3&sep2=1&datf=1&at=1
Рост от 5.832 (деноминировано) до 73.47 руб/длр — в 12.60 раза.
Перемножаем и получаем рост Дау-Джонса в рублях за 24 года в 58.19 раза.

Мой Quik показывает индекс ММВБ IMOEX на недельном тайм-фрейме от 100 в начале сентября 1997 до 3856.76 на 15.09.2021 — в 38.57 раза.

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Блог им. kurd |Нужны ли тиковые данные для тестирования торговой стратегии?

Из общих соображений максимальной реалистичности тестирования ответ должен быть положительный. Но есть несколько «но».
Первое. Я не знаю примеров торговых стратегий на тиках. Только на свечах-барах — от минуток до дневок. Поэтому, сгрузив с qscalp.ru тики фьючерса на индекс РТС, я конвертировал их в секундные бары. И получил потрясающую доходность на простейшем алгоритме. Лонг по Close каждой чёрной свечи и шорт по Close каждой белой свечи. Увы, этот выигрыш виден только при нулевой комиссии. С комиссией выигрыш превращается в проигрыш.
Так что реагировать на движение цены не то что на тиках, но на секундах — пустой номер.

Второе. Если кто-то  для большей реалистичности захочет тестировать торговую стратегию не по ценам сделок, но по ценам очереди заявок, он может сгрузить эти тиковые данные с qscalp.ru
Но для ликвидных бумаг вроде фьючерса на индекс РТС это будет ловлей блох, т.к. спред очереди заявок таких бумаг равен шагу цены. Т.е. учесть этот спред можно, задав величину проскальзывания сделки.

( Читать дальше )

Блог им. kurd |Индикатор Загзаг для Quik'а - лучший демонстратор тренда (и волн Эллиота). Даром

Всем известен старинный индикатор Пробоя. Этот индикатор для Quik'а найдёте на smart-lab.ru/blog/704033.php
Когда-то по нему торговали, покупая на пробое вверх максимума предыдущих N баров и продавая на пробое минимума. Похоже, сегодня эта стратегия вышла из моды.

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

Мало кто пытался строить торговую стратегию на основе Зигзага. Самое ходовое возражение против Зигзага — он не предсказывает тренд. Абсурд. Никто и ничто не предсказывает будущего!
Более того. Зигзаг даёт самое объективное и наглядное представление о чередовании трендов заданной силы.

Я некоторое время назад уже предлагал вниманию публики индикатор зигзага для

( Читать дальше )

Блог им. kurd |Добавим Фьючерс ММВБ на золото. Двойной Грааль для терпил. Исправленный

Это дополнение «Снова Фьючерс на индекс ММВБ. Грааль для терпил» smart-lab.ru/blog/699619.php
На этот раз гоняем историю фьючерса GOLD. Но для сопоставимости с MXI сразу конвертируем доллары в рубли по курсам на каждый день торгов.
Игнорируем, что фьючерс на золото торгуется в контанго. Не суть! Используем почти тот же алгоритм, что в предыдущей статье, на те же 73 квартала с марта 2003.
Изменение в том, что WealthLab заглючил на истории золота и в одном баре не закрывает позицию по заданной цене. Пришлось делать роллирование по цене открытия дня, следующего за экспирацией.
Оптимизированные параметры: триггер скользящего стопа 25%, реверс 5%, убыток 10%.
Выигрыш 120788.33 руб. Просадка 30820.10 руб на 08.03.2021. От максимума цены позиции 154559 руб на 06.08.2020 это 19.94%.


Теперь для подсчёта прибыльности я беру не конечную цену актива, но среднюю за все дни, равную 52641.90 руб.

Связанные средства: ГО + резерв = 9306.61 * 1.25 = 11633.26 руб; Вариационка = 52641.90 * 0.25 = 13160.48 руб.
Итого: 24793.73 руб. округлим до 25000 руб.
При среднем выигрыше за квартал 1654.63 руб это даёт квартальную прибыльность 6.62%. На год в среднем 26.47%.
Следует отметить 6 проигрышных подряд кварталов 2012-2013 и ещё 5 случаев по 2 проигрыша подряд. Учитывая, что ФРС уже почти израсходовала свой боезапас, вряд ли возможно повторение 2012 года.



( Читать дальше )

....все тэги
UPDONW
Новый дизайн