Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Рис. 19. Распределение LR-Correlation для 10 000 случайных блужданий
Рис. 20. Распределение R^2 для 10 000 случайных блужданий
Не понимаю, как R^2 может принимать отрицательные значения, что показаны на втором графике? Да и с первым графиком вопросы. Если линейная регрессия построена правильно, то, вроде, КК Пирсона (LR) не должен быть отрицательным. Но на графике это не так. Где ошибаюсь?
Врубился. Нигде не ошибаюсь, просто на графиках кастомные R^2 и LR - умножение на -1 реального значения происходит в случае, если последний элемент числового ряда меньше первого. Хорошо бы об этом перед графиками написать.
В статье линейная регрессия считается с ошибкой - через CLinReg::LRLine.
Доказательство
Результат
Знак неверный. Альтернативная реализация ЛР (CAlglib::LRBuild + CAlglib::LRUnpack) считает правильно:
Графики распределений LR Correlation и R^2 для 10 000 независимых примеров, что представлены в статьей, показывают, что R^2 != LR^2.
Не понимаю, почему вторая степень исходного "вогнутого" распределения делает его "ровным"?Здесь я оказался неправ. Для меня совсем неочевидное утверждение
Удивительно то, что простым математическим действием (возведением во вторую степень) мы полностью убрали нежелательные краевые эффекты распределения.
Поэтому решил экспериментально подтвердить через анимацию (не верить же на слово)
Похоже, все так и есть.
Рис. 21. Значение R^2 в качестве пользовательского критерия оптимизации
А где в MQL LR Correlation, что на картинке? Или этот и многие другие показатели рассчитываются только для одиночных прогонов, поэтому отсутствуют в ENUM_STATISTICS?
Если так, то предлагают этот параметр рассчитывать из обоснованных соображений, озвученных в данной статье: по эквити без ММ и в квадрате.
ЗЫ Замерил, сколько времени уходит на расчет GetCustomR для массива на миллион значений (типа эквити) - 2.5 секунды. Дофига, короче. Все уходит на вычисление ЛР (CAlglib::LRBuild + CAlglib::LRUnpack). Зато иногда кривая ЛР через CLinReg::LRLine на порядок быстрее. Если ее допилить, то, как критерий Оптимизации, станет терпимым при Оптимизациях.
О как! Всегда думал, что 100. Спасибо, интересная статья.
Да, это число я встречал в авторитетных книжках по R и статистике. Но жаль не смог найти ссылку, так что сорри.
Ещё принято проводить тесты на значимость коэффициента регрессии. Даже в Алглиб они есть :-)
Очевидно что тесты для нормального распределения. У нас равномерное получилось.
PearsonCorrelationSignificance(), SpearmanRankCorrelationSignificance()
За ссылку спасибо, запомню.
ЗЫ Неверное утверждение
R^2 — не что иное, как корреляция между графиком и его линейной моделью
Да, действительно, грубая ошибка в формулировке. Даже удиветльно, что я такое написал. Исправлю.
Когда смотришь все остальные MQL-коды, то не понимаешь, зачем они приведены, т.к. они совершенно не читабельны без владения CStrategy
CStrategy нужен только для сбора еквити. Основные код как правильно было замечено это собственно рассчет R2
Код для расчета "эквити", годного для R^2. Написан в MT4-стиле, в MT5 перевести несложно...
Изучим.
С этим согласен, все остальное придется выдирать из классов, для добавления в свою систему.. лучше бы все в отдельных ф-ях было или отдельный инклудник.
Берете свой рассчет еквити (или тот код, что представлен fxsaber'ом) в виде дабл-массива и вставляете в функцию рассчета R^2. Ничего выдирать не надо, не надо исползовать классы и CStrategy.
Не понимаю, как R^2 может принимать отрицательные значения, что показаны на втором графике? Да и с первым графиком вопросы. Если линейная регрессия построена правильно, то, вроде, КК Пирсона (LR) не должен быть отрицательным. Но на графике это не так. Где ошибаюсь?
Врубился. Нигде не ошибаюсь, просто на графиках кастомные R^2 и LR - умножение на -1 реального значения происходит в случае, если последний элемент числового ряда меньше первого. Хорошо бы об этом перед графиками написать.
Запрятано в статье:
Наш скрипт рассчитывает как LR Correlation, так и R^2. Разницу между ними мы увидим чуть позже. В скрипт внесено небольшое дополнение. Получившийся коэффициент корреляции мы будем умножать на итоговый знак синтетического графика. Если мы закончили с результатом меньше нуля, корреляция будет отрицательной, если больше — положительной. Сделано это для того, чтобы легко и быстро отделить отрицательные исходы от положительных, не прибегая при этом к другим статистикам. Именно так работает LR Correlation в MetaTrader 5, по такому же принципу будет строиться и R^2.