Избранное трейдера Dmitryy
Весь сентябрь у меня был очень активным — отпуск, переезд на новое место и еще много чего, так что я немного выпал из процесса. Хорошая новость, за это время портфель FinanceMarker неплохо подрос и отыграл все прошлые падения на плохих новостях. Тем не менее, сейчас по-прежнему актуальная тема покупки облигаций ОФЗ. Ранее я уже писал первую статью с обзором интересных вариантов.
Теперь же спешу сообщить, что сегодня я совершил первую покупку — как раз на брокерском счету оставалась небольшая сумма денег, которую и удалось пристроить.
Пока я купил ОФЗ 224 выпуска (ОФЗ 26224) — потому что в первый раз, когда делал обзор, здесь была наибольшая доходность. Возможный минус в том, что срок погашения аж в 2029 году, а значит дюрация у облигации высокая. Учитывая, что нет совершенно никакого понимания, куда пойдет ставка — это повышенный риск.
--переменные keyRateCB = 7.5 classCode = "TQOB" function CreateTable() t_id = AllocTable() AddColumn(t_id, 0, "Бумага", true, QTABLE_STRING_TYPE, 15) AddColumn(t_id, 1, "Цена", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 2, "Доходность, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 3, "Дюрация, лет", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 4, "Купон, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 5, "Премия к ЦБ, бп", true, QTABLE_INT_TYPE, 15) AddColumn(t_id, 6, "Погашение", true, QTABLE_STRING_TYPE, 15) t = CreateWindow(t_id) SetWindowCaption(t_id, "ОФЗ") end function string.split(str, sep) local fields = {} str:gsub(string.format("([^%s]+)", sep), function(f_c) fields[#fields + 1] = f_c end) return fields end function getParamNumber(code, param) return tonumber(getParamEx(classCode, code, param).param_value) end function formatData(prm) return string.format("%02d.%02d.%04d", prm%100, (prm%10000)/100, prm/10000) end CreateTable() arr = {} sec_list = getClassSecurities(classCode) sec_listTable = string.split(sec_list, ',') j = 0 for i = 1, #sec_listTable do secCode = sec_listTable[i] securityInfo = getSecurityInfo(classCode, secCode) short_name = securityInfo.short_name if short_name:find("ОФЗ 26") ~= nil then j = j + 1 r = {} r["short_name"] = short_name r["price"] = getParamNumber(securityInfo.code, "PREVPRICE") r["yield"] = getParamNumber(securityInfo.code, "YIELD") r["duration"] = getParamNumber(securityInfo.code, "DURATION")/365 couponvalue = getParamNumber(securityInfo.code, "COUPONVALUE") couponperiod = getParamNumber(securityInfo.code, "COUPONPERIOD") r["coupon"] = ((365/couponperiod) * couponvalue)/10 r["bonus"] = (r["yield"] - keyRateCB)*100 r["mat_date"] = getParamNumber(securityInfo.code, "MAT_DATE") table.insert(arr, j, r) end end table.sort(arr, function(a,b) return a["duration"] < b["duration"] end) for j = 1, #arr do row = InsertRow(t_id, -1) SetCell(t_id, row, 0, arr[j]["short_name"]) price = arr[j]["price"] SetCell(t_id, row, 1, string.format("%.2f", price), price) yield = arr[j]["yield"] SetCell(t_id, row, 2, string.format("%.2f", yield), yield) duration = arr[j]["duration"] SetCell(t_id, row, 3, string.format("%.2f", duration), duration) coupon = arr[j]["coupon"] SetCell(t_id, row, 4, string.format("%.2f", coupon), coupon) bonus = arr[j]["bonus"] SetCell(t_id, row, 5, string.format("%.0f", bonus), bonus) mat_date = arr[j]["mat_date"] SetCell(t_id, row, 6, formatData(mat_date), mat_date) end
Коллеги, всем добра! Напоминаю, нами проводился мини-конкурс «Мозговой штурм», ссылка на исходник: https://smart-lab.ru/blog/499050.php. Целью конкурса было показать, каким же заковыристым может стать профиль опционных позиций в результате управления в течение торгового периода. Ну и доказать, что трейдер, разбирающийся в опционной торговле, в состоянии решить обратную задачу и восстановить начальный профиль позиции при практически минимальных исходных данных, просто просчитывая логику действий. Напоминаю, что победителем конкурса стал камрад Олег Ложкин, который и добавил в свою смартлабовскую копилку честно заработанные 520 ТМ. Ну, и как обещал – выкладываю всю раскладку по трансформации изначального профиля в конкурсный и его дальнейшее управление с выходом на месячную экспирацию, с традиционной выкладкой скринов окошек используемого ПО для лучшей визуализации. Для торговли, моделирования и визуализации использовался классический Квик в связке с лицензионной программой Option Workshop. Если что-то непонятно по скринам и работе программы – спрашивайте, единственное примечание для ориентирования – красный шарик на профиле в Воркшопе это текущее значение БА.
Попалась мне как-то в Forbes такая статья: 6 Expert Investment Portfolios You Can Implement Today. Дословно ее можно перевести как «6 инвестиционных портфелей от экспертов, которые вы можете воплотить сегодня». Звучит неплохо. Однако после прочтения мне стало понятно, что воплотить эти портфели не так-то легко. И вот, почему.
1 | BIN-19 | XS1379311761 |
2 | Sistema-19 | XS0783242877 |
3 | TMK-20 | XS0911599701 |
Добрый день.
Долго думал, описывать ли свои защитные действия. Решил, так как портфель публичный, то и все позиции должны быть описаны.
Последние сделки перед падением я сделал 5 октября, в пятницу https://smart-lab.ru/blog/497939.php .
8 октября, в понедельник, мой портфель был из 12 проданных и 8 купленных путов.
Т.к. я продаю каждую неделю месячный контракт, то примерно у меня портфель состоит из 4 позиций (примерно 4 недели в месяце).
10 октября, в среду, при сильном обвале, я откупил последнюю и предпоследнюю недели в профит.
Портфель стал выглядеть так, 6 проданных, 8 купленных контрактов.
11 октября, в четверг, утром (1:30 по МСК), я каждые два контракта роллировал в один, уходя на две недели вперед.
Портфель стал выглядеть так, 3 проданных, 8 купленных контрактов.