Избранное трейдера kaliostro
В «Открытие Брокер» я с 2011 года. До недавнего времени был доволен качеством предоставляемых услуг. Но в последнее время начался какой-то лютый п...
Случай 1. Торговля на FORTS или нас не волнуют проблемы клиентов.
19 мая 2016 года я торговал на вечерке. Остался с позицией и оставил заявку на закрытие. Утром 20 мая 2016 года где-то в 9:45 я захожу на основной сервер и не вижу своей заявки, пару раз переподключился — результат тот же. Подумал, что, наверное, всё-таки успел снять заявку вчера.
В 10:00 открываются торги, я пытаюсь совершить сделки, но не вижу их на графике. Звоню брокеру, через какое-то время разговора удаётся выяснить, что у них технические проблемы на сервере, поэтому я не вижу своих сделок, не вижу своих заявок (хотя заявки выставляются, но — снять я их не могу!).
«Открытие Брокер» на этот случай мне ответил примерно следующее:
Settings = { Name = "xPc5", period = 24, line= { { Name = "xPc5", Color = RGB(0, 128, 0), Type = TYPE_LINE, Width = 2 }, { Name = "xPc5", Color = RGB(255, 64, 64), Type = TYPET_BAR, Width = 3 }, { Name = "xPc5", Color = RGB(64, 64, 255), Type = TYPET_BAR, Width = 3 } } } ---------------------------------------------------------- function c_FF() return function(ind, _p) local period = _p local index = ind local MAX_ = 0 local MIN_ = 0 local MAX2_ = 0 local MIN2_ = 0 if index == 1 then MAX_ = C(index) MIN_ = C(index) MAX2_ = C(index) MIN2_ = C(index) return nil end ---------------------------------------------------------------------- period = _p if index < period then period = index end MAX_ = H(index) MIN_ = L(index) MAX2_ = 0 MIN2_ = 0 for i = 0, (period-1) do if MAX_ < H(index-i) then MAX_ = H(index-i) end if MIN_ > L(index-i) then MIN_ = L(index-i) end MAX2_ = MAX2_ + MAX_ MIN2_ = MIN2_ + MIN_ end MAX2_ = MAX2_/(period) MIN2_ = MIN2_/(period) return (MAX2_+MIN2_)/2, MAX2_, MIN2_ end end function Init() myFF = c_FF() return 3 end function OnCalculate(index) return myFF(index, Settings.period) end
Увы, но для нашего портфеля с самой долгой историей реальных торгов Форум фьючерсы 1000, второй квартал 2016 года оказался убыточным
Это второй убыточный квартал за всю историю реальной торговли (предыдущим убыточным кварталом был 3 квартал 2014-го года) и самый убыточный по результату. Причины этого многократно обсуждались нами на внутренних совещаниях и «разгадка» лежит в следующем рисунке
Перевод (http://bettersystemtrader.com/sharpe-ratio-right-answer-wrong-question/)
Многие используют коэффициент Шарпа, но до конца не понимают в чем прелесть данного показателя.
Для начала давайте выясним, что коэффициент Шарпа делает хорошо:
Мы все знаем, что в создании портфеля стратегий очень важно правильное распределение активов. Трудность состоит в том, чтобы найти единую метрику оценки разных стратегий, скорректированную на размер риска. Это то, что делает коэффициент Шарпа. С помощью него мы получаем единую меру для измерения риска различных классов активов: облигаций, акций, фьючерсов, сырья и т.д.
Человеческому мозгу трудно связать неопределенность с риском. Риск активирует миндалевидное тело (амигдала), а та активирует рефлекс бей-беги. В данном случае Шарп можно использовать как хорошую оценку неопределенности, он является отношением результативности стратегии к неопределенности.
Settings = { Name = "xBollinger_LinReg", period = 40, deviation=2, line= { { Name = "xBollinger_LinReg", Color = RGB(0, 0, 255), Type = TYPE_LINE, Width = 2 }, { Name = "xBollinger_LinReg", Color = RGB(192, 0, 0), Type = TYPE_LINE, Width = 2 }, { Name = "xBollinger_LinReg", Color = RGB(0, 128, 0), Type = TYPE_LINE, Width = 6 } } } function c_FF() local AMA={} local CC={} return function(ind, _p,_ddd) local period = _p local index = ind local vol = 0 local sigma = 0 local sigma2 = 0 local aav = 0 local bb = 0 local ZZZ = 0 if index == 1 then AMA={} CC={} CC[index]=(C(index)+H(index)+L(index))/3 AMA[index]=(C(index)+O(index))/2 return nil end ------------------------------ AMA[index]=AMA[index-1] CC[index]=(C(index)+H(index)+L(index))/3 if index < (_p) then return nil end period =_p if index < period then period = index end --------------- sigma=0 sigma2=0 aav=0 ZZZ=0 for i = 0, period-1 do ZZZ=CC[index+i-period+1] aav=aav+ZZZ sigma=sigma+ZZZ*(-(period-1)/2+i) sigma2=sigma2+(-(period-1)/2+i)^2 end bb=sigma/sigma2 aav=aav/period AMA[index]=aav+bb*((period-1)/2) sigma=0 sigma2=0 sigma3 = 0 for i = 0, period-1 do ZZZ=CC[index+i-period+1] sigma2=aav+bb*(-(period-1)/2+i) sigma=sigma+(ZZZ-sigma2)^2 end sigma=(sigma/period)^(1/2) return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index] end end function Init() myFF = c_FF() return 3 end function OnCalculate(index) return myFF(index, Settings.period,Settings.deviation) end