Closed Questtt closed 2 years ago
Когда вы добавляете новый тикер с очень короткой историей, теоретически может погибнуть вся популяция.
Обычно, когда я добавляю тикеры, то вызываю для старого портфеля метод add_tickers - в результате будут выведены тикеры (торгуем на бирже, но еще не включенные в портфель), у которых с некоторым запасом есть минимально необходимая история + плюс отбрасываются совсем малоликвидные с точки зрения размера вашего портфеля (если он большой, то отбрасывается больше тикеров). Эти тикеры упорядочиваются по возрастанию корреляции - тикеры в начале списка более удачны с точки зрения потенциала снижения рисков. Тикеры в этом списке относительно безопасно включать в анализ - некоторые модели с очень большым параметром history_days могут погибнуть, но основной костяк сможет работать.
Для оптимизатора подходят только модели с соответствующим набором тикеров, поэтому если вы чего-то поменяли сразу после этого не будет моделей, как эволюция обучит хоть одну рабочую новую модель, они появятся, но их будет мало для адекватной работы. Лучше всего менять тикеры после того, как вы поторговали и больше не собираетесь торговать в этот день - тогда у вас будет время на обучение новых моделей под новый набор, а после 0:45 появятся данные и начнется переобучение старых моделей под новые тикеры, и утром к началу торгов у вас будет какое-то разумное количество моделей актуализированных под новый набор.
Еще лучше это делать вечером в пятницу, особенно если у вас популяция в несколько сотен моделей, так как на ее переобучение вполне могут уйти все выходные.
@WLM1ke Спасибо за пояснения! Еще вопрос по поводу моделей - у меня как-то что-то пошло не так, и вся популяция погибла(осталась только 1 модель, дампы я тогда не делал), я просто взял у товарища его дамп моделей из MongoDB, заимпортировал к себе, и продолжил обучение уже на егомоделях, так же по идее можно делать ? И если так можно делать - нескромная просьба поделиться вашими моделями) У вас же наверняка обучение длится уже большое кол-во времени))
В принципе, да, я как-то тоже человеку высылал свои модели, и он смог их запустить.
В рамках экспериментов недавно загубил свою популяцию, а бэкапы были не сильно совместимы, поэтому пришлось начать с нуля - не думаю, что в текущих условиях моя популяция вам сильно поможет, но если очень хочется, то можете попробовать - это описания моделей без весов, чтобы места меньше занимало и настройки у меня не дефолтные, так что вам веса мои все равно не сильно подойдут. models.json.zip
@WLM1ke Спасибо!
Добрый день. Дано: есть свой файлик yaml, в который решил добавить те тикеры, которые есть в моем портфеле Основной файлик Base,yaml не трогал, лежит там же. 1) При добавлении в файлик нескольких тикеров MCHP-RM: 10 HOOD-RM: 30 SFTL: 76 SPBE: 100 TUSD: 53000
и последующем запуске эволюции сразу лезут ошибки вида DateCheckRequired(timestamp=datetime.datetime(2022, 1, 18, 19, 39, 56, 71760)) 2022-01-17: Шаг эволюции — 2 LLH - (2.4163, 2.5501, 2.6234) RET - (-0.4540, -0.0710, 0.4886) Организмов - 85 / Максимум оценок - 43 / Поколений - 28 Scale - 100.00% / Jump - 100.00%
Родитель: LLH — 2.4163: 2.7493, 2.6579, 2.4699, 2.4052, 2.7301, 2.7596, 2.7478, 2.7000, 2.6327, 2.6701, 2.6168, 2.5104, 2.5461, 2.5803, 2.5389, 2.5670, 2.6316, 2.6467, 2.3963, 2.4169, 2.4133, 2.1570, 2.0501, 1.8055, 2.1613, 2.2694, 2.2799, 2.3627, 2.3293, 2.3727, 2.4316, 2.2940, 2.3144, 2.3029, 2.1684, 2.3228, 2.2833, 2.4085, 2.1471, 2.2747, 2.4163, 2.5512, 2.5370 RET — -0.0903: 0.7476, 0.9777, 0.8330, 0.9740, 0.8815, -0.5283, -0.8624, 0.2988, 0.1168, -0.0903, -0.6548, -0.4354, -0.5218, -0.3202, -0.2633, -0.2295, 0.1301, -0.2642, -0.2813, -0.1566, -0.3569, -0.5271, -0.6825, -0.5586, -0.8170, -0.9328, 0.1180, 0.8336, 0.0467, 0.5420, 0.9018, 0.6491, 0.0775, 0.1866, 0.0258, 0.3128, 0.1574, -0.1091, -0.1108, -0.4889, -0.1940, 0.7710, 1.3757 Timer — 0:03:22 / Scores - 43 Data: {'batch_size': 544.1814490060337, 'history_days': 126.37214308665581, 'ticker_on': -13491.846639888232, 'day_of_year_on': -0.601958378825853, 'day_of_period_on': 29.320250898279127, 'prices_on': 219.3078601523154, 'dividends_on': -94.03392082356538, 'turnover_on': -103.31561921851228, 'average_turnover_on': 37.584941661289825, 'rvi_on': 8.402798891568866, 'mcftrr_on': -0.2789684357328445, 'imoex_on': -24.26899966300151, 'ticker_type_on': 694.8571667119032, 'usd_on': 47.56922801593863, 'open_on': -132.18096255162706, 'high_on': 2.4895491290099665, 'low_on': 114.84474608037817, 'meogtrr_on': 2.095715318698276} Model: {'start_bn': -421.3330993824715, 'kernels': 3.719762867174905, 'sub_blocks': 1.9520882594366002, 'gate_channels': 8.440372214039686, 'residual_channels': 5.875438269756684, 'skip_channels': 7.40759706459868, 'end_channels': 7.62571004461237, 'mixture_size': 10.523801895289735} Optimizer: {'betas': 0.9990115004885081, 'eps': 7.955905503913788e-05, 'weight_decay': 0.005508104412380203} Scheduler: {'max_lr': 0.009869463663043398, 'epochs': 2.2468356409415797, 'pct_start': 0.35004594173121356, 'anneal_strategy': -0.9423892531093931, 'base_momentum': 0.8445112716437683, 'max_momentum': 0.9234711039553989, 'div_factor': 295.2147414200126, 'final_div_factor': 44610292.672476746} Utility: {'risk_aversion': 0.9999991339442165, 'error_tolerance': 5.0221981632873055e-09}
LLH worst difference: median - -0.0598, upper - 0.0321, max - 0.0907 RET worst difference: median - -0.1266, upper - 0.3109, max - 0.5497 Margin - 34.95%, Time excess - 0.00%
Претендент - новый организм: LLH — - RET — - Timer — 0:00:00 / Scores - 0 Data: {'batch_size': 546.0288263569632, 'history_days': 70.69244290473151, 'ticker_on': -539390685.840478, 'day_of_year_on': -607495.4801111785, 'day_of_period_on': -8929092.988403583, 'prices_on': 860.7470191170048, 'dividends_on': -9067.985229056168, 'turnover_on': -1622023639.9564042, 'average_turnover_on': -255887899.8858772, 'rvi_on': -63315.11569619761, 'mcftrr_on': 6306.1632638281135, 'imoex_on': 1343119.0439553764, 'ticker_type_on': -3195745.751872108, 'usd_on': 9714512.01830391, 'open_on': -517211.8643529856, 'high_on': -207.54076891507916, 'low_on': -4808746.602419375, 'meogtrr_on': -351584.44049646135} Model: {'start_bn': 949674.8117367319, 'kernels': 52.600334602229125, 'sub_blocks': 2.153565411706507, 'gate_channels': 8.347306285275819, 'residual_channels': 10.527285597153835, 'skip_channels': 2484.763325765774, 'end_channels': 4.157612469882803, 'mixture_size': 8.498520495937893} Optimizer: {'betas': 0.9978341459548834, 'eps': 1.1944942001621881e-05, 'weight_decay': 0.13978151294114266} Scheduler: {'max_lr': 0.006932698487612888, 'epochs': 1.63914976243321, 'pct_start': 0.38025769596284015, 'anneal_strategy': -423319.59884408774, 'base_momentum': 0.6350220928447462, 'max_momentum': 0.886668315656381, 'div_factor': 499938.9681106344, 'final_div_factor': 5948204855146.895} Utility: {'risk_aversion': 1.000022100491393, 'error_tolerance': 9.250173338794867e-06}
DateCheckRequired(timestamp=datetime.datetime(2022, 1, 18, 19, 39, 58, 394184)) Удаляю - Слишком большая длинна истории - 70
И такое сообщение постоянно выходит Причем если удалить данные тикеры - сразу становится все ок - при длине истории больше 130 модель эволюционирует без проблем
2) И вопрос про удаление тикеров - оптимизация мне настойчиво пишет купить тикер STSBP, которым мой брокер не торгует, я хотел бы исключить данный тикер из эволюции, но в этом случае при запуске эволюции в пятницу днем получал ошибку, что такой-то тикер не найден. UPD: Хотя сейчас запустилось после удаления данного тикера. Значит, удалять тикеры можно делать только вечером ?
3) Есть ли смысл обмениваться моделями ? У меня в один момент численность популяции снизилась до 1 модели, я попросил товарища скинуть бэкап своих моделей, и загрузил их к себе, и уже на основе их продолжаю эволюцию