Избранное трейдера 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