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

 
Maxim Dmitrievsky #:

Получилось просто и со вкусом. Все так же обучается 2 модели, без козула. Сначала делается кластеризация по набору признаков небольшой размерности (непример, по волатильности), чтобы определить разные рыночные режимы. Потом обучается мета модель предсказывать кластер (ошибка обучения обычно минимальная получается), а вторая модель обучается торговать только на семплах внутри этого кластера. И так для всех кластеров. Потом можно выбрать.


Забавно, я уже две недели кластеризацию мучаю для листьев. Правда с перерывом в неделю. И, к своему удивлению, обнаружил большую устойчивость смещения вероятности на независимых данных, чем для отдельно взятых листьев.

Сейчас экспериментирую над древовидной последовательностью кластеризации.

 
Maxim Dmitrievsky #:

ой, так лень ) 

Знаю, я уже три статьи начинал писать и на 90% выкидывал все нафиг по разным причинам..
Думаю про четвертую) 
Обучить МО предсказывать будет ТС работать на новых данных или нет
[Удален]  
mytarmailS #:
Знаю, я уже три статьи начинал писать и на 90% выкидывал все нафиг по разным причинам..
Думаю про четвертую) 
Обучить МО предсказывать будет ТС работать на новых данных или нет

Ну статьи допиши, че. Это же для других инфа, кто не в теме. А так почитал и сделал выводы.

Потому что раздел статей забит каким-то шлаком вообще не про трейдинг :)
[Удален]  
Aleksey Vyazmikin #:

Забавно, я уже две недели кластеризацию мучаю для листьев. Правда с перерывом в неделю. И, к своему удивлению, обнаружил большую устойчивость смещения вероятности на независимых данных, чем для отдельно взятых листьев.

Сейчас экспериментирую над древовидной последовательностью кластеризации.

Ну это иерархическая кластеризация вроде бы

 
Maxim Dmitrievsky #:

Ну это иерархическая кластеризация вроде бы

Да, что-то из этой области, я начал делать на базе k-means , потом узнал, что такой подход используется в целом в разных областях. Но, какой пакет позволяет это делать - не знаю. Да и для переноса в терминал удобней будет свой код использовать - не уверен в поддержке ONNX.

 
Aleksey Vyazmikin #:

Да, что-то из этой области, я начал делать на базе k-means , потом узнал, что такой подход используется в целом в разных областях. Но, какой пакет позволяет это делать - не знаю. Да и для переноса в терминал удобней будет свой код использовать - не уверен в поддержке ONNX.

k-means в Алглибе есть в Include\Math\Alglib\dataanalysis.mqh
Но ему лучше данные подавать в нормализованном виде (в одном масштабе). Иначе например изменения в 1000 одних единиц (например объемы) полностью заглушат измения 0,01000 (например цены).

 

еще пару лет и Алексей поймет что все его квантование это корявая попытка сделать обычную кластеризацию )

 
Forester #:

k-means в Алглибе есть в Include\Math\Alglib\dataanalysis.mqh
Но ему лучше данные подавать в нормализованном виде (в одном масштабе). Иначе например изменения в 1000 одних единиц (например объемы) полностью заглушат измения 0,01000 (например цены).

Да, поэтому мне и кажется затея интересной - относительно легко портироваться должна, в теории. Алглиб поддерживает сохранение и применение моделей?

Касаемо нормализации, в целом нормализация нужна, но листья бинарные - проблема отпадает сама собой.

 
Aleksey Vyazmikin #:

Да, поэтому мне и кажется затея интересной - относительно легко портироваться должна, в теории. Алглиб поддерживает сохранение и применение моделей?

Касаемо нормализации, в целом нормализация нужна, но листья бинарные - проблема отпадает сама собой.

//| k-means++ clusterization                                         |
//| INPUT PARAMETERS:                                                |
//|     XY          -   dataset, array [0..NPoints-1,0..NVars-1].    |
//|     NPoints     -   dataset size, NPoints>=K                     |
//|     NVars       -   number of variables, NVars>=1                |
//|     K           -   desired number of clusters, K>=1             |
//|     Restarts    -   number of restarts, Restarts>=1              |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -3, if task is degenerate (number of       |
//|                           distinct points is less than K)        |
//|                     * -1, if incorrect                           |
//|                           NPoints/NFeatures/K/Restarts was passed|
//|                     *  1, if subroutine finished successfully    |
//|     C           -   array[0..NVars-1,0..K-1].matrix whose columns|
//|                     store cluster's centers                      |
//|     XYC         -   array[NPoints], which contains cluster       |
//|                     indexes                                      |

Получите массив C с центрами кластеров, потом по своей новой точке ищете к какому из центров она ближе.

Там еще ниже есть что-то про кластреризацию, может там есть готовая ф-я для прогноза. Разбирайтесь.
 
Forester #:
//| k-means++ clusterization                                         |
//| INPUT PARAMETERS:                                                |
//|     XY          -   dataset, array [0..NPoints-1,0..NVars-1].    |
//|     NPoints     -   dataset size, NPoints>=K                     |
//|     NVars       -   number of variables, NVars>=1                |
//|     K           -   desired number of clusters, K>=1             |
//|     Restarts    -   number of restarts, Restarts>=1              |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -3, if task is degenerate (number of       |
//|                           distinct points is less than K)        |
//|                     * -1, if incorrect                           |
//|                           NPoints/NFeatures/K/Restarts was passed|
//|                     *  1, if subroutine finished successfully    |
//|     C           -   array[0..NVars-1,0..K-1].matrix whose columns|
//|                     store cluster's centers                      |
//|     XYC         -   array[NPoints], which contains cluster       |
//|                     indexes                                      |

Получите массив C с центрами кластеров, потом по своей новой точке ищете к какому из центров она ближе.

Там еще ниже есть что-то про кластреризацию, может там есть готовая ф-я для прогноза. Разбирайтесь.

Я так понимаю, что нужен массив ещё для каждого кластера, в котором значения весов (элементов) центройда - без них не посчитать на новых данный.