Избранное трейдера Денис Сафонов

по

Где брать идеи для алго-стратегий? Туториал по академическим ресерчам для начинающих + полезные ссылки

Привет, сегодня вместо традиционного бэктеста разберем площадки, где можно подсмотреть идеи для торговых стратегий.  Навеяно постом Eugene Logunov о литературе для алго-трейдера https://smart-lab.ru/blog/627444.php Теперь у нас есть методики, но где взять идеи? :)

Наши предыдущие бэктесты хоть и адаптированы под Россию и имеют отличия в реализации – все равно основываются на ранее выявленных закономерностях в США/Европе. Сразу скажу, что речь пойдет об исследованиях в открытом доступе. Если на работе/в университете есть доступ к EBSCO или Science Direct, то вы и сами знаете, где все посмотреть.

Зачем вообще читать академические ресерчи, если фонд LTCM показал, что кол-во цитирований и премий спорно соотносится с успехом на рынке?

Хорошие ресерчи дают базовые идеи о том, что и почему работало в прошлом, на каких стадиях и почему перестало. Да, в них есть реализация или дизайн исполнения, но обычно он сырой и его всегда можно поменять, сохранив базовую идею. В отличие от дискуссий в рунете, очень сложно опубликовать что-то без пруфов, а проверка устойчивости не ограничивается t-статистикой > 3.  Сам текст хорошо структурирован, методика либо объясняется полностью, либо ссылается на такой текст. Авторы в основном исследователи, которые выполняя свою работу попутно дают подсказки практикам. Но встречаются и практики, например, аналитики хедж фонда AQR сейчас главные поставщики контента по факторным стратегиям или ученые Dimson и Ibbotson, которые параллельно пишут исследования для инвестиционных банков. Если желание почитать что-то заумное осталось, то сформулируйте идею/биржевую аномалию, которую хотите проверить (например, покупка акций с наибольшими дивидендами) и возвращайтесь к этому тексту.



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

КВИК-->Lua-->Python. Трансляция данных из КВИКа в Питон в реальном времени

Всех с пятницей — самоизолятницей!
Представляю общественности Python-сервер (в 9 строк кода) для получения данных из КВИКа в Питон через луа-скрипт в режиме реального времени.
Для примера приведу получение тиковых данных по SIM0.
Нам понадобятся следующие ингредиенты.
1. Понятное дело КВИК, версии ниже 8 или 8.5.2 и выше.
2. Питон Jupyter Notebook (Anaconda 3)
3. Луа-скрипт, взятый из Jatotrader (в нем буквально изменено пару строк)
Как работает сервер можно посмотреть в этом видео (1 мин. 38 сек.) Ну и по правилам хорошего тона, естественно сам текст ниже.


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

Бесплатный робот на quik XoraX боковик на lua, нефть Brent (обновление)

    • 20 мая 2020, 21:15
    • |
    • XoraX
  • Еще
Теперь робот на гите )

https://github.com/koras/robot_xorax

Релизы будут там же

https://github.com/koras/robot_xorax/releases

Старая версия робота сильно устарела за неделю. Есть люди которые тестируют в режиме эмуляции (респект вам ребята, спасибо)


Что нового:
Так как у бота нет стопов, ну он и не рассчитан на большие объёмы торговли, то была добавлена блокировка покупок при условии, что осуществляется покупка более определённого числа контрактов и не было продано за промежуток покупок ни одного контракта.
Так же можно увеличивать промежуток покупок при падении, информация регулируемая(динамически)

Бесплатный робот на quik XoraX боковик на lua, нефть Brent (обновление)

Ранее заявки на продажу выставлялись как просто лимитки, теперь выставляются тейк-профиты. Настройки выведены на скрин выше.

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

Опыт доработки QLua-скриптов для QUIK 8.5.2

    • 15 мая 2020, 16:29
    • |
    • _sk_
  • Еще
В новой версии терминала QUIK 8.5.2 произведён апгрейд языка Lua для написания торговых скриптов с версии 5.1 до версии 5.3. Это нужно для того, чтобы корректно обрабатывать 19-значные номера заявок и сделок на срочном рынке МосБиржи. Типа number в Lua 5.1 не подходит: там все числа хранятся как double, соответственно целые числа до 2^53 = 9 007 199 254 740 992 записываются без потери точности, а 19-значные номера заявок и сделок будут больше этой границы.

Версия Lua 5.3 обратно несовместима с Lua 5.1. Я почти не использовал внешние библиотеки и для меня было два важных изменения: отказ от module (это было сделано в версии 5.2) и введение целочисленной арифметики (версия 5.3).

Для избавления от использования module пришлось переработать много кода, хотя изменения были несложные. Приведу пример. Раньше был такой код Arrays.lua для работы с массивами:

--
-- Выполнение действий с массивами.
--

local pairs = pairs
local type = type

module(...)

--- Создать копию массива (таблицы)
-- @return копию массива (таблицы)
function copy(array)
    local copy_array = {}
    if type(array) ~= "table" then
        return array
    end
    for k, v in pairs(array) do
        if type(v) == "table" then
            copy_array[k] = copy(v)
        else
            copy_array[k] = v
        end
    end
    return copy_array
end

--- Узнать, начинается ли индексация в массиве с нуля или с единицы.
-- @return 0 или 1
function base(array)
    if array[0] ~= nil then
        return 0
    else
        return 1
    end
end

--- Вычислить число элементов в массиве.
-- @return число элементов в массиве
function size(array)
    local n = 0
    for _, _ in pairs(array) do
        n = n + 1
    end
    return n
end

--- Проверить пустой или нет массив.
-- @return true/false
function isEmpty(array)
    for _, _ in pairs(array) do
        return false
    end
    return true
end

--- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1.
-- @return первый индекс массива, где ничего не записано
function firstEmptyIndex(array)
    local i = 1
    while array[i] ~= nil do
        i = i + 1
    end
    return i
end


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

Моделирование Торговых Систем на Python. 2.

    • 12 мая 2020, 10:29
    • |
    • 3Qu
  • Еще

Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].

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

Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:



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

Имеет ли смысл писать о моделировании ТС на Python?

    • 08 мая 2020, 21:01
    • |
    • 3Qu
  • Еще

Имеет ли смысл писать о моделировании ТС на Python?

Имеет смысл
Не интересно
Всего проголосовало: 213
Стоит ли посвятить несколько топиков моделированию стратегий на Python? Не о программировании на Python — это в книгах можно прочесть, а именно о методах моделирования и тестирования стратегий.
Можно начать, скажем с двух ЕМА. Стратегия изначально дохлая, но может послужить шаблоном для разработки ваших собственных стратегий. Для этого потребуется несколько топиков. Если интереса не будет, то и заморачиваться не имеет смысла. Может вы и сами с усами.)

Как увидеть Сигму?

HV, IV, RV, LV, SV – каких только волатильностей не напридумывали….

Куда опционщику смотреть? Что брать за основу? Это я еще про методы измерения не упомянул. Хотя с методами измерения HV – более-менее сошлись во мнении, что Yang-Zhang рулит. Вроде как адекватно описывает.

Не будем оспаривать, по крайней мере не в этой статье.

Я за другое – КАК ЭТО ВСЕ УВИДЕТЬ? В книжках учат наложить два графика друг на друга – HV на IV (ну или на оборот). Посмотреть кто выше – того продать, кто ниже – того купить:
Как увидеть Сигму?

Волатильность — это «медленная цена» или просто стоимость. Т.е. цена опциона зависит от базового актива, дней до экспиры и уровня страха трейдеров. Меняется она очень быстро. Чтобы оценивать именно стоимость опциона (страховки) – как раз и используется IV волатильность. Далее трейдерам нужно понять какая «медленная цена» у самого базового актива – HV волатильность. Вот для нее придумали формулы измерения исторической волатильности. Если погружаться в эти формулы, то начинают появляться новые параметры – приращение доходности, дисперсия и среднеквадратичное отклонение — сигма. Если первые два параметра это промежуточные вычисления, то сигма используется уже более активно. Господин Гаусс когда-то доказал, что в нормально распределенных случайных процессах в 68% случаев изменение величины (у нас это приращение доходности) от среднего не превысит одной сигмы. Те, кто давно в рынке скажут – рынок ни капли не нормально распределяет свои приращения и поправят Гаусса до величины 58%. Всё это интересно, занимательно, но заставляет нас ворошить знания по теорверу и статистике. А нам – трейдерам – дайте лучше кнопку «БАБЛО», а не вот это вот все…..



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

Искусственный трейдер. Часть 3. Или ТСЛаb в 20 строк кода.

Надеюсь, все живы и здоровы!
Предупреждаю сразу — текста будет больше чем когда кОда (сам код в конце топика).
Перед тем как перейти к созданию алгоритмов машинного обучения, напишем код для тестирования стратегий и отображения результатов.
Мне нужно: описать логику сигналов на покупку и продажу, затем эти сигналы передать симулятору, который в течение конкретной торговой сессии будет показывать на графике точки, соответствующие этим сигналам, а также рассчитывать изменение прибыли и текущей позиции в каждый момент времени. Данные должны загружаться в хронологическом порядке в цикле по торговым сессиям. После завершения обработки нужно создать итоговый график «эквити» по дням, на графике видеть значения максимальной прибыли и «просадки» за каждую торговую сессию, максимальный уровень риска (величину открытой позиции), количество совершенных сделок и соотношение убыточных-прибыльных дней. Вроде бы все пока. Короче, нужно по-быстрому написать ТСЛаb.

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

Качаем исторические данные с MOEX!

Итак, передо мной, уверен, как и перед многими, встал вопрос поиска исторической информации с Мосбиржи. Немного зная python, я написал вот такой парсер:
import requests
import datetime
import pathlib

SECIDs = ["GAZP", "BANEP", "LKOH"]
DISK = "E"
for SECID in SECIDs:
    from_date = "2020-05-04"
    to_date = "2005-01-03"
    while str(to_date) != from_date:
        to_date = str(to_date)
        to_date = to_date.split('-')
        a = datetime.date(int(to_date[0]), int(to_date[1]), int(to_date[2]))
        b = datetime.timedelta(days=140)
        to_date = a + b
        pathlib.Path("{}:/{}/{}".format(DISK, "Database_MOEX", SECID)).mkdir(parents=True, exist_ok=True)
        filename = SECID + "_" + str(to_date) + ".csv"
        with requests.get("http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/tqbr/securities/{}.csv?date={}".format(SECID, to_date)) as response:
            with open("{}:/Database_MOEX/{}/{}".format(DISK, SECID, filename), 'wb') as f:
                for chunk in response.iter_content():
                    f.write(chunk)
Для начала пройдемся по его плюсам и минусам. Самый главный минус, что этот парсер качает только определенный период, который уникален для каждой акции, судя по всему для увеличения этого периода надо кинуть бирже на лапу:), и то что информация предоставляется за день, теперь перейдем к плюсам: можно выкачивать историю за определенный период для нескольких инструментов сразу (их количество ограничивается лишь количеством инструментов на мосбиржи), есть возможность назначать диск для сохранения информации, быстрота выгрузки данных.

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

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