Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3269
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Где-то Читал что можно быстро считать корреляцию через быстрое преобразование фурье.. Тоже как вариант ускориться
Делал. Там имеет смысл, когда длина строки большая. Как-нибудь покажу.
Нашел проблему
Должно быть так
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Машинное обучение в трейдинге: теория, модели, практика и алготорговля
Maxim Dmitrievsky, 2023.10.01 10:55
residuals_a = a_mat - a_mat.column_means residuals_b = b_mat - b_mat.column_means a_residual_sums = residuals_a.column_sums b_residual_sums = residuals_b.column_sums residual_products = dot_product(residuals_a.transpose, residuals_b)
correlations = residual_products / sum_products
Вроде, это лобовой расчет корреляционной матрицы.
Точно, спасибо! Не понимаю, почему неверный вариант работал с inCols < 100.
Видимо
слишком много. Рандом же - там средняя корреляция около 0, наверное.Видимо слишком много. Рандом же - там средняя корреляция около 0, наверное.
Там не средняя ошибка замеряется, а максимальное различие между соответствующими элементами.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Машинное обучение в трейдинге: теория, модели, практика и алготорговля
fxsaber, 2023.10.01 09:38
Поэтому и непонятно, как при неправильном коде
получается совпадение.
Ну и PearsonCorrM2 можно ускорить в 2 раза, если считать по треугольнику.Т.е. идти с конца. Посчитать 100 строку со всеми, потом 99 со всеми 0-99, 99 и 100я уже посчитаны - можно просто скопировать. ...50ю строку со всеми до 50й и т.д. Ну и саму с собой не считать т.к. =1.
Поэтому и непонятно, как при неправильном коде
получается совпадение.
Разобрался, если поменять местами расчеты матриц, то получится несовпадение.
Т.е. мусор из памяти при расчете первой матрицы попадал в новую матрицу и каким-то чудом совпадал с нужным результатом.
Вроде, это лобовой расчет корреляционной матрицы.
196
500 сек против 14 - потому мне и запомнилось, что
самая быстрая, за счет алгоритма.
Ну да, если на новых матрицах мкл сделать, быстрее не будет?
Думаю все используемые в PearsonCorrM и PearsonCorrM2 9 функций можно переписать на матрицы и сравнить. В принципе объявления матриц и обращения переписать - на час работы. Заодно узнаем лучше ли матрицы дин. массивов.
Названия
IsFiniteMatrix(
IsFiniteVector(
AblasInternalSplitLength(
AblasSplitLength(
RMatrixGemmK(
RMatrixGemm(
RMatrixSyrk2(
RMatrixSyrk(
RankX(
Думаю все используемые в PearsonCorrM и PearsonCorrM2 9 функций можно переписать на матрицы и сравнить. В принципе объявления матриц и обращения переписать - на час работы. Заодно узнаем лучше ли матрицы дин. массивов.
Уже все сделано: MQ переписали их под свои матрицы.
500 сек против 14 - потому мне и запомнилось, что
самая быстрая, за счет алгоритма.
Я там алгоритм не осознал. Самоделка же сильно не отстает только за счет того, что не совершает повторные вычисления.
В NumPy, похоже, иной от ALglib алгоритм, раз сильно разнится по производительности. Но там понятно, что во всем огромном Python-сообществе нашелся какой-то очень сильный алгоритмист, который посвятил изучению данного вопроса приличное количество времени.