Избранное трейдера Mr_Goodwin
Привет, новая неделя – новый бэктест факторной стратегии. На этот раз не только на Мосбирже и не только в акциях. Первоначально тут планировался большой текст про взаимодействие Моментума, торгового оборота и волатильности на неликвидных рынках и последующий Шарп сильно за 2.
Но в последний момент решили выпускать стратегии по нарастанию их сложности. Сегодня речь не об «иксах», но об очень устойчивой штуке – получению доходности выше рыночной за длинный промежуток по разным классам активов без принятия рисков отдельных компаний или стран.
Традиционный график с результатом перед стеной текста:
Источник: Sentimetrica
Синяя линия – модификация Моментума на глобальных рынках, зеленая – индекс глобальных акций MSCI World, красная – равновзвешенный портфель из акций, казначейских векселей США и сырьевой корзины.
Из всех стратегий американских биржевых гуру – самыми полюбившимися для меня стали идеи получения ВСЕЙ рыночной доходности Джона Богла и CANSLIM Уильяма Онил. У фраз «Индекс в долгосроке всегда растет» и «Лучшие компании остаются лучшими» много общего, верно? Попробуем оформить объединенную стратегию на основе классиков.
— Складывает Value графиков GraphId1 и GraphId2
— При запуске на загрузке Quik'а работает код предыдущей загрузки
— с последними свойствами, полученными из кода или интерактивно.
— При запуске старые бары графика данных сканируются дважды,
— только если есть подключение к серверу.
— При смене тайм-фрейма старые бары сканируются только единожды.
— При загрузке Quik'а первый скан до подключения к серверу.
CandlesOK = true
Settings = { — После смены тайм-фрейма нужно интерактивное подтверждение
Name = "_Add"
,GraphId1 = «Tag-1» — Перезадать оба после первой загрузки.
,GraphId2 = «Tag-2» — Сохраняются при последующих запусках.
,Factor1 = 1 — Для GraphId1
,Factor2 = 1 — Для GraphId2
,Base1 = 0 — Для GraphId1
,Base2 = 0 — Для GraphId2
,Value = «close»
,line = { — Исчезает прогррамный доступ после 1-го интерактивного изменения
{Name = «close»
,Color = RGB(255,255,0) — Жёлтый
,Type = TYPE_HISTOGRAM — POINT, LINE, DASH, DOT, HISTOGRAM,
,Width = 2} — TRIANGLE_UP, TRIANGLE_DOWN.
}
}
function Init()
local s = «Indicator _Add:»
if 0 == getNumCandles (Settings.GraphId1) then
CandlesOK = false
s = s .."\n invalid GraphId1"
end
if 0 == getNumCandles (Settings.GraphId2) then
CandlesOK = false
s = s .."\n invalid GraphId2"
end
if not CandlesOK then message (s) end
return #Settings.line
end — Init()
function OnCalculate (index)
if index == 1 then
CandlesOK = true
if 0 == getNumCandles (Settings.GraphId1) or
0 == getNumCandles (Settings.GraphId2) then
CandlesOK = false
end
--[[message («Settings.Value »… tostring (Settings.Value)
.."\nSettings.line "… tostring (Settings.line)
.."\nCandlesOK "… tostring (CandlesOK))--]]
if Settings.Value ~= «open» and Settings.Value ~= «high» and
Settings.Value ~= «low» and Settings.Value ~= «close» then
Settings.Value = «close»
message («Indicator _Add: Value must be open/high/low/close»)
end
end
if not CandlesOK then return nil end
local candle1 = (getCandlesByIndex (Settings.GraphId1, 0, index-1, 1))[0]
local candle2 = (getCandlesByIndex (Settings.GraphId2, 0, index-1, 1))[0]
local val1 = candle1[Settings.Value]
local val2 = candle2[Settings.Value]
— Результат return res == 0 and nil or res всегда 0 при res == 0
if val1 == 0 or val2 == 0 then return nil end
return (val1 + Settings.Base1) * Settings.Factor1
+ (val2 + Settings.Base2) * Settings.Factor2
end — OnCalculate()
Итак, продолжим тему, которая не оставила равнодушными многих.
Начало здесь: https://smart-lab.ru/blog/612585.php
После первого поста этой серии выяснилось, что на Смарте много людей читающих. Да, еще и качественной фантастикой не пренебрегающих. Это явилось для меня приятным сюрпризом. Все-таки Смарт-лаб, это своеобразный срез общества. Думающая элита, так сказать!)))
По совету многих, ознакомился с Лю Цысинем, который мне раньше не попадался (китаец все-таки). Ну, несколько не допонял я, откуда столько восторгов. Но мои пристрастия тоже ведь не всем ясны. Это нормально.
Некоторые в прошлый раз поблагодарили за малоизвестный «Таганай» в подборке.
Так, оказывается я не один такой, кому он вдруг приглянулся до глубины души! Вчера мне Опера выдала квадратики Дзена, в одном из них разбирают, ни много ни мало, «молодых звезд российской мистики». Вот оно че, оказывается!
Начинающие (да и не только) инвесторы часто задаются вопросом о том, как отобрать для себя идеальное соотношение активов входящих в портфель. Часто (или не очень, но знаю про двух точно) у некоторых брокеров эту функцию выполняет торговый робот. Но заложенные в них алгоритмы не раскрываются.
В этом посте будет рассмотрено то, как оптимизировать портфель при помощи 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')
Главный и самый полезный сайт www.smart-lab.ru
Сайты фильтрующие буржуйские бумаги (скринеры):
www.trade-ideas.com/StockInfo/_ScreenerConfig.html Мегакрутой бесплатный скринер (end of day) с тьмой параметров
smartapple.biz/Screener Бесплатный и всегда работающий скринер на базе investortech, нужна регистрация
www.vr.mixaro.ru/ позволяет одновременно смотреть 2 графика для 1 тикера
www.freestockcharts.com мегакрутой сайт с котировками он-лайн, с объёмами и кучей инструментов
mfd.ru/calendar/- статистика
Статьи, книги, уроки, наработки
Большой список, Список 1, 2
«МакМиллан об опционах» МакМиллан Л.Д.
«Фьючерсы и опционы» А.Н.Балабушкин James Dalton
«Mind Over Markets» Mark Douglas
«Trading in the zone» Технология трейдинга (Евгений, pratrader.livejournal.com)
Популярные рабочие торговые стратегии, методики и тактики
Опционы и фьючерсы. Видеоуроки на iLearney.ru
Искусство чтения СОТ
Журнал трейдера Силантьева, Резвякова
Софт, независимый от брокера:
MultiCharts с адаптером к Квику (и его коммент-оценка)
Грааль №3. Три индейца. После некоторого тренда три последовательно
восходящие вершины образуются на одной линии. Это лучший признак
истощения тренда. Ждем первую же полновесную импульсную свечу в
обратном направлении и открываем сделку. Стоп за границей последней
вершины или еще лучше за границей импульсной свечи
Трейдера на рынке базового актива интересует главным образом возможное направление изменения цены этого актива. Для опционного трейдера оно также имеет большое значение, но он должен учитывать и то, как быстро может измениться эта цена. Если фьючерсный и опционный трейдеры займут длинные рыночные позиции в соответствующих инструментах, а цена действительно повысится, то первый гарантированно получит прибыль, а второй может понести убытки. Если цена будет расти недостаточно быстро, то ее изменения в благоприятном направлении может не хватить для компенсации снижения временной стоимости опциона. Это основная и наиболее типичная причина, по которой спекулянты несут убытки на рынках опционов. Обычно спекулянт покупает опционы из-за кажущегося благоприятным соотношения риска и возможной прибыли (ограниченный риск/неограниченная прибыль), но ему нужно угадать не только направление изменения цены, но и скорость этого изменения. Только при правильном предугадывании двух факторов он может рассчитывать на прибыль. Однако, правильно угадать одно только направление изменения цены непросто, а правильно предсказать и направление, и темп изменения цены большинству трейдеров и вовсе не под силу.
Темп изменения цены имеет в опционной торговле огромное значение. Существует множество опционных стратегий, основанных на прогнозировании только темпа изменения цены базового контракта. Если трейдер хорошо предсказывает лишь направление изменения цены базового контракта, то ему, возможно, и следует работать на рынке базовых активов и не лезть в опционы. Успешно работать на рынке опционов может только тот, кто обладает своего рода «чувством» темпа изменения цены.