Избранное трейдера Роман Давыдов
# В КВИКе запускаем луа-скрипт QuikLuaPython.lua import socket import threading from datetime import datetime, timezone import pandas as pd import finplot as fplt fplt.display_timezone = timezone.utc class DeltaBar(): def __init__(self): self.df = pd.DataFrame(columns='date_time open high low close delta delta_time_sec'.split(' ')) self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0] def parser(self, parse): if parse[0] == '1' and parse[1] == 'RIH1': if abs(self.df.iloc[len(self.df) - 1]['delta']) >= 500: self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0] # Добавляем строку в DF self.df.iloc[len(self.df) - 1]['close'] = float(parse[4]) # Записываем последнюю цену как цену close бара if self.df.iloc[len(self.df) - 1]['date_time'] == 0: self.df.iloc[len(self.df) - 1]['date_time'] = \ datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f").replace(microsecond=0) if self.df.iloc[len(self.df) - 1]['open'] == 0: self.df.iloc[len(self.df) - 1]['open'] = float(parse[4]) if float(parse[4]) > self.df.iloc[len(self.df) - 1]['high']: self.df.iloc[len(self.df) - 1]['high'] = float(parse[4]) if (float(parse[4]) < self.df.iloc[len(self.df) - 1]['low']) or \ (self.df.iloc[len(self.df) - 1]['low'] == 0): self.df.iloc[len(self.df) - 1]['low'] = float(parse[4]) if parse[5] == '1026': self.df.iloc[len(self.df) - 1]['delta'] += float(parse[6]) if parse[5] == '1025': self.df.iloc[len(self.df) - 1]['delta'] -= float(parse[6]) self.df.iloc[len(self.df) - 1]['delta_time_sec'] = \ datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f") - \ self.df.iloc[len(self.df) - 1]['date_time'] self.df.iloc[len(self.df) - 1]['delta_time_sec'] = self.df.iloc[len(self.df) - 1]['delta_time_sec'].seconds def service(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(('127.0.0.1', 3587)) # Хост-этот компьютер, порт - 3587 while True: res = sock.recv(2048).decode('utf-8') if res == '<qstp>\n': # строка приходит от клиента при остановке луа-скрипта в КВИКе break else: delta_bar.parser(res.split(' ')) # Здесь вызываете свой парсер. Для примера функция: parser (parse) sock.close() def update(): df = delta_bar.df # Меняем индекс и делаем его типом datetime df = df.set_index(pd.to_datetime(df['date_time'], format='%Y-%m-%d %H:%M:%S')) # print(delta_bar.df) # pick columns for our three data sources: candlesticks and TD candlesticks = df['open close high low'.split()] volumes = df['open close delta_time_sec'.split()] if not plots: # first time we create the plots global ax plots.append(fplt.candlestick_ochl(candlesticks)) plots.append(fplt.volume_ocv(volumes, ax=ax.overlay())) else: # every time after we just update the data sources on each plot plots[0].update_data(candlesticks) plots[1].update_data(volumes) if __name__ == '__main__': delta_bar = DeltaBar() # Запускаем сервер в своем потоке t = threading.Thread(name='service', target=service) t.start() plots = [] ax = fplt.create_plot('RIH1', init_zoom_periods=100, maximize=False) update() fplt.timer_callback(update, 2.0) # update (using synchronous rest call) every N seconds fplt.show()
Привет всем любителям и ценителям опционов. С большим вниманием ознакомился с содержанием раздела на смартлабе и принял решение зарегистрировать здесь свой опционный блог. Пока учился торговле этим замечательным инструментом, перечитал стопку учебников, пересмотрел сутки видеороликов на русском и английском, взял платные курсы, облазил интернет в поисках скудных крох практических аспектов, но в итоге все практические навыки пришлось извлекать самому, некоторые — весьма болезненно. Думаю, от меня не убудет поделиться, и считаю, что удивительный мир опционной торговли заслуживает того, чтобы о нем писали больше и чаще.
Во первых строках — кратко о себе и о том, что, как и где торгую. Мне 46, в мир опционов пришел давно, лет 5 назад, но с первого захода не сложилось — торговал рублевыми опционами, и неудачно. Я потом объясню, почему неудачно. В прошлом году покинул, наконец, работу, открыл счет в IB, закинул туда столько, сколько не жаль потерять полностью, и начал учиться на свои кровные. Начал, как водится, с покрытых коллов. Потом перешел к голым путам. Кривая обучения выглядит классически: первые два месяца — уверенный, но небольшой плюс.
Несколько месяцев я торговал BRENT на MOEX с помощью собственного алгоритма и публиковал результаты под постами с названием «Рынок нефти и его переменные» .
Летом я занимался разработкой кода для перехода на международные площадки. На данный момент торговый робот подключается к рынкам через API брокера EXANTE. В своем телеграмм канале я публикую результаты торговых дней и показываю реальные брокерские отчеты.
На Smart-Lab меня долго ругали за то, что мой алгоритм не имеет бектеста. Как я могу доверять такому роботу и такой стратегии, если у нее нет даже элементарного бектеста? В декабре мы взяли паузу в торгах и написали бектест для торгового алгоритма и проверили стратегию на всех ключевых инструментах.
Бектест показал, что часть рабочих параметров необходимо подбирать индивидуально под каждый инструмент. Более того, параметры могут меняться после экспирации текущего контракта и перехода на новую серию фьючерса. Работа оказалась более сложной чем представлялось изначально. Тем не менее, за прошедшее время удалось научиться оптимизировать и работать с основными параметрами. В течение недели буду публиковать результаты бектестов и покажу, что получилось и чего ожидаю в будущем.
Есть и другие новости. Проект расширился: теперь мы также торгуем криптовалюты и пенни стоки.Невозможно было обойти стороной стремительный рост криптовалют. К проекту присоединился алгоритм, работающий с основными криптовалютными парами. Алгоритм работает круглосуточно, здесь будут появляться отчеты о его работе. На данный момент мы торгуем BTC и LTC на бирже Binance. В отличие от крупных бирж (CME/ICE), где минимальный депозит 10.000$, Binance позволяет работать с гораздо меньшими объемами денежных средств на счету. Для работы с криптовалютой мы решили использовать небольшую сумму, которой средний российский ритейл инвестор готов рискнуть на бирже. Проделав серии бектестов чтобы убедиться, что алгоритм и стратегия работает, мы запустились на 1400$ в конце января. Ниже, на картинке, вы можете увидеть результат работы алгоритма с 20 января по сегодняшний день: +60%. Период довольно короткий, однако, хорошие результаты бектестов позволяют считать, что дальше будет также — будем следить за этим здесь. Алгоритм торгует круглосуточно, работает полностью самостоятельно и не требует никакого участия инвестора.
Это самый популярный вопрос ко мне. Подписчики заходят в публичный портфель, доходность которого за год составляет около 100%, смотрят сделки и недоумевают: «Так он с апреля прошлого года ничего не покупал! Тоже мне инвестор».
Постараюсь объяснить. Вопрос лежит в плоскости управления капиталом. Покажу на простом примере.
Допустим, у вас есть портфель активов с простым соотношением:
Вы постоянно поддерживаете данную пропорцию, периодически проводите ребалансировку:
👉 Если один из активов сильно дешевеет, вы продаете часть другого актива, так как его доля выросла, и покупаете подешевевший актив.
👉 Если один из активов сильно дорожает, то вы его продаете, чтобы докупить второй актив, доля которого снизилась.
Я на некоторых своих публичных вебинарах и лекциях рассказывал об элементах в моем подходе при оценке компаний с помощью фундаментального анализа. А также на свое курсе ТРИ КИТА ИНВЕСТИЦИЙ я подробно рассказываю, и показываю в Excel, как и что считать и принимать решение об инвестициях. Для удобства, многие расчеты у меня автоматизированы на Matlab и Python.
Мои оценки эволюционировали со временем, но начинал я как и многие с тех подходов, которые изложены в таких книгах как «Инвестиционная оценка» Дамодорана, «Стоимость компании» Коупленда, Коллера, Муррина и, конечно, «Анализ ценных бумаг» Грэма и Додда. Но мне всегда не давал покоя, тот простой факт, что все подходы, изложенные в этих книгах, не позволяют численно измерить вероятность сделанных оценок. Она неявным образом зашивается в прогнозы темпов роста и в ставки дисконтирования, которые используются для получения справедливой стоимости.
Поэтому я немного модернизировал подход, и сейчас называю его механической оценкой фундаментальных факторов и/или показателей финансово-хозяйственной деятельности предприятия. Помогает мне в этом понимание фундаментальных основ роста компаний, а также знание методов теории вероятности и математической статистики.
Прочел новую книгу Михаила Зыгаря «Все свободны», кто не знает это автор двух классный книг «Вся кремлёвская рать» и «Империя должна умереть». Михаил мне близок по духу, мы одного возраста, журналист, в прошлом военный корреспондент и главный редактор телеканала «Дождь».
Все свободны – книга про время перевыборов Ельцина в 1996 года, кроме того, там много отсылок в прошлое и будущее. Кто читал Зыгаря раньше знает его интересный стиль изложения истории, он объясняет словно ты не знаешь ничего и читаешь про какую-то далёкую страну.
«Все свободны» можно поставить в один ряд с такими книгами, как:
1. Крестный отец Кремля Борис Березовский, или История разграбления России (2000, Пол Хлебников)
2. Красный циркуляр (2015, Билл Браудер)
3. Вся кремлевская рать (2015, Михаил Зыгарь)
И кстати, если вы не читали из них ни одной книги, то «Все свободны» лучше читать после книги Хлебникова, по хронологии отлично ложиться.
Сегодня опять про диверсификацию, а также о планах; и последние новости по портфелю.
В январе 2021 г.:
-покупал КуйбышевАзот ао.
-продал Варьёганнефтегаз ап.
Не совсем, как я планировал месяц назад в Разумный инвестор 2021, а точнее совсем не по плану. Но на то были объективные причины, рынок вырос достаточно бодро в январе выше 3300-3500 п. и я остановил покупки в принципе.
Однако КуйбышевАзот еще купил, так как заметил, что при росте цен на газ, капролактам и карбамид, а это важные товары для компании – акции не особо реагировали. Я покупал по 157-165 руб., и потом уже после разгона РДВ и сдувания взял еще по 162 руб.
Посмотрел, что пишет РДВ про КУАЗ, так всё правильно, актив дешевле аналогов, рост цен на газ ему на руку, а также рост цен на карбамид. Есть, правда, у них неточность: они не знают о квазиказначейском пакете акций, считая его собственностью руководства компании.
Акции покупают, чтобы заработать не только на росте цены, но и на выплате дивидендов. Мы попросили аналитиков назвать компании, которые за последние пять лет лидировали по дивидендным выплатам.
Согласно подсчётам «Открытие брокер», больше всего дивидендов в течение последних пяти лет заплатили восемь компаний. В их числе МТС, Северсталь, Норникель и ЛСР.
В 2015 году самый большой дивиденд в размере 22,7% от цены акции заплатил крупнейший производитель полиэтилена — компания Казаньоргсинтез. По итогам прошлого года наибольший дивиденд на уровне 13,9% заплатила по привилегированным акциям компания Татнефть. Это почти в два раза больше, чем можно было заработать на вкладах в крупных банках.
Не все компании выплатили дивиденды за 2020 год. Выплаты могут происходить до середины 2021 года. Поэтому данные за 2020 год в этой таблице мы не указали.