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 по цене закрытия, тоже не очень.
надо строить кроме графика эквити еще график коэф. шарпа, наблюдать за его деградацией. теоретически я согласен с вами, он должен деградировать.
только по книжке как раз такие заходы и работают. то есть теоретически, если не вдаваться в нюансы.
О, интересные посты подъехали).
А чё правда какая-то средняя цена, а не клоуз?
>> такое торговать не получится
Что-то мне подсказывает, что проблема тут не в средней цене, по которой то ли дадут то ли не дадут и т.д., там ещё какой-то bias заложен явно, ARIMA ж это цикличность, трендовость, шум — график цены вот так легко на эти компоненты не раскладывается, чтобы модель вот такую OOS эквити просто так выдавала.
переложили гадание о направлении цены на веру в волшебные коэффициенты модели, которая вывезет. Но зерна в них нет, просто в другую обёртку завернули 50/50.
Ну, и сразу не верится, что в (p, 0, 0) что-то можно новое получить, отличное от шума.
Если по какой-то идее модель составить, да разности брать не нулевого порядка, то может быть что-то и зацепится.