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

 
mytarmailS #:

Про думать....

Вопрос зачем перебирать все варианты кореляции признаков от 0,1...0,2...0,7...0,8  тем саммым увеличивая и без того огромный масив работы для алгоритма?

даже сгенерированый случайный шум может чисто случайно коррелировать с предиктором и на 0,6 и на 0,8 , редко больше ...

Из этого следует что глупо брать порог корреляции меньше 0,8  , но ты решыл делать полный перебор что говорит о том что ты вообще не думаешь что делаешь..

Я скажу лишь, что провожу эксперименты и делаю выводы.

mytarmailS #:

Очевидно.. ))) ето писец... А в чем очевидность то стесняюсь просить?  какой алгоритм расшыфровки я должен был применить чтобы это стало очевидно?  

Исходя из контекста обсуждения это очевидно.

mytarmailS #:

Это не мой подход, а твой , и он изначально был ущебрный, и тебе об этом говорили трое человек

Какой Ваш подход? Какой мой подход? Я не понимаю о чём глобально речь.

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

 
Maxim Dmitrievsky #:

память - это НС с весами обученная, ты на каждом шаге ее дообучаешь, немного двигаешь веса.. не намного, поэтому запаздывание

и в терминал это хрен перенесешь потом

Пробовал, нихрена не работает, все опять же упирается в признаки. 


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

Для работы тестера надо подготовить датафрейм с столбцами ['open', 'spread], а также в signal кинуть numpy массив формата х (n,2) с прогнозами вероятностями бай/селл   на каждый новый бар. Тестер работает из цикла, ниже представлен пример инициализации использования тестера

symbols = ['EURUSD','GBPUSD']
points = [1 / mt5.symbol_info(s).point for s in symbols]

trade_agent = Agent()
for s, p in zip(symbols, points):
        trade_agent.create_symbol(s, p,max_positions=6)

for index, row in dataset.iterrows():
        sig = signal[index]
        prices = list(row.filter(like='open'))
        spreads = list(row.filter(like='spread'))

        if index != len(dataset) - 1:
            trade_agent.refresh(prices, [sig], spreads)
        else:
            trade_agent.stop = True

логику торговли и лот можно корректировать в методе transcript_sig объекта Symbol

    def transcript_sig(self,sig):
        act = 0
        lot = 1
        revers = 0
        if len(sig)==4:
            pass
        else:
            act = sig

        if revers<=0.5:
            if np.argmax(act) == 0:
                return 'buy',lot
            if np.argmax(act) == 1:
                return 'sell',lot
        else:
            if np.argmax(act) == 0:
                return 'sell',lot
            if np.argmax(act) == 1:
                return 'buy',lot


        return self.last_action,lot


Результаты теста лежат в словаре  trade_history_data, для общего теста и  trade_symbol_data каждого  символа. 

        self.trade_history_data = {'step': [],
                                   'acc_profit': [],
                                   'acc_balance': [],
                                   'acc_equity': [],
                                   'lots_open': [],
                                   'R2_balance': [0,0,0,0]}

там списки, если кто хочет что то оптимизировать или менять -  велком)

Файлы:
Tester.py  12 kb
 

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

?? Где я такое утверждал
 

мне одному слышится почти одинаковое звучание слов "алготорговля" и "алкоторговля"?

как бэ заставляет задумацо

 

дата сет 


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

последняя строка  - целевая

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


на форесте без всякого тюнинга получаю на новых данных

Confusion Matrix and Statistics

          Reference
Prediction   -1    0    1
        -1 2428  453   23
        0   597 3295  696
        1    14  448 2046

Overall Statistics
                                         
               Accuracy : 0.7769         
                 95% CI : (0.7686, 0.785)
    No Information Rate : 0.4196         
    P-Value [Acc > NIR] : < 2.2e-16      
                                         
                  Kappa : 0.6567         
                                         
 Mcnemar's Test P-Value : 2.565e-16      

Statistics by Class:

                     Class: -1 Class: 0 Class: 1
Sensitivity             0.7989   0.7853   0.7400
Specificity             0.9316   0.7772   0.9361
Pos Pred Value          0.8361   0.7182   0.8158
Neg Pred Value          0.9139   0.8335   0.9040
Prevalence              0.3039   0.4196   0.2765
Detection Rate          0.2428   0.3295   0.2046
Detection Prevalence    0.2904   0.4588   0.2508
Balanced Accuracy       0.8653   0.7812   0.8381

на ХГбусте с новыми фичами получал Акураси 0,83


Интересно можно ли достичь 0,9 Акураси  ?

Файлы:
dat.zip  4562 kb
 
mytarmailS #:
?? Где я такое утверждал

Тут.

 
Aleksey Vyazmikin #:

Тут.

Там был разговор о дизбалансе классов,  а тут про корреляции разговор... 
Эх ладно все..  Забыли, проехали...  Нету ни сил ни желания жевать жованое.. 
 
mytarmailS #:
Там был разговор о дизбалансе классов,  а тут про корреляции разговор... 
Эх ладно все..  Забыли, проехали...  Нету ни сил ни желания жевать жованое.. 

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

Корреляционная фильтрация - один из простых способов сдвинуть обучение с мертвой точки.
 
mytarmailS #:

дата сет 

Что никто даже не трогал? (
 
iwelimorn #:

Пробовал, нихрена не работает, все опять же упирается в признаки. 


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

Для работы тестера надо подготовить датафрейм с столбцами ['open', 'spread], а также в signal кинуть numpy массив формата х (n,2) с прогнозами вероятностями бай/селл   на каждый новый бар. Тестер работает из цикла, ниже представлен пример инициализации использования тестера

логику торговли и лот можно корректировать в методе transcript_sig объекта Symbol


Результаты теста лежат в словаре  trade_history_data, для общего теста и  trade_symbol_data каждого  символа. 

там списки, если кто хочет что то оптимизировать или менять -  велком)

Там нужно какие-нибудь веселые вознаграждения придумывать, чтобы захватить закономерности. Иначе будет молотить до псевдооптимума любой ф-ии
Причина обращения: