Избранное трейдера Vitastic
Рисковые инвесторы, которые умеют предсказывать поведение рынка, предпочитают волатильные акции с большими β>1. Но для большинства не слишком профессиональных инвесторов удобнее активы с β~0, так как из них легко собрать так называемый бета-нейтральный портфель, способный давать стабильный постоянный прирост порядка 10% годовых, не реагируя на кризисы.
В этом обзоре мы расскажем об американских акциях с малыми β. Причём таких, которые не просто независимы от рынка, но и показывают стабильный многолетний рост котировок. Мы расскажем об акциях, которые сильнее всего подорожали за 10 лет при соблюдении следующих дополнительных условий.
Это третья часть моего описания направленной торговли опционами, посвященная управлению позицией, и рекомендуемая к прочтению после предыдущей части, а также первой части.
Лучшее управление позицией – это заключать только прибыльные сделки, и не делать убыточных. Я серьезно. И так и пытаюсь действовать.
В смысле при закрытии позиции (отдельной леги или всей комбинации) я стараюсь, чтобы каждая сделка была в плюс. Согласитесь, что тогда и в целом у меня будет прибыльная торговля, если каждая сделка будет в плюс! :-)
Но это все же не управление позицией, а закрытие сделок. Вопрос в том, как подвести все наши опционы к прибыли.
Управление позицией – это то, чего не бывает c акциями. Что ты будешь делать, если ты купил акцию и играешь на её повышение, а цена упала? Закрывать или усредняться, больше ничего. Если усредняться, так это по сути не управление позицией, а открытие новой сделки по тому же тикеру, с новой ценой. Ведь на риски и профит по ранее открытой позиции ты никак не повлиял, вместо этого ты открыл новую сделку по тому же тикеру. И еще непонятно, хорошо это или плохо. А важно, что это действие потребовало добавления капитала, т.е. начиная с определенного момента падения и оно станет недоступным, с точки зрения риск-менеджмента. Итого ты фактически можешь только закрыть позицию – признать убыток, и ничего больше. Или тебе надо для работы с акциями делать что-то фьючем или опционами, в общем опять же приходим к опционам.
В первую очередь, следить собираюсь, если рынок пойдет на 1500-1600 по широкому индексу ММВБ, за ГМК Норникель, ВСМПО Ависма, Росагро, Фосагро, Мосбиржа, ЛСР. Кроме того, Газпром, Роснефть, Мечел пр., ФСК, Русал, Ленэнерго пр. присутствуют в моем портфеле в заметных количествах, так что тоже приглядывать буду волей-неволей. Если цены будут существенно ниже текущих – я буду добирать акции этих списков, вероятно.
PORTFOLIO_EX BRENT_RUB; DESCRIPTION Нефть в рублях; CLIENTS_LIST ALL_CLIENTS; FIRMS_LIST ALL_FIRMS; PROGRAM ' =========Пользовательские настройки============= INSTRUMENT_BRENT="BRK7" ' код инструмента BRENT INSTRUMENT_USDRUB="USD000UTSTOM" ' код инструмента USDRUB_TOM CLASSCODE_FUT="SPBFUT" ' код группы CLASSCODE_ETC="CETS" ' код группы PriceBrent = 0 + GET_PARAM(CLASSCODE_FUT,INSTRUMENT_BRENT, "OFFER") PriceUSDRUB = 0 + GET_PARAM(CLASSCODE_ETC,INSTRUMENT_USDRUB, "OFFER") BRENT_RUB=PriceBrent*PriceUSDRUB ' ===============СЕРВЕРНЫЕ ДАТА И ВРЕМЯ=============== SERVERDATE=GET_INFO_PARAM("TRADEDATE") ' дата сервера в формате DD.MM.YYYY SERVERTIME=GET_INFO_PARAM("SERVERTIME") ' время сервера в формате HH:MM:SS DATETIME(SERVERDATE,SERVERTIME) ' вызов функции даты-времени ' ===============ДАННЫЕ В ТАБЛИЦУ=============== OUTPUT_BRENT=CREATE_MAP() OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"BRENT_RUB" , BRENT_RUB) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"SERVERTIME" , SERVERTIME) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"SERVERDATE" , SERVERDATE) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"INSTRUMENT" , INSTRUMENT_BRENT) DELETE_ALL_ITEMS() ADD_ITEM(1,OUTPUT_BRENT) ' ===============ФУНКЦИИ=============== ' ФУНКЦИЯ СЕРВЕРНЫХ ДАТЫ И ВРЕМЕНИ FUNC DATETIME(FSERVERDATE,FSERVERTIME) CURYEAR=SUBSTR(FSERVERDATE,6,4) ' текущий год в текстовом формате CURMONTH=SUBSTR(FSERVERDATE,3,2) ' текущий месяц в текстовом формате CURDAY=SUBSTR(FSERVERDATE,0,2) ' текущий день в текстовом формате CURDATE=CURYEAR & CURMONTH & CURDAY ' дата в текстовом формате CURHOUR=SUBSTR(FSERVERTIME,0,2) ' текущие часы в текстовом формате CURMIN=SUBSTR(FSERVERTIME,3,2) ' текущие минуты в текстовом формате CURSEC=SUBSTR(FSERVERTIME,6,2) ' текущие секунды в текстовом формате CURTIME=CURHOUR & CURMIN & CURSEC ' время в текстовом формате END FUNC END_PROGRAM PARAMETER SERVERDATE; PARAMETER_TITLE Дата; PARAMETER_DESCRIPTION Дата; PARAMETER_TYPE STRING(10); END PARAMETER SERVERTIME; PARAMETER_TITLE Время; PARAMETER_DESCRIPTION Время; PARAMETER_TYPE STRING(10); END PARAMETER BRENT_RUB; PARAMETER_TITLE Нефть (руб.); PARAMETER_DESCRIPTION Нефть (руб.); PARAMETER_TYPE STRING(10); END END_PORTFOLIO_EXссылка на скрипт
Жизненные двустишья (пожалуй надо выучить)
Не надо делать мне как лучше,
оставьте мне как хорошо
*
я не хотела вас обидеть,
случайно просто повезло
*
поскольку времени немного,
я вкратце матом объясню
*
башка сегодня отключилась,
не вся, конечно, — есть могу
*
следить стараюсь за фигурой,
чуть отвлекусь — она жуёт
*
шаман за скверную погоду
недавно в бубен получил
*
всё вроде с виду в шоколаде,
но если внюхаться — то нет
*
обидеть Таню может каждый,
не каждый может убежать
*
ищу приличную работу,
но чтоб не связана с трудом
*
мои намеренья прекрасны,
пойдёмте, тут недалеко
*
я за тебя переживаю —
вдруг у тебя всё хорошо
*
держи вот этот подорожник —
щас врежу, сразу приложи
*
я понимаю что вам нечем,
но всё ж попробуйте понять
*
о, приключеньями запахло,
спускаю [***] с поводка
*
мы были б идеальной парой,
конечно, если бы не ты
*
как говорится, всё проходит,
но может кое что застрять
*
кого хочу я осчастливить,
тому уже спасенья нет
*
а ты готовить-то умеешь?
— я вкусно режу колбасу
*
звони почаще — мне приятно
на твой «пропущенный» смотреть
*
зачем учить нас, как работать,
вы научитесь, как платить
*
характер у меня тяжёлый,
всё потому, что золотой
*
чтоб дело мастера боялось,
он знает много страшных слов
*
вы мне хотели жизнь испортить?
спасибо, справилась сама
*
её сбил конь средь изб горящих,
она нерусскою была
*
когда все крысы убежали,
корабль перестал тонуть
*
дела идут пока отлично,
поскольку к ним не приступал
*
работаю довольно редко,
а недовольно каждый день
*
была такою страшной сказка,
что дети вышли покурить
*
когда на планы денег нету,
они становятся мечтой
*
женат два раза неудачно —
одна ушла, вторая – нет
*
есть всё же разум во вселенной,
раз не выходит на контакт
*
уж вроде ноги на исходе,
а юбка всё не началась
*
я попросил бы вас остаться,
но вы ж останетесь, боюсь
*
для женщин нет такой проблемы,
которой им бы не создать
*
Олегу не везёт настолько,
что даже лифт идёт в депо
*
меня запомните весёлым,
а завтра я начну ремонт
*
зевну, укроюсь с головою,
будильник заведу на март
*
мы называем это жизнью,
а это просто список дел
*
всё то, что нас не убивает,
богаче делает врачей
*
и жили счастливо и долго...
он долго, счастливо она
*
я не туплю, а экономно
расходую потенциал
*
мне психиатр сказал: присядьте,
щас успокоюсь и начнём
*
в народ ходили депутаты
лишь только по большой нужде
*
сержант почти поймал бандита,
но тот по званью выше был
*
в постели ты великолепен,
все две минуты просто бог
*
пришла ко мне сестра таланта,
но не достала до звонка
*
я ненавижу власть и деньги,
когда они в чужих руках
*
Олег весь день крутил баранку,
потом не выдержал и съел… ok.ru/video/271020656072
Лениво бродив по западному интернету, нашел интересную стратегию, которая своими корнями уходит к некоему Larry Connors. Стратегия построена на простом RSI с периодом 2.
Суть ее в следующем:
покупаем индексный ETF, когда значение меньше 15 на закрытии дня (да, это можно сделать без проблем и проскальзываний на всех ликвидных ETF) и продаем, когда клоуз текущего дня выше хая предыдущего (можете придумать свои выходы, стратегия не очень-то чувствительна к выходам).
В общем MR в чистом виде. И в принципе это должно работать на большинстве ETF развитых рынков.
Тестил на Multicharts.Net, код ниже.
using System; using System.Drawing; using System.Linq; using PowerLanguage.Function; using ATCenterProxy.interop; namespace PowerLanguage.Strategy { public class rsi_2_spy : SignalObject { public rsi_2_spy(object _ctx):base(_ctx){} private IOrderMarket buy_order; private IOrderMarket sell_order; private RSI m_RSI; private VariableSeries<Double> m_myrsi; private ISeries<double> Price { get; set; } protected override void Create() { // create variable objects, function objects, order objects etc. buy_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy)); sell_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell)); m_RSI = new RSI(this); m_myrsi = new VariableSeries<Double>(this); } protected override void StartCalc() { // assign inputs Price = Bars.Close; m_RSI.price = Price; m_RSI.length = 2; } protected override void CalcBar(){ // strategy logic m_myrsi.Value = m_RSI[0]; if (Bars.Close[0]>Bars.High[1]){ sell_order.Send(); return; } if (m_RSI[0]<15){ buy_order.Send(); } } } }
Индикатор ATR (Average True Range) показывает среднюю величину изменения цены внутри дня за указанный период. Отлично подходит для выбора уровней стопов. Также индикатор показывает рост волатильности в активе, когда сохраняет высокие значения.
Работаем на Quantopian (см. сюда), код пишем на Python. Проверяем стратегии: