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

--переменные
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. Если что-то непонятно по скринам и работе программы – спрашивайте, единственное примечание для ориентирования – красный шарик на профиле в Воркшопе это текущее значение БА.
В книге Лебо Ч. Лукас Д.В. — «Компьютерный анализ фьючерсных рынков» авторы пишут, что стратегия с вероятностью выигрыша 0.4 и отношением среднего выигрыша к среднему проигрышу 2:1 дает статистическую вероятность слить депо близкую к нулю. Так ли это? На графике ниже результаты симуляции по этим данным.

Если вы торгуете фьючерсами и у вас сделок в год несколько тысяч, то – возможно. Если в год 50 сделок, то, судя по графику, флэт может длиться 4 года. В случае акций вход-выход может составить 0.2% (или около того). Результат транзакций: 50х0.2=10% (в год), умножаем на 4 года – результат: -40%. «Ничего не делал – только зашел».
Что можно сделать? Только увеличивать количество разных стратегий. До какого минимального количества? Ниже дан график средних по трем разным стратегиям (оранжевая – теоретическая кривая). Число реализаций ограничил пятью, чтобы не загромождать.

Уже давно установлено, что мы используем наш мозг примерно на 10 %.
Прихожу я сегодня такая классная в Сбербанк, а там милая барышня так воодушевленно мне:
— Давайте мы Вам защиту от мошенников подключим? На все счета, все карты, вообще на все, устанавливается на год, стоит 1 161 руб. в год. Давайте? Отличная штука!
Пауза. Она улыбчиво и пристально на меня смотрит, с нетерпением ожидая положительный ответ. В связи с нынешней неповоротливостью моей шеи у меня поднялась только бровь, и все мое недоумение вдруг оказалось на моем лице. Закипание началось, но физическая ограниченность сдерживала эмоциональный напор:
— То есть Вы, как банк, не в состоянии в рамках своей обычной хозяйственной, лицензируемой деятельности и в соответствии с требованиями, предъявляемыми к банкам, обеспечить безопасность моих денег, операций и предлагаете мне эту безопасность за 1 161 руб. в год?
А она улыбается и продолжает:
— Ну, это же мошеннические действия, мы-то здесь причём? Мы только операции проводим по счётам, а от мошенников Вы сами должны защищаться.

Как, по вашему мнению, лучше затаривать баксы человеку, который живет в РФ, тратит в рублях, сами баксы, кроме как в инвестиционных целях, не нужны.
Таким образом, его интересуют не сами доллары, а курсовая разница на момент продажи.
Допустим, для расчета на 100к рублей.
Два варианта для «купили и сидим»:
1) Покупается 1 лот (1000) долларов TOD = 65560 рублей. Оставшиеся 34440 кладутся в ОФЗ, FXMM, или тому подобный (теоретически) неувядающий актив. Сидим, ждем у моря погоды.
2) Покупается 1 контракт на фьючерс USDRUB (ГО = ~ 4500). Оставшиеся 95500 кладутся туда же (ОФЗ/FXMM).
Плюсы второго варианта: мы получаем ту же разницу курса, но (вроде) дешевле.
Минусы второго варианта: мы теряем контанго (хотя это будет компенсировано доходностью ОФЗ/FXMM) и у нас есть, в случае долгосрочной покупки, необходимость раз в три месяца перекладывать фьючерс. Минус комиссия за покупку/продажу ОФЗ/FXMM и комиссия депозитария.
Как, по-вашему, какой способ предпочтительнее?