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

по

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

    • 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
Дискуссии, если понадобится, потом, когда немного статистики наберется.

Общий финансовый анализ на Python (Часть 3)

    • 05 апреля 2020, 12:51
    • |
    • Aleks
  • Еще

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

Сначала немного теории:

О линейной регрессии

Линейная регрессия используется в качестве прогнозирующей модели, когда предполагается линейная зависимость между зависимой переменной (переменная, которую мы пытаемся предсказать) и независимой переменной (переменная и/или переменные, используемые для предсказания).



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

QLua: таблица крупных "склеенных" обезличенных сделок

    • 03 апреля 2020, 15:06
    • |
    • _sk_
  • Еще
Иногда хочется наблюдать за ситуациями, когда участники торгов исполняют по рынку крупные заявки. Конечно, можно смотреть на обычную ленту обезличенных сделок с настроенными фильтрами на размер сделки, но ведь можно написать специальный QLua-скрипт, который будет отбирать сделки, являющиеся результатом исполнения.

В терминале QUIK ордерлог недоступен, поэтому надо как-то эвристическим образом определить, что набор обезличенных сделок относится к одной и той же рыночной заявке. Например, можно проверять, что инструмент в текущей сделке совпадает с инструментом в предыдущей сделке, направление сделки то же самое, время сделки совпадает с точностью до миллисекунд, и цена при покупке растёт, а при продаже — падает.

Если суммарный объём не менее какой-то границы, которую можно задать для каждого инструмента индивидуально, такие «склеенные» сделки выводятся в таблице. В ней указаны:
— суммарный объём;
— количество обезличенных сделок, которые были склеены;
— начальная цена и конечная цена;

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

Досужие размышления о Quik, Lua и Python.

    • 28 марта 2020, 16:03
    • |
    • 3Qu
  • Еще

Я уже писал, что у меня сделана C++ DLL, которая получает данные из Lua и пишет их в БД SQLite. Уже писал также, что DLL под Lua делается на раз, и даже приводил коды и шаблон проекта простенькой C++ DLL. Посмотрело несколько тысяч, скачало, аж 12 человек, применят от силы двое. КПД постов, прямо скажем, оч низкий.)

В DLL реализована как связь с Lua, и будет реализована сама стратегия, вот только не решил какая из них. Повторять старые стратегии на новой для меня платформе Quik уже неинтересно, а новых моделей АТС отработано уже несколько. Все моделируется в Python. Часть стратегий не требует сложной математики, и могут быть легко перенесены непосредственно на С++. Другие непосредственно в DLL перенесены быть не могут, т.к. используют пакеты Python — всяческие регрессии и машинное обучение.
В общем, получилось, что DLL является шаблоном для любой стратегии. Все необходимые для АТС данные доступны АТС — реал-тайм данные поступают в DLL непосредственно из терминала, а необходимая история пишется DLL в БД SQLite и читается АТС из базы данных.



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

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