Блог им. Riskplayer
ARIMA(41,0,0) Model (Gaussian Distribution): Value StandardError TStatistic PValue ___________ _____________ __________ ___________ Constant 0. <a name="cut"></a> 0044119 0.003667 1.2031 0.22893 AR{1} 1.2416 0.00038211 3249.4 0 AR{2} -0.31171 0.00067491 -461.86 0 AR{3} 0.050585 0.0010332 48.961 0 AR{4} 0.022658 0.0012971 17.468 2.4899e-68 AR{5} -0.05493 0.001379 -39.833 0 AR{6} 0.04739 0.0014496 32.692 2.0322e-234 AR{7} -0.018811 0.0015392 -12.221 2.3964e-34 AR{8} 0.021583 0.0016458 13.114 2.7354e-39 AR{9} 0.014553 0.0017273 8.4251 3.6049e-17 AR{10} 0.028344 0.0016042 17.669 7.3227e-70 AR{11} -0.016945 0.001519 -11.155 6.7466e-29 AR{12} 0.0011352 0.0011099 1.0228 0.30639 AR{13} -0.014298 0.00072126 -19.823 1.8809e-87 AR{14} -0.013205 0.00091651 -14.408 4.6262e-47 AR{15} -0.005481 0.001332 -4.1149 3.8736e-05 AR{16} -0.0060875 0.0013819 -4.4053 1.0565e-05 AR{17} -0.00308 0.0015478 -1.9899 0.046604 AR{18} 0.022897 0.0015615 14.664 1.0998e-48 AR{19} -0.00057571 0.001496 -0.38484 0.70036 AR{20} 0.0074662 0.0014159 5.2731 1.3415e-07 AR{21} -0.024364 0.001357 -17.954 4.4415e-72 AR{22} 0.032438 0.0012885 25.175 7.5672e-140 AR{23} -0.015657 0.0010254 -15.269 1.2215e-52 AR{24} 0.0031435 0.0008982 3.4998 0.00046566 AR{25} -0.0036452 0.0010939 -3.3323 0.00086145 AR{26} 0.0036641 0.0014248 2.5717 0.010121 AR{27} -0.018374 0.0015304 -12.006 3.2975e-33 AR{28} 0.013843 0.0014963 9.2514 2.2154e-20 AR{29} -0.018975 0.0015305 -12.398 2.6793e-35 AR{30} 0.028452 0.0012616 22.553 1.2418e-112 AR{31} -0.019905 0.0013221 -15.055 3.1791e-51 AR{32} 0.021178 0.0014053 15.07 2.5648e-51 AR{33} -0.018781 0.0015817 -11.874 1.625e-32 AR{34} 0.0053725 0.0016047 3.348 0.00081383 AR{35} -0.020494 0.0013739 -14.916 2.5938e-50 AR{36} 0.030063 0.0015222 19.75 8.0827e-87 AR{37} -0.0025714 0.0016767 -1.5336 0.12512 AR{38} -0.0039149 0.0018077 -2.1657 0.030333 AR{39} 0.0058523 0.0016222 3.6076 0.00030904 AR{40} -0.034314 0.0015485 -22.159 8.5091e-109 AR{41} 0.02384 0.00098174 24.284 2.9093e-130 Variance 0.13025 3.7647e-05 3459.8 0
Система всегда в рынке, и простая как пять копеек. Если прогнозируемая цена больше, чем текущая цена, то входим в лонг, и наоборот, если прогнозируемая цена меньше текущей, то идем в шорт.
И последний шаг, имея модель, строим доходность нарастающим итогом на проверочных данных.
data = readtimetable(..\\sber5min.csv'); LOGL = zeros(60,1); P = zeros(size(LOGL,1),1); data.mid = (data.High + data.Low)*0.5; fullset = timerange('2020-01-01 00:00:00','inf'); trainset = timerange('2020-01-01 00:00:00','2024-01-01 00:00:00'); testset = timerange('2024-01-01 00:00:00','inf'); data = data(fullset, :); for p = 1:length(P) model = arima(p,0,0) [~,~,logL] = estimate(model,data.mid(trainset)) LOGL(p) = logL; P(p) = p; end [~,bic] = aicbic(LOGL, P+1, length(data.mid(trainset))); [~,pMin] = min(bic) model = arima(pMin,0,0) fit = estimate(model, data.mid(trainset)); yF = nan(size(data,1),1); data = addvars(data,yF); for t = size(data.mid(trainset)):size(data.mid) [y,~] = forecast(fit, 1, 'Y0', data.mid(t - pMin + 1:t)); data.yF(t) = y(end); end data.deltaYF = data.yF - data.mid; data.pos = zeros(size(data,1),1); data.pos(data.deltaYF > 0) = 1; data.pos(data.deltaYF < 0) = -1; diff1 = diff(data.mid); diff1(size(diff1,1)+1) = 0; data = addvars(data, diff1); data.proc_chg = data.diff1./data.mid; data.proc_profit = data.proc_chg.*data.pos; data.cum_p = cumsum(data.proc_profit); plot(data.cum_p(testset))
Вижу к-ты авторегрессии. А q=0 и I=0. Это просто подгонка к-тов авторегрессионного фильтра?
Если взять цены закрытия и заложить транзакционные издержки, что-то вообще получится, интересно. Не пробовали, или не работает.
Пробовал использовать сигналы по средней цене, но сделки по закрытию, система становиться убыточной. Подгонял arima по цене закрытия, тоже не очень.
www.howtotrade.ru/phorum/read.php?3,196243
надо строить кроме графика эквити еще график коэф. шарпа, наблюдать за его деградацией. теоретически я согласен с вами, он должен деградировать.
только по книжке как раз такие заходы и работают. то есть теоретически, если не вдаваться в нюансы.
О, интересные посты подъехали).
А чё правда какая-то средняя цена, а не клоуз?
>> такое торговать не получится
Что-то мне подсказывает, что проблема тут не в средней цене, по которой то ли дадут то ли не дадут и т.д., там ещё какой-то bias заложен явно, ARIMA ж это цикличность, трендовость, шум — график цены вот так легко на эти компоненты не раскладывается, чтобы модель вот такую OOS эквити просто так выдавала.
переложили гадание о направлении цены на веру в волшебные коэффициенты модели, которая вывезет. Но зерна в них нет, просто в другую обёртку завернули 50/50.
Ну, и сразу не верится, что в (p, 0, 0) что-то можно новое получить, отличное от шума.
Если по какой-то идее модель составить, да разности брать не нулевого порядка, то может быть что-то и зацепится.
Также важно форма графика.Лучший график Хейкен Аши.Там каждая свеча — приседающий — на половину размаха. Типа тень показывает направление тренда.К этому графику надо добавить правило новой перемены -рендж график.
Думаю, если бы было подглядывание, то и для цены закрытия Close эта система показала бы хорошее эквити, но для цены закрытия она ничего не зарабатывает.
Это и есть подглядывание. Это «вряд ли можно» имеет огромную разницу с «точно можно».
Попробуйте смоделировать торговлю лимитными ордерами — любую как угодно полученную цену проверьте на перехлест в 1 шаг цены с диапазоном следующей свечи, а не текущей. Если перехлест есть — ваша сделка состоялась, нет — повторите все на следующем баре. Не используйте тех данных, которых вы на момент открытия свечи знать не можете.
Интуитивно кажется невелика разница, на деле даже знание high-low текущей свечи в момент ее открытия даст преимущество, которое весомее любой стратегии на OHLC. Точное знание, а не какой-то там прогноз.
Чисто теоретически, можно попробовать подобрать такой актив, у которого внутри большинства баров может делать возврат к «средней» цене. Но скорее всего, это маловероятно.