Блог им. Bondiator

Нужно ли логарифмировать данные перед бэктестом?

Иногда в публикациях попадаются рекомендации предварительно логарифмировать цены тикеров перед их отправкой в бэктестер.
Для чего это делается там не объясняют.
Я слышал когда-то краем уха, что логарифмирование применяют для подгонки выборок под нормальное распределение, но можно ли это прикрутить для бэктеста я не знаю.
Может знатоки математики подскажут что к чему?
★4
31 комментарий
Считать pnl по логарифмированным ценам или log-returns нельзя.
Считать торговые сигналы можно.
avatar
Eugene Logunov,  а что дает логарифмирование?
Получается, что допустимо делать входы в сделку по ln(close)>ln(MA...)?
avatar
Врач-бондиатОр, 1. Некоторые вещи удобнее считать, например, геометрическое среднее — exp(MA(log(price), ...)). 2. log-returns имеют немного более симметричное распределение, чем %-returns. 3. Если у инструмента сильно меняется цена (в разы) — может быть удобнее привязывать параметры системы к изменениям логарифмов цен (или относительным изменениям), а не к абсолютным.
Получается, что допустимо делать входы в сделку по ln(close)>ln(MA...)?
Допустимо, но в простых сигналах это зачастую смысла не имеет из-за монотонности логарифма, а также бОльших вычислительных затрат.
avatar

Eugene Logunov, а почему PnL-то нельзя? Я что-то не понимаю?

avatar
логарифмируют приращения цен...
имхо это нормализация… т.е распределение становится более нормальным

еще это действует как фильтр

т.е если ты делаешь рейнджевые индикаторы типа параболика, боллинджера, регрессий,  конверта то может быть улучшение

еще  разные бумаги можно упихать в один график…
avatar
ves2010, звучит интересно — графики в лог-масштабе более гладкие.
Но ведь получится так, что сигнал будет на преобразованном чарте, а вход будет на непреобразованном...
А как можно разные бумаги в один график упихать? особенно если порядок цен разный 
avatar
Врач-бондиатОр, чтоб упихать логарифмируют приращения... 

ну например a[i]=(close[i-1]-open)/open

а=а + a[i]

т.е все свели к относительным приращениям… и можно уже упихивать в один график
avatar
Врач-бондиатОр, нормированием, приведение к единой единице исчисления
avatar
Помнится А.Г. говорил, что работает именно с логарифмами приращения цен

Нет, логарифмировать не надо. Работа идет с исходной ценой.

Это если производится исследование приращений цен (а точнее, их отношений), то иногда это делают. Т.е. берут логарифм от отношения Close[n]/Close[n-1]. Но это делается для академических исследований, а не для бэктестов.

avatar
Непонятно, что такое «предварительно логарифмировать перед отправкой в бэктестер»? Если в вашей модели нужны сырые цены — используйте цены, если нужны логарифмы цен — используйте логарифмы.
Для какого-нибудь совсем тупого зафита нейросетями по рандомным фичам, например, логарифмы цен могут быть предпочтительны тем, что их разности дают ретурны актива на соответствующем горизонте.
avatar
MadQuant, вот я и пытаюсь понять дает ли логарифмирование какие-нибудь преимущества. Мои модели всегда работали на сырых ценах по тренду; думал, может логарифмирование зашумление как-нибудь снизит.
avatar
Врач-бондиатОр, ну, логарифмирование по определению изменит их распределение с условно-логнормального на условно-нормальное, но если вы считаете, что это поможет вашим моделям — скорее всего, вы используете какие-то неадекватные текущим данным модели (которым нужны ретурны вместо цен или наоборот).
avatar
Врач-бондиатОр, по мне, с ним проще строить арбитраж
avatar
Чем проще, тем лучше.)
avatar
доказано, что логарифмирование увеличивает рост гуру на 4 см. и очень положительно сказывается на стоимости курсов

иного влияния не выявлено

если на упаковке молока вы увидите текст «произведено с помощью операций логарифмирования» — будьте уверены, вас разводят на бабки))
avatar
Татарин только знает
avatar
В бэктест надо подавать то же, что и придёт в стратегию в реале, иначе это бэктест чего-то другого.

Если где-то прям горит воткнуть логарифм, то в самой стратегии.
avatar
Нашли грааль?
avatar
Самый простой способ подавить немного шума
avatar
Так я и не понял, логарифмировать, или нет????
Логарифмировать можно, если хотите уравнять в статистике отклонения от текущей цены в процентах.
Если она уменьшилась на 50%, то это не то же самое, что увеличилась на 50% по эффекту. Уменьшилась в два раза, а выросла всего в полтора.
Для логарифмов отклонения на + и — 50% перестанут быть 'равнозначными'.
По основанию 2 в первом случае цена снизилась на 1 ступень, а во втором случае — поднялась на 0,585 ступени.
Для логарифма цены равнозначными изменениями будут снижение цены на треть и увеличение цены на половину.
Т. е. такие, что вместе возвращают цену к первоначальной.
avatar
логарифм вероятности интереснее
Известно, что на множестве ТС лонги имеют статистическое преимущество перед шортами. Они дают более позитивные результаты. Возможно, что логарифмирование несколько сократит это преимущество. Останутся прочие причины для лучшести лонгов.
avatar

Eugene Logunov, так там весь «упс» берется из-за округления. При капитале в миллиард и выше никаких упсов не будет.

Да, одна обратная операция (может даже одна на весь массив, если нужен только конечный PnL). Но зато мы сокращаем время расчета позиции, тем, что не пересчитываем ее как q[i]=c[i-1]/p[i].

Правда, скорость подсчета разницы, отношения и логарифма я не знаю, может быть логарифм считается сильно дольше, чем более простые действия...  

 

avatar
Eugene Logunov, там ещё ребаланс, да. Я из-за него и нехотел изначально по лог.доходностям считать, как вы мне предлагали. Что-то спорили мы там о чем-то таком, помню. Но сейчас вот, считаю через логарифмы все в итоге… Удобство, блин.
avatar
Здесь привел аргументы за логаримфирование.

Тут четкий пример ТС, показывающий, что дает логарифмирование.
avatar

теги блога Врач-бондиатОр

....все тэги



UPDONW
Новый дизайн