Избранное трейдера П М
Все таки локальный случай с экспирацией подсвечивает более явные системные сбои во всей российской биржевой инфраструктуре. Пару дней назад Московская биржа проводила вебинар на день акционера, и он показателен тем, насколько далеко Мосбиржа зашла в своей некомпетентности и как глубоко запуталась в показаниях. Все это похоже либо на запредельный уровень троллинга (причем довольно таки циничного), либо на парадоксальную невменяемость.
В последние дни только ленивый не говорил (и не писал) про отрицательную стоимость WTI. Добавлю и я свои 5 лонгридовских копеек (спасибо бессоннице и бокалу красного испанского вина… забегая вперед оговорюсь, что одним бокалом не обошлось. Пришлось добавлять аргентинского… так что прошу сразу меня извинить за вероятные ошибки, неточности и нестройность, а возможно и нелогичность мысли).
Сразу оговорюсь, что наблюдать за динамикой нефти (как brent, так и wti) находясь в позиции и без позиций для меня совершенно разные по эмоциональному окрасу вещи (определенно безопаснее находится в такие дни на заборе).
Я сам в основном пытался торговать нефть (оба сорта) от лонга (были конечно и входы в шорт, но не самые удачные; волатильность зашкаливала… стопы быстро срабатывали… одним словом очередная рыночная аномалия (если не сказать больше — вакханалия), приведшая к огромным прибылям и убыткам у биржевых акторов), в расчете на отскок на словесных интервенциях от ОПЕК+ (количество плюсов можно добавлять по желанию), Трампа и прочих участников нефтяного рынка. 20.04.2020 как и многие другие частные трейдеры (судя по данным Мосбиржи) ваш покорный слуга был в лонгах по wti, но во время (как потом выяснилось) закрыл убыточные позиции. Слава Всевышнему!
--[[ индикатор: канал на последнем зигзаге индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала параметры: Procent - величина зигзага в % k - коэффизиент ширины канала Ext - =0-канал стоится по средним =1-канал стоится по экстремуму --]] Settings= { Name = "Zigzag_channel_inc", -- название индикатора Procent=5, -- величина зигзага в % k=2, -- коэффизиент ширины канала Ext=1, -- =0-канал стоится по средним =1-канал стоится по экстремуму shif=0, line= { { Name = "zigzagline", Type =TYPE_LINE, Width = 1, Color = RGB(120,90, 140) }, { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 2, Color = RGB(0,200, 200) }, { Name = "cur3", Type =TYPE_LINE, Width = 2, Color = RGB(200,200, 0) }, { Name = "cur4", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur5", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) }, { Name = "cur6", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur7", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur8", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur9", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur10", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur11", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 0) }, { Name = "cur12", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 0) } } } function Init() y1 = nil y2 = nil y3 = nil y4 = nil x1 = 1 x2 = 1 x3 = 1 x4 = 1 oldindex = 1 a_01 = 0 b_01 = 0 a_02 = 0 b_02 = 0 vminus_01 = 0 vplus_01 = 0 vminus_02 = 0 vplus_02 = 0 vFrom_01 = 1 vTo_01 = 1 vFrom_02 = 1 vTo_02 = 1 vminus = 0 vplus = 0 vminus_n = 0 vplus_n = 0 ret = 0 last_ind = 1 v1=nil v2=nil v3=nil v4=nil v5=nil v6=nil v7=nil v8=nil v9=nil v10=nil v11=nil v12=nil v13=nil return 13 end function recalcline(num, index, rec) if index == Size()-sh and rec == 0 then for i = 1, index do if m == 1 then SetValue(i, 3, nil) SetValue(i, 4, nil) end if m == 2 then SetValue(i, 6, nil) SetValue(i, 7, nil) end end end if index == Size()-sh or rec == 1 then if num == 1 then vFrom = 0 --[[ --]] vTo = 0 if x3 < x2 then vFrom = x3 vTo = x2 else vFrom = x2 vTo = x3 end end if num == 2 then vFrom = 0 vTo = 0 if x1 < x2 then vFrom = x1 vTo = x2 else vFrom = x2 vTo = x1 end end if vFrom < 1 then vFrom = 1 end a1 = 0 a2 = 0 a3 = 0 a4 = 0 n = 0 a = 0 b = 0 for i = vFrom, vTo do n=n+1 a1 = a1+i*C(i) a2 = a2+i a3 = a3+C(i) a4 = a4+i*i end if((n*a4 - a2*a2) ~= 0) then -- if oldindex ~= Size() then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n vminus = 0 vplus = 0 vminus_n = 0 vplus_n = 0 for i = vFrom, index do y = a*i + b if C(i) < y and i <= vTo then if ex == 0 then vminus = vminus + y - C(i) vminus_n = vminus_n + 1 else if i == vFrom then vminus = 0 end if y-C(i) > vminus then vminus = y-C(i) end end end if C(i) > y and i <= vTo then if ex == 0 then vplus = vplus + C(i) - y vplus_n = vplus_n + 1 else if i == vFrom then vplus = 0 end if C(i)-y > vplus then vplus = C(i)-y end end end m = 0 if C(vTo) > C(vFrom) and y < C(vTo)+0.1*(C(vTo)-C(vFrom)) and y > C(vFrom)-0.1*(C(vTo)-C(vFrom)) then m = 1 end if C(vTo) < C(vFrom) and y < C(vFrom)+0.1*(C(vFrom)-C(vTo)) and y > C(vTo)-0.1*(C(vFrom)-C(vTo)) then m = 1 end if m == 1 then --SetValue(i, 2, y) end end --end if ex == 0 then if vminus_n ~= 0 then vminus = kk*vminus/vminus_n end if vplus_n ~= 0 then vplus = kk*vplus/vplus_n end end end if num == 1 then a_01 = a b_01 = b vminus_01 = vminus vplus_01 = vplus vFrom_01 = vFrom vTo_01 = vTo end if num == 2 then a_02 = a b_02 = b vminus_02 = vminus vplus_02 = vplus vFrom_02 = vFrom vTo_02 = vTo end return 1 end return 0 end function levels(x, y, num, index, rec) if y ~= nil and x ~= 1 and (index ==Size() or rec==1) then for i = 1, index do if i >= x then SetValue(i, num, y) else SetValue(i, num, nil) end end end end function inclevels(x_1, y_1, x_2, y_2, y_3, index, num, rec) if y_2 ~= nil and x_2 ~= 1 and (index ==Size() or rec==1) then need = 1 for i = x_2+1, x_1-1 do y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1) if (y_1 < y_3 and C(i) < y ) or (y_1 > y_3 and C(i) > y ) then need = 0 break end end --need = 1 if need == 1 then for i = x_2, index do y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1) if i >= x_2 then if i > x_1 and (C(Size())*1.3 < y or C(Size())*0.7 > y) then SetValue(i, num, nil) else SetValue(i, num, y) end else SetValue(i, num, nil) end end end end end function OnCalculate(index) de = Settings.Procent kk = Settings.k ex = Settings.Ext sh = Settings.shif v1=nil v2=nil v3=nil v4=nil v5=nil v6=nil v7=nil v8=nil v9=nil v10=nil v11=nil v12=nil if index > Size()-sh then --return nil, nil, nil, nil, nil, nil, nil return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 , v12, v13 end vl = C(index) if index == 1 then y1 = vl y2 = vl else if C(index) > y1*(1+de/100) and y1 < y2 then x4 = x3 x3 = x2 x2 = x1 y4 = y3 y3 = y2 y2 = y1 x1 = index y1 = C(index) ret = recalcline(1, index, 0) ret = recalcline(2, index, 0) levels(x1, y1, 8, index, 0) levels(x2, y2, 9, index, 0) levels(x3, y3, 10, index, 0) levels(x4, y4, 11, index, 0) inclevels(x1, y1, x3, y3, y2, index, 12, 0) inclevels(x2, y2, x4, y4, y3, index, 13, 0) end if C(index) > y1 and C(index) > y2 then x1 = index y1 = C(index) end if C(index) < y1*(1-de/100) and y1 > y2 then x4 = x3 x3 = x2 x2 = x1 y4 = y3 y3 = y2 y2 = y1 x1 = index y1 = C(index) ret = recalcline(1, index, 0) ret = recalcline(2, index, 0) levels(x1, y1, 8, index, 0) levels(x2, y2, 9, index, 0) levels(x3, y3, 10, index, 0) levels(x4, y4, 11, index, 0) inclevels(x1, y1, x3, y3, y2, index, 12, 0) inclevels(x2, y2, x4, y4, y3, index, 13, 0) end if C(index) < y1 and C(index) < y2 then x1 = index y1 = C(index) end end --[[ if x1 ~= index then curfrom = x1 curto = index else curfrom = x2 curto = x1 end if curto ~= curfrom and curfrom ~= nil and curto ~= nil then if C(curto) ~= nil and C(curfrom) ~= nil then k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, index do curv = i*k + C(curto) - curto*k SetValue(i, 1, curv) end end end --]] if index == Size()-sh and ret == 0 then ret = recalcline(1, index, 1) ret = recalcline(2, index, 1) levels(x1, y1, 8, index, 1) levels(x2, y2, 9, index, 1) levels(x3, y3, 10, index, 1) levels(x4, y4, 11, index, 1) inclevels(x1, y1, x3, y3, y2, index, 12, 1) inclevels(x2, y2, x4, y4, y3, index, 13, 1) end if index == Size()-sh then --- and index ~= last_ind if vTo_01 - vFrom_01 > 500 then vFrom_01 = vTo_01-500 end for i = vFrom_01, index do y = a_01*i + b_01 + vplus_01 m = 0 if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then m = 1 end if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then m = 1 end if m == 1 then SetValue(i, 3, y) if i == index then v3 = y end end y = a_01*i + b_01 - vminus_01 m = 0 if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then m = 1 end if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then m = 1 end if m == 1 then SetValue(i, 4, y) if i == index then v4 = y end end end if vTo_02 - vFrom_02 > 500 then vFrom_02 = vTo_02-500 end for i = vFrom_02, index do y = a_02*i + b_02 + vplus_02 m = 0 if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then m = 1 end if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then m = 1 end if m == 1 then SetValue(i, 6, y) if i == index then v6 = y end end y = a_02*i + b_02 - vminus_02 m = 0 if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then m = 1 end if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then m = 1 end if m == 1 then SetValue(i, 7, y) if i == index then v7 = y end end end last_ind = index end return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 , v12, v13 end
Я своими глазами наблюдал уже два кризиса. 2008 и 2014-ый.
В 2008 году я оказался просто не готов к обвалу. Только начал осваивать инвестирование. Сбережения были ничтожно малы. Помню как сидел с друзьями в кафе и говорил им, что новые кризисы буду обязательно встречать с горой кеша. Следующая “остановка” через 10 лет.
ОПРЕДЕЛЕНИЕ И ЕГО СМЫСЛ
Разные источники предлагают различные толкования дюрации. Остановимся на более общем определении. Оно звучит следующим образом.
Дюрация (Макколея)– это оценка средней срочности потока с учетом дисконтирования стоимости отдельных выплат.
Если объяснять по-простому, то дюрация – это сколько времени понадобится для того, чтобы (равными платежами) вернуть сумму номинала облигации.
На странице ЛЧИ-2019 перестали показываться графики доходности участников. Пробовал двумя браузерами — мимо. Это довольно досадно и говорит в том числе об общем отношении Биржи к данному мероприятию. Если у кого начнет показываться, маякните пожалуйста. Хотел пару скриншотов сделать.
Но чудеса состоят не в этом. А в том, что на ЛЧИ зарегистрирован участник-опционщик с ником "ch5oh". Ссылка на его статистику:
https://investor.moex.com/trader2019?user=211910
Излишне говорить, что к этому уважаемому джентльмену не имею никакого отношения.
Во-первых, принципиально не участвую в ЛЧИ уже лет 10 и категорически не планирую делать этого в будущем.
Во-вторых, мой брокер ItInvest (ныне ItiCapital), а не "Уралсиб".
В-третьих, участник строит календарные позиции с участием аж мартовских опционов на SiH0 (правильней было бы писать SiH20, как на нормальных биржах). А всем известно, что в данный момент
Объяснительная записка — 2.2
Недавно познакомился с интересным трейдером. У нас совершенно разное образование и работали мы в совершенно разных прикладных областях, но, мы проработали одни и те же энциклопедии технических индикаторов и, похоже, у нас был близкий менталитет, потому, что мы разными путями пришли к общей идее.
Мы не раскрывали друг другу свои решения, но я посмотрел несколько его постов и (надеюсь) смог провести правильную реконструкцию (читай reverse engineering) этого решения. А еще отрадно, что не только я смог это сделать, меня опередили в тех постах.
К этой общей идее я пришел даже несколькими разными путями. Более того, я проверил ее в приложении к музыке, взял ноты одного шлягера, оцифровал частоты и длительности — получил временной ряд, к нему и применил ту идею — получилось очень неплохо.
Простые выводы:
— одни и те же закономерности могут действовать в разных прикладных областях, включая рынок;
— есть смысл поохотиться за «чистыми» идеями, поискать их в рынке и вне рынка;
— reverse engineering работает, иногда даже небольшого намека достаточно для раскрутки.
-----------------
Еще пример на тему единства законов природы и междисциплинарности рынка.
Цитата из Гигеренцера.