Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3253

Maxim Dmitrievsky #:

через SQL эффективно будет считать?

никогда в жизни

....

пробуй apache Arrow или DuckDB

но всеравно оперативка это самый быстрый способ.

.....

Тут сама задача через Ж..у решаеться , твоя проблема это кор. матрица  которая нафиг не нужна

[Удален]
Forester #:

В алглибе есть ф-я расчета корелляции double. Думаю можно просто поменять все переменные на char/uchar и все будет работать.Там еще с десяток используемых функций тоже надо переделать. И от CMatrixDouble перейти к динамическим массивам или как то по другому.

Pearson product-moment correlation matrix                        |
//| INPUT PARAMETERS:                                                |
//|     X   -   array[N,M], sample matrix:                           |
//|             * J-th column corresponds to J-th variable           |
//|             * I-th row corresponds to I-th observation           |
//|     N   -   N>=0, number of observations:                        |
//|             * if given, only leading N rows of X are used        |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//|     M   -   M>0, number of variables:                            |
//|             * if given, only leading M columns of X are used     |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//| OUTPUT PARAMETERS:                                               |
//|     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)  |
//+------------------------------------------------------------------+
static bool CBaseStat::PearsonCorrM(const CMatrixDouble &cx,const int n,
                                    const int m,CMatrixDouble &c)


И если у вас самоделка - то и квантизацию надо будет делать, если нет готового пакета, который ее делает.

вроде тупанул.. через нампай очень быстро считает ) через панда долго и памятозатратно. Позже все перепроверю.

Maxim Dmitrievsky #:

нет паттерна, паттерны ищутся по корр. матрице

может я чего то не понимаю...

[Удален]
mytarmailS #:

может я чего то не понимаю...

Паттерн = весь набор семплов с высокой корреляцией между друг другом

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

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

то есть тебе надо взять каждую строку и посчитать корреляцию со всеми остальными, получается матрица
Maxim Dmitrievsky #:

Паттерн = весь набор семплов с высокой корреляцией между друг другом

Таких наборов может быть много во всем датасете

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

то есть тебе надо взять каждую строку и посчитать корреляцию со всеми остальными, получается матрица
Я в 15-16 гг что-то похожее делал. Брал текущую ситуацию, например последние 20-50 бар и искал в истории 20 самых похожих примеров. И рисовал среднее будущее от тех 20 примеров. Почти всегда получалась прямая линия +-5 пт. Тогда прибыль в 5 пт мне показалась маловатой, на грани шума. В итоге перешел к МО, в надежде что будет больше. Но тут то же самое
В общем то это похоже на кластеризацию.
Тут максимизируется похожесть примеров.


Классификация/регрессия в деревьях  максимизируют похожесть будущего этих примеров. Похожесть прошлого от этого ухудшается.

[Удален]
Forester #:

Тоже делал подобное давно, сейчас с новыми мыслями переделываю

Maxim Dmitrievsky #:

Паттерн = весь набор семплов с высокой корреляцией между друг другом

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

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

то есть тебе надо взять каждую строку и посчитать корреляцию со всеми остальными, получается матрица

Есть у нас какие то трех мерные данные 

строка это наблюдение , колонка это признак.

первая строка это типа последние данные

X
      [,1] [,2] [,3]
 [1,]    1    4    1   посл. строка
 [2,]    4    1    2
 [3,]    1    2    5
 [4,]    2    5    3
 [5,]    5    3    2
 [6,]    3    2    3
 [7,]    2    3    3
 [8,]    3    3    1
 [9,]    3    1    5
[10,]    1    5    5
[11,]    5    5    2
[12,]    5    2    2
[13,]    2    2    1
[14,]    2    1    5
[15,]    1    5    5
[16,]    5    5    1
[17,]    5    1    1
[18,]    1    1    5
[19,]    1    5    5
[20,]    5    5    2
[21,]    5    2    2
[22,]    2    2    1
[23,]    2    1    4
[24,]    1    4    1
[25,]    4    1    4
[26,]    1    4    3
[27,]    4    3    2
[28,]    3    2    2

можно посчитать корреляцию  последней строки с каждой

             cor
 [1,] 1 4 1  1.0000000
 [2,] 4 1 2 -0.7559289
 [3,] 1 2 5 -0.2773501
 [4,] 2 5 3  0.9449112
 [5,] 5 3 2 -0.1889822
 [6,] 3 2 3 -1.0000000
 [7,] 2 3 3  0.5000000
 [8,] 3 3 1  0.5000000
 [9,] 3 1 5 -0.8660254
[10,] 1 5 5  0.5000000
[11,] 5 5 2  0.5000000
[12,] 5 2 2 -0.5000000
[13,] 2 2 1  0.5000000
[14,] 2 1 5 -0.6933752
[15,] 1 5 5  0.5000000
[16,] 5 5 1  0.5000000
[17,] 5 1 1 -0.5000000
[18,] 1 1 5 -0.5000000
[19,] 1 5 5  0.5000000
[20,] 5 5 2  0.5000000
[21,] 5 2 2 -0.5000000
[22,] 2 2 1  0.5000000
[23,] 2 1 4 -0.7559289
[24,] 1 4 1  1.0000000
[25,] 4 1 4 -1.0000000
[26,] 1 4 3  0.7559289
[27,] 4 3 2  0.0000000
[28,] 3 2 2 -0.5000000

И мы получим этот "рисунок сходства" между последней/текущей строкой и историей

Можно сделать кластеризацию и тоже получить что то подобное

                cor    cluster
 [1,] 1 4 1  1.0000000      10
 [2,] 4 1 2 -0.7559289       6
 [3,] 1 2 5 -0.2773501       5
 [4,] 2 5 3  0.9449112      10
 [5,] 5 3 2 -0.1889822       7
 [6,] 3 2 3 -1.0000000       3
 [7,] 2 3 3  0.5000000       1
 [8,] 3 3 1  0.5000000       4
 [9,] 3 1 5 -0.8660254       5
[10,] 1 5 5  0.5000000       1
[11,] 5 5 2  0.5000000       2
[12,] 5 2 2 -0.5000000       9
[13,] 2 2 1  0.5000000       4
[14,] 2 1 5 -0.6933752       5
[15,] 1 5 5  0.5000000       1
[16,] 5 5 1  0.5000000       4
[17,] 5 1 1 -0.5000000       9
[18,] 1 1 5 -0.5000000       5
[19,] 1 5 5  0.5000000       1
[20,] 5 5 2  0.5000000       2
[21,] 5 2 2 -0.5000000       9
[22,] 2 2 1  0.5000000       4
[23,] 2 1 4 -0.7559289       5
[24,] 1 4 1  1.0000000      10
[25,] 4 1 4 -1.0000000       8
[26,] 1 4 3  0.7559289       1
[27,] 4 3 2  0.0000000       7
[28,] 3 2 2 -0.5000000       9


но зачем считать абсоютно всю кореляционную матрицу, если нам надо только состояние дел относительно текущей/последней строки я не понимаю

            [,1]        [,2]        [,3]        [,4]       [,5]       [,6]       [,7]
 [1,]  1.0000000 -0.75592895 -0.27735010  0.94491118 -0.1889822 -1.0000000  0.5000000
 [2,] -0.7559289  1.00000000 -0.41931393 -0.92857143  0.7857143  0.7559289 -0.9449112
 [3,] -0.2773501 -0.41931393  1.00000000  0.05241424 -0.8910421  0.2773501  0.6933752
 [4,]  0.9449112 -0.92857143  0.05241424  1.00000000 -0.5000000 -0.9449112  0.7559289
 [5,] -0.1889822  0.78571429 -0.89104211 -0.50000000  1.0000000  0.1889822 -0.9449112
 [6,] -1.0000000  0.75592895  0.27735010 -0.94491118  0.1889822  1.0000000 -0.5000000
 [7,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
 [8,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
 [9,] -0.8660254  0.32732684  0.72057669 -0.65465367 -0.3273268  0.8660254  0.0000000
[10,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[11,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[12,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[13,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[14,] -0.6933752  0.05241424  0.88461538 -0.41931393 -0.5765567  0.6933752  0.2773501
[15,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[16,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[17,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[18,] -0.5000000 -0.18898224  0.97072534 -0.18898224 -0.7559289  0.5000000  0.5000000
[19,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[20,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[21,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[22,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[23,] -0.7559289  0.14285714  0.83862787 -0.50000000 -0.5000000  0.7559289  0.1889822
[24,]  1.0000000 -0.75592895 -0.27735010  0.94491118 -0.1889822 -1.0000000  0.5000000
[25,] -1.0000000  0.75592895  0.27735010 -0.94491118  0.1889822  1.0000000 -0.5000000
[26,]  0.7559289 -1.00000000  0.41931393  0.92857143 -0.7857143 -0.7559289  0.9449112
[27,]  0.0000000  0.65465367 -0.96076892 -0.32732684  0.9819805  0.0000000 -0.8660254
[28,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
            [,8]       [,9]      [,10]      [,11]      [,12]      [,13]       [,14]
 [1,]  0.5000000 -0.8660254  0.5000000  0.5000000 -0.5000000  0.5000000 -0.69337525
 [2,]  0.1889822  0.3273268 -0.9449112  0.1889822  0.9449112  0.1889822  0.05241424
 [3,] -0.9707253  0.7205767  0.6933752 -0.9707253 -0.6933752 -0.9707253  0.88461538
 [4,]  0.1889822 -0.6546537  0.7559289  0.1889822 -0.7559289  0.1889822 -0.41931393
 [5,]  0.7559289 -0.3273268 -0.9449112  0.7559289  0.9449112  0.7559289 -0.57655666
 [6,] -0.5000000  0.8660254 -0.5000000 -0.5000000  0.5000000 -0.5000000  0.69337525
 [7,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
 [8,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
 [9,] -0.8660254  1.0000000  0.0000000 -0.8660254  0.0000000 -0.8660254  0.96076892
[10,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[11,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[12,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[13,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[14,] -0.9707253  0.9607689  0.2773501 -0.9707253 -0.2773501 -0.9707253  1.00000000
[15,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[16,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[17,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[18,] -1.0000000  0.8660254  0.5000000 -1.0000000 -0.5000000 -1.0000000  0.97072534
[19,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[20,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[21,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[22,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[23,] -0.9449112  0.9819805  0.1889822 -0.9449112 -0.1889822 -0.9449112  0.99587059
[24,]  0.5000000 -0.8660254  0.5000000  0.5000000 -0.5000000  0.5000000 -0.69337525
[25,] -0.5000000  0.8660254 -0.5000000 -0.5000000  0.5000000 -0.5000000  0.69337525
[26,] -0.1889822 -0.3273268  0.9449112 -0.1889822 -0.9449112 -0.1889822 -0.05241424
[27,]  0.8660254 -0.5000000 -0.8660254  0.8660254  0.8660254  0.8660254 -0.72057669
[28,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
           [,15]      [,16]      [,17]      [,18]      [,19]      [,20]      [,21]
 [1,]  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000
 [2,] -0.9449112  0.1889822  0.9449112 -0.1889822 -0.9449112  0.1889822  0.9449112
 [3,]  0.6933752 -0.9707253 -0.6933752  0.9707253  0.6933752 -0.9707253 -0.6933752
 [4,]  0.7559289  0.1889822 -0.7559289 -0.1889822  0.7559289  0.1889822 -0.7559289
 [5,] -0.9449112  0.7559289  0.9449112 -0.7559289 -0.9449112  0.7559289  0.9449112
 [6,] -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000
 [7,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
 [8,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
 [9,]  0.0000000 -0.8660254  0.0000000  0.8660254  0.0000000 -0.8660254  0.0000000
[10,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[11,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[12,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[13,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[14,]  0.2773501 -0.9707253 -0.2773501  0.9707253  0.2773501 -0.9707253 -0.2773501
[15,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[16,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[17,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[18,]  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000
[19,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[20,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[21,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[22,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[23,]  0.1889822 -0.9449112 -0.1889822  0.9449112  0.1889822 -0.9449112 -0.1889822
[24,]  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000
[25,] -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000
[26,]  0.9449112 -0.1889822 -0.9449112  0.1889822  0.9449112 -0.1889822 -0.9449112
[27,] -0.8660254  0.8660254  0.8660254 -0.8660254 -0.8660254  0.8660254  0.8660254
[28,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
           [,22]      [,23]      [,24]      [,25]       [,26]      [,27]      [,28]
 [1,]  0.5000000 -0.7559289  1.0000000 -1.0000000  0.75592895  0.0000000 -0.5000000
 [2,]  0.1889822  0.1428571 -0.7559289  0.7559289 -1.00000000  0.6546537  0.9449112
 [3,] -0.9707253  0.8386279 -0.2773501  0.2773501  0.41931393 -0.9607689 -0.6933752
 [4,]  0.1889822 -0.5000000  0.9449112 -0.9449112  0.92857143 -0.3273268 -0.7559289
 [5,]  0.7559289 -0.5000000 -0.1889822  0.1889822 -0.78571429  0.9819805  0.9449112
 [6,] -0.5000000  0.7559289 -1.0000000  1.0000000 -0.75592895  0.0000000  0.5000000
 [7,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
 [8,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
 [9,] -0.8660254  0.9819805 -0.8660254  0.8660254 -0.32732684 -0.5000000  0.0000000
[10,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[11,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[12,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[13,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[14,] -0.9707253  0.9958706 -0.6933752  0.6933752 -0.05241424 -0.7205767 -0.2773501
[15,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[16,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[17,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[18,] -1.0000000  0.9449112 -0.5000000  0.5000000  0.18898224 -0.8660254 -0.5000000
[19,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[20,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[21,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[22,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[23,] -0.9449112  1.0000000 -0.7559289  0.7559289 -0.14285714 -0.6546537 -0.1889822
[24,]  0.5000000 -0.7559289  1.0000000 -1.0000000  0.75592895  0.0000000 -0.5000000
[25,] -0.5000000  0.7559289 -1.0000000  1.0000000 -0.75592895  0.0000000  0.5000000
[26,] -0.1889822 -0.1428571  0.7559289 -0.7559289  1.00000000 -0.6546537 -0.9449112
[27,]  0.8660254 -0.6546537  0.0000000  0.0000000 -0.65465367  1.0000000  0.8660254
[28,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000

В чем тут глубина мысли?

В том что мы сразу все паттерны найдем?, а нам нужны все? или нам нужно то что соответствует текущей ситуации те последнему наблюдению

[Удален]
mytarmailS #:

Есть у нас какие то трех мерные данные 

строка это наблюдение , колонка это признак.

первая строка это типа последние данные

можно посчитать корреляцию с последней строки с каждой

И мы получим этот "рисунок сходства" между последней/текущей строкой и историей

Можно сделать кластеризацию и тоже получить что то подобное


но зачем считать абсоютно всю кореляционную матрицу, если нам надо только состояние дел относительно текущей/последней строки я не понимаю

В чем тут глубина мысли?

В том что мы сразу все паттерны найдем, а нам нужны все или нам нужно то что соответствует текущей ситуации те последнему наблюдению

нет никакого текущего, это просто поиск на истории

потом сортируешь паттерны по своим метрикам, лучшие зашиваешь в бота

Maxim Dmitrievsky #:

нет никакого текущего, это просто поиск на истории

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


Или я не понимаю чего то?

[Удален]
mytarmailS #:

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


Или я не понимаю чего то?

балин тебе все равно надо все просмотреть и выбрать лучшие, чтобы потом на новых данных проверить

#32456
Машинное обучение в трейдинге: теория, модели, практика и алготорговля - Если объем добавок в позицию зависит от текущей просадки, тогда никакие ТС не работают.
Машинное обучение в трейдинге: теория, модели, практика и алготорговля - Если объем добавок в позицию зависит от текущей просадки, тогда никакие ТС не работают.
  • 2023.09.21
  • www.mql5.com
Корреляционная матрица между строками заданных признаков. берется статистика по всем строкам как было в будущем в среднем. в тестере ищем корреляцию текущих значений с эталоном. Но я делаю в питоне и считаю корреляцию сразу для всех возможных пар