Обсуждение статьи "R-квадрат как оценка качества кривой баланса стратегии" - страница 3

 
fxsaber:

В статье линейная регрессия считается с ошибкой - через CLinReg::LRLine.

Доказательство

Результат

Знак неверный. Альтернативная реализация ЛР (CAlglib::LRBuild + CAlglib::LRUnpack) считает правильно:

Не знаю, я проверял на равенство, системный LR возведенный в квадрат в точности равен R^2. На счет знака - здесь вроде ошибится сложно.
 
fxsaber:

Здесь я оказался неправ. Для меня совсем неочевидное утверждение

Поэтому решил экспериментально подтвердить через анимацию (не верить же на слово)

Похоже, все так и есть.

Вот это очень круто. Эту анимацию нужно вставить в статью! Если не возражаете - сделаю.

 

Вообще вся статистика - это поле для холивара еще то.

Но, по статье интересно два направления:

  • Улучшение R^2: изменить его таким образом, что бы показатель на случайных блужданиях генерировал нормальное распределение со средним 0.0.
  • Исследование очень нетривиальных теорем аркосинуса, исследование стахостических трендов. Паралели между стохастическими трендами и трендами на рынках.

 
Vasiliy Sokolov:
Не знаю, я проверял на равенство, системный LR возведенный в квадрат в точности равен R^2. На счет знака - здесь вроде ошибится сложно.

Надо несколько раз запустить этот код, пока не будет видна разница в знаке. На чарт специально выводится график для самопроверки - R2. А R - это Ваш алгоритм расчета.

Видно, что R различается иногда от точно правильного R2. Надо бы подправить как-то Ваш способ расчета регрессии, чтобы знак совпадал, т.к. он на порядок быстрее проверочного.

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

Vasiliy Sokolov:

Вот это очень круто. Эту анимацию нужно вставить в статью! Если не возражаете - сделаю.

Тогда код анимации хорошо бы допилить Вам до нормального состояния, поскольку сам делал на скорую руку в кустарных условиях. И гифку, соответственно, сделать нагляднее.

 
fxsaber:

Надо эквити для вычисления R^2 считать ни как AccountEquity ( == AccountBalance + Sum(Profit[i])),  а как Sum(Profit[i] / Lots[i]) (для односимвольных ТС).

А если ММ стратегии основан на размере СЛ, а сам СЛ динамический?
У двух соседних сделок может быть разный лот и, соответственно, профит при взятии одинакового кол-ва пунктов.
Хотя риск на сделку будет при этом одинаковым.

 
Andrey Khatimlianskii:

А если ММ стратегии основан на размере СЛ, а сам СЛ динамический?
У двух соседних сделок может быть разный лот и, соответственно, профит при взятии одинакового кол-ва пунктов.
Хотя риск на сделку будет при этом одинаковым.

Не понимаю, что в этой ситуации меняет.

 
fxsaber:

Не понимаю, что в этой ситуации меняет.

Да, туплю. Деление на лот даст одинаковый результат.

 

Автор проявляет полное не понимание СЛУЧАЙНЫХ ПРОЦЕССОВ. Все выводы статьи не имеют отношения к самому понятию СЛУЧАЙНОСТИ, вводят людей в заблуждение.


Поясню это свое мнение.

В самом начале статьи дано определение:

Линейной регрессией называется линейная зависимость одной переменной y от другой независимой переменной x, выраженная формулой y = ax+b. В этой формуле а — множитель, b — коэффициент смещения


Линейная регрессия НЕ выражается формулой 

y = ax+b  - это формула линейного уравнения,

а выражается формулой

y = ax+b +ошибка

Ошбика должна быть НОРМАЛЬНО РАСПРЕДЕЛЕНА, а если это не так, то возникает множество нюансов, которые очень сильно ограничивают применение линейной регрессии.

Крайне важно понимать, что коэффициенты линейной регрессии, в отличии от линейного уравнения, НЕ являются константами, а являются СЛУЧАЙНЫМИ величинами и если взять стандартную подгонку линейной регрессии, например в R,  то всегда для коэффициентов линейной  регрессии указывается отклонение от той величины коэффициентов,  а также вероятность (вероятность в нулевой гипотезе НЕ СУЩЕСТВОВАНИЯ ЭТОГО КОЭФФИЦИЕНТА). Еще раз: в отличии от линейного уравнения коэффициенты линейной регрессии  могут вообще не существовать. Именно поэтому коэффициент  R2, который обсуждается в статье,  имеет смысл только для регрессий. в которых вероятность НЕ СУЩЕСТВОВАНИЯ коэффициентов этой самой регрессии ниже хотя бы 10%. На финансовых рядах я ни разу не видел, чтобы коэффициенты линейной регрессии были знАчимы и, следовательно, можно было бы пользоваться этой самой линейной регрессией.

 
fxsaber:

В статье линейная регрессия считается с ошибкой - через CLinReg::LRLine.

Доказательство


Результат


Знак неверный. Альтернативная реализация ЛР (CAlglib::LRBuild + CAlglib::LRUnpack) считает правильно:



Да, с ошибкой, вы верно заметили, лучший результат определяется среди убыточных сетов, хотя с таким же R2 есть и положительные


C вашей версией все ок:

 
fxsaber:

критерий поиска линейной функции под названием "Линейная регрессия" является МНК отклонений или что одно и то же - максимизация абсолютного значения КК Пирсона, что есть MathAbs(LR). А максимизация MathAbs(LR) - то же самое, что максимизация R^2, т.к. MathAbs(LR) = MathSqrt(R^2).

МНК отклонений - MathMin((Sum(X[i] - LR[i])^2)).

Желательно же совсем иное - MathMin((Sum(X[i] - LR[i])^2 * (i / Length)^2)). Т.е. даже большая ошибка, но находящаяся вначале интервала, может оказывать меньшее влияние на результат, нежели небольшая ошибка, но находящаяся в конце интервала.

Классический ЛР этого не учитывает, там все ошибки "равноправны".

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