Избранное трейдера MrD

по

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

    • 09 мая 2020, 19:31
    • |
    • 3Qu
  • Еще

Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.

Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.

Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.



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

Индикатор подвижности базового актива "на коленке"

Для интересующихся реализовала этакое «в лоб подобие» индикатора подвижности базового актива по материалу уважаемого В.Курбаковского. За разъяснениями лучше обращаться к автору формулы в его блог (вторая глава его труда об обобщенной модели ценообразования). Индикатор сделала, чтобы посмотреть связь движения IV и этой самой подвижности. Может кому-то будет полезен еще и такой угол зрения. 

Индикатор имеет две настройки — по каким ценам будем оценивать подвижность и на каком периоде. Итог выглядит вот так. Период здесь на картинке дневной — то есть индикатор здесь оценивает мобильность в пунктах в день. Предлагаю использовать на минутном графике.

Индикатор подвижности базового актива "на коленке"

Добавить в избранные скрипты на трейдингвью, а оттуда наложить на график и поиграться, можно тут

UPD: Ночью поддержка TradingView написала мне, что индикатор забанили потому, что у него русское описание. Поправить нельзя, только опубликовать снова с английским описанием, так что вот английская версия, если русскую удалят. Также дала возможность в английской версии назначать длину торгового дня — третья настройка Trading Session in Minutes. Пользуйтесь английской версией, пожалуйста

Починка websockets-криптоконнектора как повод поговорить о парадигме конкурентного программирования (питон)

В общем, решил как-то я написать websockets коннектор к одной криптобирже на С++. Решил, что неплохо было бы найти работающий простеникий коннектор и адаптировать его под себя. На С++ вообще ничего вменяемого найти не получилось, зато нашел нечто на питоне:
github.com/Crypto-toolbox/hitbtc
Штука показалась годной и стал я ее переводить на С++… Кстати, весьма полезное занятие оказалось — узнал определенные вещи из современных стандартов С++11/14, т.к. без них переводить питоновский код — много, долго и грустно)) И вот, в какой-то момент я подумал, что неплохо было бы проверить, а коннектор питоновский, который я взял за образец — он-то вообще работает?? Оказалось, что нет) Пакет websocket для работы с соединениями за 2 года устрарел и не работает, например, вот в этом месте:
self.conn = websocket.WebSocketApp(
            self.url,
            on_open=self._on_open,
            on_message=self._on_message,
            on_error=self._on_error,
            on_close=self._on_close
        )
пакет больше не экспортирует класс WebSocketApp, документацию вменяемую найти сразу не получилось и поэтому возникла потребность заменить websocket на что-то более актуальное. И это актуальное нашлось: websockets.readthedocs.io/en/stable/intro.html

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

Использование метода Монте-Карло для создания портфеля

    • 26 апреля 2020, 14:17
    • |
    • Aleks
  • Еще

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

В этом посте будет рассмотрено то, как оптимизировать портфель при помощи Python и симуляции Монте Карло. Под оптимизацией портфеля понимается такое соотношение весов, которое будет удовлетворять одному из условий:

  • Портфель с минимальным уровнем риском при желаемой доходности;
  • Портфель с максимальной доходностью при установленном риске;
  • Портфель с максимальным значением доходности

Для расчета возьмем девять акций, которые рекомендовал торговый робот одного из брокеров на начало января 2020 года и так же он устанавливал по ним оптимальные веса в портфеле: 'ATVI','BA','CNP','CMA', 'STZ','GPN','MPC','NEM' и 'PKI'. Для анализа будет взяты данные по акциям за последние три года.

#Загружаем библиотеки

import pandas as pd
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

# Получаем данные по акциям
ticker = ['ATVI','BA','CNP','CMA', 'STZ','GPN','MPC','NEM', 'PKI']

stock = yf.download(ticker,'2017-01-01', '2019-01-31')


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

Как посчитать цену опциона на отрицательном страйке.

    • 22 апреля 2020, 12:33
    • |
    • FZF
  • Еще
Это приближенное вычисление опционных цен. Но для тяжелой жизни оно подойдет своей простотой.
1. Принимаем текущую цену базового актива за ноль (относительно этой точки будем считать)
2. Принимаем текущие цены на центральном страйке за «правильные»
или рассчитываем

Кол+Пут= ATR(Н1)*КОРЕНЬ(N)*0,5,  где N количество торговых часов до экспирации.

как описано здесь smart-lab.ru/blog/474365.php

3. Считаем стоимость опционов принимая за Х расстояние на которое страйк удален от текущей цены базового актива, как описано здесь
smart-lab.ru/blog/532275.php

Есть более точная формула, но мне  тоже хочется зарабатывать. :)))

Добавил, чтоб было в основном тексте:
Если нужно более красивую формулу, которая лучше ложиться на рынок,
то надо в показатель степени вставить коэффициент =1,068
Е^(-1.068*abs(X)/2/Q)

Задача для начинающих спекулянтов.

    • 21 апреля 2020, 17:15
    • |
    • 3Qu
  • Еще

Задача для начинающих спекулянтов.

Это может быть интересно
Не интересует.
Всего проголосовало: 23
Все темы сегодня примерно об одном и том же. И пофлудить негде и не о чем.
Об инвестициях можно на год-полтора забыть. Кто не забыл и хочет продолжить этот праздник жизни — это их личное дело.
В общем, имхо, настало время активных спекулянтов. Хотя, для спекуляций тоже не лучшее время, однако, времена не выбирают, в них живут и умирают. ©
В связи с изложенным появилась идея постановки задачи разработки спекулятивной стратегии. В основном для начинающих. В ходе решения вы сами ее и разработаете. Мое дело только постановка задачи. Готовых решений тоже не будет — вы сами их найдете. Да и таких решений может быть много, хороших и разных. Практически как курсовая работа в институте, только значительно проще.
Если наберется несколько человек желающих в период самоизоляции заняться решением — будет и формулировка.
Что касается уже действующих спекулянтов, то у них уже есть стратегии, и им это будет вряд-ли интересно. Хотя, тоже не возбраняется.
Заодно выясним сколько здесь начинающих спекулянтов.)

PS книга по анализу временных рядов - Бокс Дж., Дженкинс Г. Анализ временных рядов, прогноз и управление.



А еще , на опционах можно зарабатывать такими стратегиями.

    • 17 апреля 2020, 17:51
    • |
    • FZF
  • Еще

Сегодня сделал извращение на волатильностях  Si и  RTS. Это были недельные опционы с экспирацией 23/04/2020.  На центральном 107500 страйке   RTS волатильность была  60 , а на центральном 75000 страйке Si  волатильность опустилась до 20. 

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

Пропорции выбирал следующим образом.  Фьючерс   RTS в рублях стоит 158709 руб., а фьючерс Si  =75000 руб. На один  RTS приходится 2,116 Si .

Поскольку Si  я покупал, а  RTS продавал, то пропорцию взял с запасом 1:3

Дальше подразумевалось дельтахеджирование по следующим правилам:

Когда у RTS дельта становится 1, выравнивать ее в ноль, и в этот же момент выравнивать в ноль позицию Si.  Ведущей должна быть проданная позиция.

Позицию я сделал в 12:30, а к 16:20 волатильности немного сошлись. Закрыл позицию с прибылью 5400 руб.

Ждать не стал, поскольку у меня нет математического описания для таких позиций. Делаю я так редко и по интуиции. Но если в рублях выразить центры стредлов, то Si примерно на 18-19 тыс. руб. дешевле, чем  RTS.  Так что, 5 тысяч мне для получения удовольствия вполне хвалило. Жадничать не надо.




Наивный прогноз волатильности

Берём РИ.
Смотрим на high-low за сегодня, вчера и позавчера.

Проверяем гипотезу о чередовании волатильности и её контртрендовости.

Если позавчера было больше, чем вчера, то сегодня должно быть также больше чем вчера.
Если угадали, то получили +1. Если не угадали, то -1. В итоге получаем в среднем +0,28.
Работает.

Если позавчера было меньше, чем вчера, то сегодня должно быть также меньше, чем вчера.
По такой же схеме баллы +1 и -1. В итоге +0,38 в среднем.
Опять работает.

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

Для первого случая получаем среднюю «сделку» в +0,54%. Это что-то типа купленного стрэддла.
Для второго случая получаем среднюю «сделку» в +0,61%. Это что-то типа проданного стрэддла.

Заглянув в стаканы опционов, понимаем, что издержки могут измеряться процентами, поэтому грааля тут нет,
но, как факт, любопытно.

Возможной стратегией, реализующей эти случаи была бы покупка/продажа стрэддла, например, в 18:30, удержание в один день и скидывание на следующий день в такие же 18:30.

Telagram+Quik+Lua: сам себе мессенджер

Самый простой способ, которым я пользовался долгое время.
Нужно установить две программы: Tor browser и curl.
Первая, чтобы блокировки телеграма обходить. Вторая, чтобы сетевую команду исполнять.

Разумеется, телеграм-бот уже должен быть создан, вы должны знать его идентификатор, а также айди своего телеграм-аккаунта,
чтобы подписаться на бота и видеть сообщения от бота.

В луа после этого всё предельно просто:
str='C:\\curl-7.63.0-win64-mingw\\bin\\curl.exe --socks5 127.0.0.1:9150 '
	str=str..'"https://api.telegram.org/botидентификаторвашегобота/sendMessage?chat_id=айдивашегоаккаунта&text='

str=str..переменная1..": "..переменная2
str=str..'"'
os.execute(str)
Приведенный код будет слать в телеграм значения двух переменных, разделенных двоеточием.
Всё просто, но есть два нюанса:
1. Каждая отправка сообщения сопровождается вызовом окна командной строки, которая всплывает поверх всех окон на одну-две секунды. Поэтому слать такие сообщения на машине, с которой вы работаете, чаще одного раза в минуту, не стоит.
2. Я таким способом пользовался больше года и считал, что он и легкий и надежный, но оказалось, что он легкий, но ненадежный. Один раз у меня случилась такая штука. Всплыло черное окошко командной строки, сообщение в телегу не ушло, окошко продолжило висеть. Видимо, какой-то сетевой сбой. И, как оказалось, квик-поток, вызвавший эту командную строку через os.execute, тоже завис и квик перестал коннектиться почему-то, потерял данные и тд. После того, как я это окошко закрыл крестиком, квик продолжил работу. Грубо говоря, из десятков тысяч запусков за год применения такого способа 1 вот такой глюк. Редко, но неприятно.

А какие вы знаете простые, легкие и надежные способы информирования без необходимости много кодить?


Как вы относитесь к перестраивающимся индикаторорам в торговых системах?

    • 11 апреля 2020, 21:32
    • |
    • 3Qu
  • Еще

Как вы относитесь к перестраивающимся индикаторорам в торговых системах?

Никак
Отрицательно
Допускаю их применение
Положительно, но не применяю
Положительно, применяю.
Всего проголосовало: 40
Дискуссии, если понадобится, потом, когда немного статистики наберется.

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