Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В статье линейная регрессия считается с ошибкой - через CLinReg::LRLine.
Доказательство
Результат
Знак неверный. Альтернативная реализация ЛР (CAlglib::LRBuild + CAlglib::LRUnpack) считает правильно:
Здесь я оказался неправ. Для меня совсем неочевидное утверждение
Поэтому решил экспериментально подтвердить через анимацию (не верить же на слово)
Похоже, все так и есть.
Вот это очень круто. Эту анимацию нужно вставить в статью! Если не возражаете - сделаю.
Вообще вся статистика - это поле для холивара еще то.
Но, по статье интересно два направления:
Не знаю, я проверял на равенство, системный LR возведенный в квадрат в точности равен R^2. На счет знака - здесь вроде ошибится сложно.
Надо несколько раз запустить этот код, пока не будет видна разница в знаке. На чарт специально выводится график для самопроверки - R2. А R - это Ваш алгоритм расчета.
Видно, что R различается иногда от точно правильного R2. Надо бы подправить как-то Ваш способ расчета регрессии, чтобы знак совпадал, т.к. он на порядок быстрее проверочного.
Наверное, нужно предоставить исходный массив, на котором видна ошибка. Тогда сразу станет очевидно.
Вот это очень круто. Эту анимацию нужно вставить в статью! Если не возражаете - сделаю.
Тогда код анимации хорошо бы допилить Вам до нормального состояния, поскольку сам делал на скорую руку в кустарных условиях. И гифку, соответственно, сделать нагляднее.
Надо эквити для вычисления R^2 считать ни как AccountEquity ( == AccountBalance + Sum(Profit[i])), а как Sum(Profit[i] / Lots[i]) (для односимвольных ТС).
А если ММ стратегии основан на размере СЛ, а сам СЛ динамический?
У двух соседних сделок может быть разный лот и, соответственно, профит при взятии одинакового кол-ва пунктов.
Хотя риск на сделку будет при этом одинаковым.
А если ММ стратегии основан на размере СЛ, а сам СЛ динамический?
У двух соседних сделок может быть разный лот и, соответственно, профит при взятии одинакового кол-ва пунктов.
Хотя риск на сделку будет при этом одинаковым.
Не понимаю, что в этой ситуации меняет.
Не понимаю, что в этой ситуации меняет.
Да, туплю. Деление на лот даст одинаковый результат.
Автор проявляет полное не понимание СЛУЧАЙНЫХ ПРОЦЕССОВ. Все выводы статьи не имеют отношения к самому понятию СЛУЧАЙНОСТИ, вводят людей в заблуждение.
Поясню это свое мнение.
В самом начале статьи дано определение:
Линейной регрессией называется линейная зависимость одной переменной y от другой независимой переменной x, выраженная формулой y = ax+b. В этой формуле а — множитель, b — коэффициент смещения
Линейная регрессия НЕ выражается формулой
y = ax+b - это формула линейного уравнения,
а выражается формулой
y = ax+b +ошибка
Ошбика должна быть НОРМАЛЬНО РАСПРЕДЕЛЕНА, а если это не так, то возникает множество нюансов, которые очень сильно ограничивают применение линейной регрессии.
Крайне важно понимать, что коэффициенты линейной регрессии, в отличии от линейного уравнения, НЕ являются константами, а являются СЛУЧАЙНЫМИ величинами и если взять стандартную подгонку линейной регрессии, например в R, то всегда для коэффициентов линейной регрессии указывается отклонение от той величины коэффициентов, а также вероятность (вероятность в нулевой гипотезе НЕ СУЩЕСТВОВАНИЯ ЭТОГО КОЭФФИЦИЕНТА). Еще раз: в отличии от линейного уравнения коэффициенты линейной регрессии могут вообще не существовать. Именно поэтому коэффициент R2, который обсуждается в статье, имеет смысл только для регрессий. в которых вероятность НЕ СУЩЕСТВОВАНИЯ коэффициентов этой самой регрессии ниже хотя бы 10%. На финансовых рядах я ни разу не видел, чтобы коэффициенты линейной регрессии были знАчимы и, следовательно, можно было бы пользоваться этой самой линейной регрессией.
В статье линейная регрессия считается с ошибкой - через CLinReg::LRLine.
Доказательство
Результат
Знак неверный. Альтернативная реализация ЛР (CAlglib::LRBuild + CAlglib::LRUnpack) считает правильно:
Да, с ошибкой, вы верно заметили, лучший результат определяется среди убыточных сетов, хотя с таким же R2 есть и положительные
C вашей версией все ок:
критерий поиска линейной функции под названием "Линейная регрессия" является МНК отклонений или что одно и то же - максимизация абсолютного значения КК Пирсона, что есть 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 функцию, которая придает ошибкам разный вес.