StarkovDV

13

подписчиков

0

подписок

https://github.com/dstark713-oss

Не является индивидуальной инвестиционной рекомендацией

StarkovDV
StarkovDV

вчера в 20:34

10.11.2026 Фин.рез.(дэйли): -0,14% Бенчмарк (SBMX): -0,73% Время фиксации: 19:53 (МСК) Аллокация: ticker weight IMOEXF 0.0529 GMKN 0.0529 SBER 0.0529 SOL 0.0529 XRP 0.0529 OZON 0.0529 GAZP 0.0529 Вылетели LKOH и DOMRF - заменены на крипто Общий вес порезан риск-оверлеем Коммит Модель для ранжирования Кэтбуст дает симметричные деревья ограничение сложности и риска подгонки под шум лиф-вайс на слабом сигнале рискует оверфитнуть Таргет Ранг по RS на регрессоре сохраняет непрерывность информации на полном пуле инструментов Ети-ранк дополнительно для проверки эффективности оценки релевантности И ансамбль из пяти разных сидов для проверки зависимости от конкретного запуска Признаки в процентильные ранги для относительных, а не абсолютных значений Глубина = 3 Ограничение сложности на слабом сигнале До 1500 итераций - надо найти плато WF Расширяющееся окно IS only Пурж 21 CatBoostRegressor aggregate: IC=+0.0720, NDCG@10=0.483 TOP10 mean RS +0.0154 SEED ENSEMBLE (5 seeds) aggregate: IC=+0.0739, NDCG@10=0.484 TOP10 mean RS +0.0150 YetiRank aggregate: IC=+0.0719, NDCG@10=0.500 TOP10 mean RS +0.0155 NDCG@10 слабый на всех GRID best config: {'depth': 4, 'l2_leaf_reg': 100, 'random_strength': 3, 'learning_rate': 0.03}, IC=+0.0763 ЕтиРанк на лучшем конфиге без ансамбля сидов. mean IC: +0.0698 NDCG@10: 0.500 TOP10 mean RS: +0.0147 hit_rate: 69.1% Оверфитнулся Возврат к регрессору. Тест итераций 1500 с шагом 100 на 6 фолдов - дорого режу до 1К. mean IC: +0.0759 NDCG@10: 0.486 TOP10 mean RS: +0.0164 hit_rate: 73.3% median best_iter: 300 Выхода на плато в начале, после 500 деградация Лучшая область 200-300 Лучшее значение 300 $IMOEXF $GMKN $SBER $S3Z6 $XRX6 $OZON $GAZP #машинное_обучение #машинноеобучение #алготрейдинг
1
StarkovDV
StarkovDV

9 ноября в 19:54

09.11.2026 Фин.рез. дэйли: +0,09% Аллокация сегодня: ticker weight IMOEXF 0.0816 SBER 0.0816 GMKN 0.0816 GAZP 0.0816 OZON 0.0816 LKOH 0.0816 DOMRF 0.0816 По 8,16% 7 имен. Аллокационная модель фикс. База: Sharpe 1.4497 Sortino 2.2308 CAGR 0.3397 MDD -0.2532 Calmar 1.3415 Vol 0.2178 С риск-оверлеем: Sharpe 1.3313 Sortino 2.0417 CAGR 0.1364 MDD -0.1282 Calmar 1.0637 Vol 0.0998 Загрузка с риск-контролем. Необходима валидация модели на живой дистанции. Хотя бы 3 месяца, в идеале 6. После можно смотреть в сторону повышения агрессии. Проект. Генетика на поиск фичей. преобразования одной переменной fitness падает от поколения к поколению gpl деградирует схлопнулась в локальный оптимум можно переписать но скрипт прходит очень долго смок проходит нормально но реальный перебор длится вечность мультпроцессинг в gp (-1) поставлен векторизация, где возможно, сделана переписать медленные циклы на плюсах - не стоит того, чтобы выбрать фичи чинить или ждать еще одну вечноть - дорого по времени быстрее по старинке с LLM-генерацией 413 штук исходник Выбор по IC и IR на первой фазе. Втарая фаза отсев по ортогональности. Работа пачками по полтинику до набора минимального пула под модель. Хватило двух прогонов. Всего 16 ортогональных признаков. Тесты: Утечки: чисто Корреляции: 1 пара дубль IS Стабильность: нет стабильности Фолды 1 и 3,4, 5 ок Фолды 2 и 6 размазало - IC 0.021 и 0.012 соответственно Режимная зависимость: нет фич, которые теряют знак во всех режимах, но есть перевороты Выбросы: ок, устойчиво Покрытие: нет концентрации, сигнал распределен, ок Негативный контроль: пройден Пертурбация (тест проходит вечную вечность, выношу результат отдельно): пройдена, чисто системного схлопывания нет Посе чистки остаток 11 признаков. $IMOEXF $SBER $GMKN $GAZP $OZON $LKOH $DOMRF #машинное_обучение #машинноеобучение #алготрейдинг
1
2
StarkovDV
StarkovDV

8 ноября в 19:07

08.11.2026 Проверка: устройство хвостов долгие и короткие свойства динамика риска меняется риск или распределение доходностей tail_ratio_1pct = 1.368 bowley_skew = −0.009 α 2.0–2.7 α растёт с порогом skew std = 1.40, kurt std = 12.1 ret: |ACF(1)| = 0.071 |ACF(10)| = 0.017 abs: |ACF(1)| = 0.33 |ACF(10)| = 0.10 sq: |ACF(1)| = 0.22 |ACF(10)| = 0.024 ret: decay_lag = 2 ACF(20) = 0.009 abs: decay_lag = 19 ACF(20) = 0.066 VR < 1 на всех горизонтах, падает до 0.797 на 60 днях Hurst = 0.621, std по окнам = 0.025 GARCH persist = 0.9877 GJR gamma = +0.0444 EGARCH gamma = −0.0192 IMOEX: persist = [0.975, 0.937, 0.979] IMOEX: std ratio = 4.76 skew: [−8.99 .. +2.38] kurt max = 111.7 10% акций имеют p < 0.05 правый хвост длиннее левого средняя часть распределения симметрична хвосты тяжёлые экстремальные хвосты тяжелее, чем умеренные экстремумы хвост не однороден асимметрия и эксцесс меняются во времени доходности почти непредсказуемы вола предсказуема абсолютная доходность более информативна, чем квадрат предиктить завтрашнюю доходность по вчерашней почти бесполезно вола помнит прошлое гораздо дольше слабая персистентность свойство сохраняется во времени GARCH-модели применимы GARCH-параметры не константны рынок неоднороден во времени вола, асимметрия и эксцесс меняются в разы средняя доходность стабильна, нет сдвигов рынок меняет не уровень доходности, а уровень риска волатильность и асимметрия связаны PCA PC1: 41.6% PC2: 30.4% PC3: 16.3% PC4: 5.6% PC5: 2.4% 3 компоненты описывают 88% дисперсии 4 компоненты 94% PC1 (41.6%) downside_vol +0.383 acf_abs_1 +0.333 kurt +0.331 vol_asym +0.313 std +0.306 PC2 (30.4%) hurst +0.379 vr_5 +0.364 vr_20 +0.327 upside_vol +0.316 mean +0.306 PC3 (16.3%) tail_ratio +0.536 vr_5 −0.344 vr_20 −0.305 vol_asym −0.301 Кластеры через KMeans Cluster 0 89% времени std = 0.0235 skew = +0.77 kurt = 6.6 acf_abs_1 = 0.21 vr_5 = 0.88 hurst = 0.579 vol_asym = 0.74 Cluster 1 11% времени std = 0.0364 skew = +0.08 kurt = 22.2 acf_abs_1 = 0.37 vr_5 = 0.78 hurst = 0.595 vol_asym = 0.91 волатильность выше, хвосты тяжелее, память сильнее, асимметрия исчезает не левоскошенный, а симметрично хаотичный P(остаться в Cluster 0) = 0.997 P(остаться в Cluster 1) = 0.980 P(из 0 в 1) = 0.003 P(из 1 в 0) = 0.020 Cluster 0: mean = 199 окон, max = 354 Cluster 1: mean = 50, max = 50 Кластеры залипают Переходы редкие асимметричные возможен артефакт перекрытия в цифрах Но направление вывода не меняется Ведущие и запаздывающие изменения skew отстаёт от std на 1 окно kurt отстаёт на 1 окно Вола растёт раньше, чем хвосты тяжелеют Сильная связь corr = +0.719 hurst опережает std на 6 окон Первой меняется персистентность Потом вола Затем хвосты Последней ассиметрия Кластеры через KMeans k=3,4,5 подрежимы k=3 Cluster 0 std=0.021, kurt=5.9, vr5=0.87, hurst=0.57 Cluster 1 std=0.036, kurt=22.2, acf_abs=0.37 Cluster 2 std=0.027, skew=+0.84, vr5=0.99 k=4 добавляет Cluster 0 std=0.032, skew=+1.77 Cluster 3 std=0.027, vr5=1.01 k=5 silhouette падает (0.424) оверфит Спектральный анализ не показывает реальных циклов ряд слишком короткий перекрытие не искажает уровень признаков, только устойчивость Silhouette: overlap 0.537, non-overlap 0.463. Этого хватит для построения модели. НО. Это модель только для риск-контроля и сайзинга. Она не отвечает какие ТОП10 купить. Она ответит только на вопрос "сколько грузить в риск". Нужен EDA для поиска значимых закономерностей кросс-секционного распределения. Winsorized (1%/99%) mean = +0.010, median = −0.007, std = 0.116 skew = +1.82, kurt = +6.0 Большинство акций проигрывают IMOEX редкие выигрыши тянут среднее вверх кластеров нет PC1 = 9.1% Rank autocorr на лаге 20 = 0.022 нет персистентной альфы модель должна переранжировать каждые 20 дней top-20% persistence = 0.259 26% лидеров остаются в top-20 через 20 дней Условное распределение vol_60 U-образное Нужна нелинейная модель. #алготрейдинг #машинноеобучение #машинное_обучение
1
StarkovDV
StarkovDV

7 ноября в 11:49

07.11.2026 Старт нового проекта. Задача - построить ML-пайплайн, превосходящий бенчмарки по доходности и MDD одновременно. Бенчмарки: MCFTR MCFTR/RGBITR 50/50 RGBITR использование только акций Живая валидация 01.01.2027 - 30.06.2027 Дневные бары. benchmark MCFTR_100 CAGR 0.1211 MDD -0.7357 VOL 0.2973 Sharpe 0.5352 Sortino 0.6419 Calmar 0.1646 Turnover 0.0000 RGBITR_100 CAGR 0.0829 MDD -0.2691 VOL 0.0846 Sharpe 0.9847 Sortino 0.9408 Calmar 0.3082 Turnover 0.0000 MIX_50_50 CAGR 0.1115 MDD -0.4846 VOL 0.1616 Sharpe 0.7365 Sortino 0.8446 Calmar 0.2301 Turnover 0.1677 Датасет акций В базе: 213 тикеров, 484694 строк Источник: ISS Аудит данных: GAZC 5 2014-12-17 2023-11-30 GAZT 4 2019-12-02 2023-11-30 GAZS 3 2015-02-16 2023-11-30 Мусор - снести Выбросы: Жёсткие выбросы (|ret| > 100%): 10 ticker date close ret AFKS 2014-12-18 13.6300 1.062027 EUTR 2026-07-20 51.0500 1.017787 IRAO 2015-01-20 0.7641 106.317416 LPSB 2014-12-15 3.3500 1.093750 LPSB 2015-05-08 8.9600 2.829060 LPSB 2024-12-09 63.9000 1.180887 PHOR 2013-08-15 1371.8000 1.198750 PRFN 2023-07-19 4.4100 2.178378 USBN 2015-11-05 0.0850 1.522255 VTBR 2024-07-15 92.9500 4662.823382 Удалено баров: 10 Мягкие выбросы (30% < |ret| <= 100%): 885 Помечено в outliers: 885 Ретурны жестких выбросов на NaN Для корреляций чистый IMOEX Чистый RGBI GOLD BRENT И CNYRUB_TOM Сплит IS/VAL 80/20 Все дальнейшие действия только на IS куске EDA Skew = +1.87 Kurt = 26.5 JB p < 0.05 у 100% тикеров 1.71% >3σ, 0.5% — >5σ Hill α в районе 2.2 Mean excess q95 = 4.4% |ACF(1)| = 0.071 VR(5) = 0.922 VR(20) = 0.865 Variance Ratio < 1 Ljung-Box p < 0.05 у 84% Runs test |z| > 1.96 у 62% ARCH-LM p < 0.05 у 98% vol_asym = 0.682 ADF p < 0.05 у 100% KPSS p < 0.05 у 10.65% ADF и KPSS согласны (стационарно) у 89.35% ADF и KPSS согласны (нестационарно) у 0% Hurst R/S = 0.594 DFA = 0.600 Hurst |ret| = 0.722 IMOEX: median corr = +0.28, у 46% акций |corr| > 0.3 RGBI: median corr = +0.19, у 26% |corr| > 0.3 GOLD: median corr = -0.08 BRENT: median corr = +0.05 CNYRUB_TOM: median corr = -0.13 медиана R квадрата = 0.092 beta_IMOEX median = +0.48 beta_RGBI median = +0.46 beta_GOLD, beta_BRENT почти нулевые beta_CNYRUB_TOM median = -0.068 данные стаститстически не нормальные. Любая модель, которая предполагает нормальность, будет недооценивать риск. хвосты настолько тяжёлые, что стандартные риск-метрики неприменимы слабый мин-реверс GARCH-модели применимы асимметрия волатильности у акций нестандартная доходности стационарны, но неоднородны во времени Доходности имеют слабую персистентность Волатильность имеет сильную долгую память Модели, которые предсказывают волатильность будут работать лучше IMOEX и RGBI главные факторы для акций факторная модель слабая большая часть движения акций идиосинкратическая #машинное_обучение #машинноеобучение #алготрейдинг
1
StarkovDV
StarkovDV

6 ноября в 14:55

06.11.2026 Дэйли фин.рез: +0,24 Аллокация: LKOH 0.0815 SBER 0.0815 GMKN 0.0815 IMOEX 0.0815 GAZP 0.0815 Набор по чистой методичке "Сбер, Газпром, Лукойл и ГМК". Еще и сверху IMOEX. Хуже и забавнее не придумать. Ансамбль блен, две ML, а аллокация ... All tickers by score: LKOH p_tp=0.2227 p_sl=0.3195 score=0.1515 SBER p_tp=0.2082 p_sl=0.3246 score=0.1406 GMKN p_tp=0.2072 p_sl=0.3318 score=0.1384 IMOEX_CONT p_tp=0.1974 p_sl=0.3081 score=0.1366 GAZP p_tp=0.1940 p_sl=0.2992 score=0.1359 ROSN p_tp=0.2069 p_sl=0.3863 score=0.1270 CHMF p_tp=0.1834 p_sl=0.3231 score=0.1241 OZON p_tp=0.1903 p_sl=0.3605 score=0.1217 YDEX p_tp=0.1957 p_sl=0.3872 score=0.1199 SOL p_tp=0.1926 p_sl=0.3785 score=0.1197 MOEX p_tp=0.1712 p_sl=0.3059 score=0.1188 X5 p_tp=0.1642 p_sl=0.2898 score=0.1166 AFLT p_tp=0.1622 p_sl=0.2849 score=0.1160 XRP p_tp=0.1692 p_sl=0.3694 score=0.1067 DOMRF p_tp=0.1524 p_sl=0.3148 score=0.1044 CNYRUB_TOM p_tp=0.1694 p_sl=0.3873 score=0.1038 ALRS p_tp=0.1314 p_sl=0.2621 score=0.0970 NVTK p_tp=0.1312 p_sl=0.2638 score=0.0966 SILVER p_tp=0.1425 p_sl=0.3279 score=0.0958 RTKM p_tp=0.1314 p_sl=0.2729 score=0.0956 BTC p_tp=0.1493 p_sl=0.3889 score=0.0912 NASDAQ100 p_tp=0.1494 p_sl=0.4165 score=0.0872 GLDRUB_TOM p_tp=0.1153 p_sl=0.2881 score=0.0821 RAGR p_tp=0.1334 p_sl=0.3988 score=0.0802 COPPER p_tp=0.1504 p_sl=0.4710 score=0.0795 BRENT p_tp=0.1039 p_sl=0.3032 score=0.0724 HH_GAS p_tp=0.0950 p_sl=0.2506 score=0.0712 $SBER $LKOH $GAZP $GMKN $IMOEXF #машинное_обучение #машинноеобучение #алготрейдинг
1
2
StarkovDV
StarkovDV

5 ноября в 19:48

05.11.2026 Финрез (дэйли) +0,26 Аллокация ticker w_final CNYRUB_TOM 0.0543 SBER 0.0543 DOMRF 0.0543 LKOH 0.0543 MOEX 0.0543 ROSN 0.0543 GMKN 0.0543 IMOEX 0.0543 метрики: AUC: 0.5826 IC daily: mean=+0.0158 NDCG@5: mean=+0.2255 Sharpe: 0.9754 Sortino: 1.2364 CAGR: 0.1712 MDD: -0.2627 Calmar: 0.6518 Vol(ann): 0.1784 Model: CatBoost 50/2/lr=0.03/l2=20 Target: TP-first 1.5σ/1.0σ Purge/Embargo: 10/10 Portfolio: TOP-5, weight 1/5, daily rebalance проблемы. IC daily: mean=+0.0158 std=0.3670 Шум NDCG@5: mean=+0.2255 ТОП5 чуть лучше рандомного выбора мусорные фичи надо пересобирать. Выкидывать всё, что айси ниже 0,02 Диагностика pos_rate = 0.1638, TP 16.4%, SL 28.9%, TIMEOUT 54.7% Target — корректен. Permutation importance realized_vol_20 +0.0511 trend_efficiency_20 +0.0111 rsi_14 +0.0050 kurtosis_60 +0.0013 parkinson_vol_20 +0.0007 max_drawdown_60 +0.0001 linear_slope_tstat_60 -0.0001 high_low_range_20 -0.0014 return_60 -0.0013 realized_vol_60 -0.0026 return_20 -0.0026 избыточно AUC по фолдам: от 0.5187 до 0.7297 Нестабильно AUC: 0.5826 PR-AUC: 0.2095 (prev 0.1654, модель лучше случайного) LogLoss: 0.4624 (prev baseline 0.4485) Brier: 0.1427 (prev baseline 0.1380) p_tp std: 0.0211 Модель недообучена? Пересобирка фич. Дубли убрать. К оставшимся ортогональный пак Значение каждой фичи для таргета. Дополнительно связь с доходностью на горизонте. Далее пересобрать пул признаков и два прогона - на таком же обучении. И на более глубоком. МЕТРИКИ AUC 0.6182 PR-AUC 0.2254 LogLoss 0.4370 Brier 0.1350 IC +0.0157 Sharpe 0.8350 Sortino 1.0835 CAGR 0.1659 MDD -0.2822 Calmar 0.5878 Vol 0.2103 Модель доучилась. уровень шума ниже. Ансамбль. Базовая на TP Вторая на SL Параметры одинаковые AUC: 0.5728 Корреляция с базовой daily Spearman: mean=+0.4925 Ортогональность есть Ансамблирование Score p_tp*(1-p_sl) Sharpe 1.1546 Sortino 1.7721 CAGR 0.3249 MDD -0.3261 Calmar 0.9965 Просадка выше целевой Риск оверлей к целевой MDD Sharpe 1.1918 Sortino 1.7404 CAGR 0.1312 MDD -0.1553 Calmar 0.8449 Vol 0.1084 $CNYRUBF $SBER $DOMRF $LKOH $MOEX $ROSN $GMKN $IMOEXF #машинное_обучение #машинноеобучение
1
StarkovDV
StarkovDV

5 ноября в 5:35

04.11.2026 Вчерашняя ачивка. Аллокация без изменений. Бейз-модель. [ML metrics] AUC: 0.5761 IC (daily): mean=0.0220 std=0.3683 IR=0.0597 n_days=3770 NDCG@8: mean=0.3412 n_days=3227 [portfolio] TOP-8 by P(TP), H=5d holding, weight 1/H per active position, cost=0 days: 3856 Sharpe: 1.1073 Sortino: 1.4512 CAGR: 0.2855 MDD: -0.4819 Calmar: 0.5924 Vol(ann): 0.2562 total_ret: 45.6399 [benchmark IMOEX] Sharpe: 0.2950 CAGR: 0.0412 MDD: -0.5529 [fixation] (N, history_start, asof) N (universe): 26 history_start: 2011-06-22 asof: 2026-10-30 WF pretrain: 3y retrain=6m purge=5 embargo=5 model: CatBoost 50/2/lr=0.03/l2=20 frame: {'n_features': 14, 'n_positions': 8, 'horizon': 5, 'n_models': 1} features: ['return_5', 'return_20', 'return_60', 'trend_efficiency_20', 'linear_slope_tstat_60', 'rsi_14', 'adx_14', 'realized_vol_20', 'realized_vol_60', 'parkinson_vol_20', 'high_low_range_20', 'max_drawdown_60', 'skewness_60', 'kurtosis_60'] barriers: TP=1.5σ SL=1.0σ модель че то понимает. это видно из AUC. Этого не достаточно, чтобы хорошо торговать - это видно из Calmar Результат логичен и соответствует метрикам. несколько проблем - сама постановка таргета как бинарный исход. Модели плевать - сколько заработает. Модель смотрит заработает или нет. И уровень пробабилити. То есть уверенность не в сайзе роста. А в том, что вырастет. То есть модель ведет себя корректно, правильно? Правильно. Ей не сказали заработай. Ей сказали вырастет или нет? Она права в 57% случаев. На рыночном шуме - это хорошо. То есть. Проблема 1) Реализация таргета 2) Сам по себе таргет 3) Недостаточность информации 4) Фичи - видно что модель подстроилась под таргет - что она делает - у нее 1,5 сигмы тейка. она смотрит на сколько актив валовый и понимает хватит ли ему амплитуды каснуться тейка. Это абьюз дырявой постановки задачи. Минмимальные проверки: Соответствие пробабилити модели фин.резу [1.5] economic consistency: p_tp vs realized_ret: rho=+0.0257 p=8.913e-12 p_tp vs MFE: rho=-0.2272 p=0.000e+00 p_tp vs MAE: rho=-0.2619 p=0.000e+00 Связи пробабилити модели с фин.резом нет. Модель умеет только определять вероятность TP. Добавляю регрессор. Sharpe: 0.8770 Sortino: 1.1703 CAGR: 0.2727 MDD: -0.5898 Calmar: 0.4623 Vol(ann): 0.3401 IC daily: mean=+0.0108 std=0.3638 IR=+0.0296 Сигнала нет Удачно попадает в бету Шум. Классификатор как есть. С наложением риск-контроля. CAGR 0.1584 MDD -0.1268 Calmar 1.2496 Vol 0.1203 Пока так. #машинное_обучение #машинноеобучение #алготрейдинг
1
StarkovDV
StarkovDV

3 ноября в 17:12

03.11.2026 Аллокацию размотало на 1,15% в минус. XGB EV_IC_spearman: 0.014959837236464863 EV_IC_pearson: 0.010994147501980172 pos_ev_share: 0.4906893848634098 CAGR 0.158944 Vol 0.145482 Sharpe 1.086825 Sortino 1.450074 Calmar 0.527048 MDD -0.301573 Cигнал слабый По годам плохо ExtraTreesRegressor IC_spearman_mean 0.010002 IC_spearman_median 0.009504 IC_pearson_mean 0.018274 MAE 0.047818 RMSE 0.08137 top4_precision_mean 0.503417 top4_fwd_ret_mean 0.010121 CAGR 0.321378 Vol 0.314647 Sharpe 1.042337 Sortino 1.390006 Calmar 0.607859 MDD -0.528705 сигнал очень слабый. погранично с шумом. top4_precision чуть выше случайного. Интересно заходить через не очень шумный таргет. RS ранкинг? Но размотает, модели будет плевать, если рынок летит в ад, она просто выберет тех, кто летит медленнее (и будет права!). Тогда. Нужно выбрать то. Что не размотает. Но то, что устойчиво. И то, что не будет шуметь выбросами. А если и будут выбросы (а они будут) - чтобы они делали модель аккуратнее, а не агрессивнее Тогда. Просдка от цены входа. LGB NDCG@7_mean: 0.6279361407287756 IC_spearman_mae_mean: 0.17063681144336224 IC_spearman_mae_median: 0.18238231517460746 CAGR 0.241861 Vol 0.317170 Sharpe 0.841453 S ortino 1.000537 Calmar 0.420496 MDD -0.575179 ML-метрики ТОП, просадка - какашка. XGB базовая загрузка 0.5 оверлап с лямбдаранком = 1.5 CAGR 0.174272 Vol 0.157973 Sharpe 1.095996 Sortino 1.427548 Calmar 0.501979 MDD -0.347171 2026ой вытащила в плюса плечом. 22ой все еще убивает. Но учитывая что рынок расхреначило Как будто и ок. Шарп конечно лучше _0.75_1.25 здесь Но плечо выводит все года в плюс. Так что. В сигнал. Аллокация с правкой на целевую MDD: Тикер Вес DOMRF 8,5566% CNYRUB_TOM 8,5566% SBER 8,5566% GAZP 7,9509% LKOH 2,8539% X5 2,6589% GLDRUB_TOM 2,5357% SILVER 2,0994% HH_GAS 1,9094% $DOMRF $CNYRUBF $SBER $GAZP $LKZ6 $X5 $GLDRUB_TOM $SVU7 $NGZ6
1
2
StarkovDV
StarkovDV

2 ноября в 19:57

02.11.26 Стейт stock_ret − macro_ret = h5 +0.0149, h20 +0.1264, h60 +0.2589 breadth_diff (stocks − macro): h5 −0.182, h20 +0.636, h60 +0.545 (акции растут против макро-слоя) corr(energy, non_energy): h20 −0.155, h60 −0.157 (энергия отрицательно коррелит с остальным макро) median_vol 0.0163 Тесты Ручная Логика: Вход: ret_20 > 0, adx_14 > 20, positive_day_fraction_20 > 0.5, close_location > 0.5, macd_histogram_slope > 0. Штрафы: вес × (1 - ES/median_ES) clip [0.5,1], вес × (1 - ulcer/median_ulcer) clip [0.5,1]. Риск-режим: если volatility_percentile_250 > 0.8 -> вес × 0.5. TOP-5 EW, cap 25%, min_cand 3, cash если < 3. CAGR 0.070386 Vol 0.135917 Sharpe 0.564682 Sortino 0.433814 Calmar 0.289345 MDD -0.243260 Паралитик Ridge alpha=10, StandardScaler. Target: y = close[t+20]/close[t] - 1. WF: rolling 756 train / 126 OOS / шаг 126, purge 20 + embargo 20. Портфель: TOP-5 EW, cap 20%, min 3, cash < 3, плечо 0. IC_spearman_mean -0.015621 IC_spearman_median -0.021988 IC_pearson_mean -0.004108 MAE 0.083867 RMSE 0.155614 top5_precision_mean 0.479755 top5_fwd_ret_mean 0.016573 CAGR 0.227644 Vol 0.333071 Sharpe 0.782176 Sortino 0.96196 Calmar 0.319117 MDD -0.713356 Инверсия сигнала Слепой камикадзе XGBoost Classifier + Triple Barrier + EV-ранжирование EV_IC_spearman: 0.0013559079819349476 EV_IC_pearson: 0.006761931892922942 decile_means: {0: 0.00149, 1: 0.00133, 2: 0.00214, 3: 0.00193, 4: 0.00163, 5: 0.00149, 6: 0.00163, 7: 0.00071, 8: 0.00264, 9: 0.00238} pos_ev_share: 0.4912760104133971 n_pos_ev: 54161 Абсолютно тупая Но как то зарабатывает CAGR 0.201826 Vol 0.193481 Sharpe 1.046876 Sortino 1.404816 Calmar 0.541554 MDD -0.372679 На EV ранжировании? Больше нет идей. Риск-контроль. CAGR 0.200075 Vol 0.171561 Sharpe 1.148498 Sortino 1.573923 Calmar 0.692265 MDD -0.289014 Сигнал: instrument ev p_tp p_sl w_base es_ratio es_mult w_final HH_GAS 0.0054 0.1530 0.2167 0.2000 0.9521 1.0000 0.2000 X5 0.0049 0.2166 0.2945 0.2000 1.3758 0.6242 0.1248 GAZP 0.0047 0.2060 0.2875 0.2000 0.8086 1.0000 0.2000 GLDRUB_TOM 0.0040 0.1760 0.2697 0.1768 1.1675 0.8325 0.1472 RTKM 0.0035 0.1914 0.2967 0.1537 0.6960 1.0000 0.1537 Сведение к целевой просадке 0,26 Тикер Целевой вес HH_GAS 17.99% X5 11.23% GAZP 17.99% GLDRUB 13.24% RTKM 13.83% $NGZ6 $X5 $GAZP $GLDRUBF $RTKM
2
3
StarkovDV
StarkovDV

1 ноября в 21:43

Повайбкодим. Идея - написать базовую модельку-аллокатор. Безлайны: IMOEX_b&h CAGR 0.024012 Vol 0.292162 Sharpe 0.229481 MDD -0.739267 EqW_all (равновес) CAGR 0.188037 Vol 0.287768 Sharpe 0.742598 MDD -0.661492 Momentum_TOP3 CAGR 0.039302 Vol 0.190633 Sharpe 0.297779 MDD -0.552616 Идеи: 1 - Рынок хаос, предиктивной альфы нет, преимущество в риск-контроле 2 - Преимущество в структуре взаимосвязей инструментов 3 - Преимущество в покупке в фазе накопления Результаты 1 - CAGR 0.164075 Vol 0.182196 Sharpe 0.92485 MDD -0.42324 2 - CAGR 0.080410 Vol 0.162771 Sharpe 0.556748 MDD -0.569001 3 - CAGR 0.125992 Vol 0.147642 Sharpe 0.877353 MDD -0.350927 1 - лучший риск-профайл. Но аллокация 90%, почти всегда в рынке, MDD не рабочий. Задача - снизить долю нахождения в рынке. Идея - при широком рынке полная аллокация. Если рынок узкий - кэш 0,5. Результат. CAGR 0.144401 Vol 0.144490 Sharpe 1.005651 MDD -0.272841 Риск-профайл улучшился, шарп перешагнул еденицу. Ручная фриз. ML Ансамбль. LGBM: размер риска Elastic: вероятность риска CatBoost: ожидаемый профит. Оркестратор: EV = ExpectedProfit - ProbabilityOfLoss * ConditionalLoss WF. Ретреин 6 месяцев. Purge = 5 37 фолдов. EP_MAE 0.024 EP_RMSE 0.042 PL_AUC 0.501 PL_Recall_top20 18.7% PL_Precision_top20 74.8% CL_MAE 0.024 CL_RMSE 0.037 Слабый сигнал дает только кот. PL/CL модели развалилис. CAGR 0.270684 при MDD -0.587377 Риск профиль соответствует результату, есть слабый предикт профита. Отсутствует понимание риска. Пока всё. #инвестици #искуственныйинтелекст #машинное_обучение #трейдинг #пульс_оцени
1
StarkovDV
StarkovDV

31 октября в 20:39

Аудит недели. Фин.рез. = +0,44% Лучшая модель: Catboost triple barrier with target vol IC: 0.0297 CAGR +0.1553 Sharpe +0.9994 Sortino +1.3128 Calmar +0.4664 MDD -0.3329 Vol 0.1568 Параметры: Глубина = 3 300 итераций Скорость обучения = 0.03 Тейк = 1,5 отклонения Стоп = 1 отклонение Тайм-аут = 5 дней Таргет важен Тройной барьер - IC 0.0297 Нормированная доходность - IC 0.0168 На одинаковом коте. Но это не абсолютный факт - пул инструментов был также разный. Вывод грязный, но только пул не должен был ушатать сигнал в два раза - так что рабочий. Если же зависмость от пула - сигнал хрупкий. Надо проверять робастность. Линейные модели без риск-оверлея пока слабее стандартных if-else алгоритмов. 2025-2026 - слабый режим - обязательная проверка моделей перед использованием на этом подпериоде. Устойчивые признаки: перекупленность, сила тренда, моментум, просадка Неусточивые и шумные: Z-Score, кросс-секционные Фильтр S = p_tp - p_sl ля трехбарьерника разваливает модель Нужен EV. RAG обновлен. Если надо инструкцию, как навайбкодить кота - в комменты. Подготовлю инструкцию, выложу постом. #алгоритмическаяторговля #инвестиции #машинноеобучение #управлениерисками #бэктест
1
StarkovDV
StarkovDV

30 октября в 15:29

30.10.26 start_date='2007-01-01', end_date=None, min_history=250 STOCK_ONLY = ["SBER", "LKOH", "NVTK", "YDEX", "CHMF", "GMKN", "RTKM", "X5", "AFLT", "GAZP"] GLOBAL_MACRO = ["CNYRUB_TOM", "GLDRUB_TOM", "BRENT", "SILVER", "COPPER", "BTC", "TTF", "HH_GAS", "NASDAQ100", "ORANGE_JUICE", "SOL", "XRP"] EXTRA = ["IMOEX", "IMOEXF"] У макро (кроме "CNYRUB_TOM", "GLDRUB_TOM") крайняя датировка 29ым - скип. Стэйт Ширина тренда 0,667 Ширина моментума 0,750 Дисперсия 0.094 Корреляция 0.191 Тесты Ручная модель - прогон по всей истории без сплита Гиперпараметры / набор признаков не подбирались - валидация не нужна. CAGR +0.0283 Sharpe +0.3240 Sortino +0.3583 Calmar +0.1119 MDD -0.2527 Vol 0.1025 Rank IC mean +0.0232, median +0.0312, share>0 0.521 avg_exposure 0.391 По годам: 2022: CAGR -0.1913, Sharpe -1.102, MDD -0.2241 2023: CAGR +0.2129, Sharpe +1.892, MDD -0.0800 2024: CAGR +0.0883, Sharpe +1.161, MDD -0.0506 2025: CAGR +0.0072, Sharpe +0.120, MDD -0.1437 2026: CAGR -0.0395, Sharpe -0.459, MDD -0.1454 Мультиноманальная логрег - WF, ретреин раз в 6 месяцев, purge 5 дней Accuracy (argmax): 0.4135 Rank IC (S vs realized_ret): mean +0.0166, median +0.0123, share>0 0.518 CAGR +0.0470 Sharpe +0.3097 Sortino +0.2570 Calmar +0.0595 MDD -0.7906 Vol 0.3339 avg_exposure 0.442 По годам: 2022: CAGR +0.2969, Sharpe +0.736, MDD -0.3413 2023: CAGR +0.3553, Sharpe +1.493, MDD -0.1563 2024: CAGR +0.9985, Sharpe +1.833, MDD -0.1707 2025: CAGR +0.2197, Sharpe +0.804, MDD -0.1591 2026: CAGR -0.3708, Sharpe -0.557, MDD -0.5394 CatBoostRegressor - WF, аналогично логрегу, таргет нормированная доходность Rank IC: mean +0.0168, median +0.0226, share>0 0.529 Pearson: +0.0109 CAGR +0.1572 Sharpe +0.8945 Sortino +1.1932 Calmar +0.3649 MDD -0.4306 Vol 0.1817 avg_exposure 1.000 Ручная - паралитик Линейная - мусор Бустинг - слабый сигнал - лучшее, что можно было получить от бустинга на пуле из 12 инструментов. Дродаун неприемлемая. G = float(top.mean() - bot.mean()) gaps.append({'date': asof, 'gap': G, 'G_target': G_target}) w_top = pd.Series(1.0 / len(top), index=top.index).reindex(tickers).fillna(0.0) exposure = min(1.0, max(0.0, G / G_target)) if G_target > 0 else 1.0 w_gap = w_top * exposure Чем меньше разрыв в предикте модели - тем ниже загрузка Spearman(gap, excess_next): +0.0147 Pearson(gap, excess_next): +0.0096 Ухудшает - не работает. Решение - кот в чистом виде с урезанием экспозиции. Сигнал ticker layer weight pred X5 stock 14.2857% +0.1310 AFLT stock 14.2857% +0.0835 GAZP stock 14.2857% +0.0827 LKOH stock 14.2857% +0.0744 SBER stock 14.2857% +0.0593 NVTK stock 14.2857% +0.0581 RTKM stock 14.2857% +0.0539 TOTAL 100.0000% CASH 0.0000% Загрузка только фьючем с LQDT в обеспечении, иначе нет экономического смысла в аллокации. Размер загрузки: 30% CAGR +0.0235, Sharpe +0.4120, Calmar +0.1464, MDD -0.1605, Vol 0.0609 Кэш: 70.00% По годам (E=0.30): 2022: CAGR -0.0916, Sharpe -0.857, MDD -0.1557 2023: CAGR +0.1201, Sharpe +2.794, MDD -0.0285 2024: CAGR +0.0448, Sharpe +0.769, MDD -0.0721 2025: CAGR -0.0106, Sharpe -0.140, MDD -0.0756 2026: CAGR -0.0250, Sharpe -0.399, MDD -0.1095 Последние два года ушли в минус. КЭШ. Аллокация в риск 0%. $LQDT $X5 $AFLT $GAZP $LKOH $SBER $NVTK $RTKM
1
2
StarkovDV
StarkovDV

29 октября в 20:24

29.10.2026 Состояние Дисперсия высокая Ширина по тренду = 0.571 (больше половины в тренде) Ширина моментума = 0.476 (расхождение моментума с трендом) Серебро, рублевое золото, солана, рипл в просадке TTF на экстремуме Рипл пятидневный моментум положительный = ребаунд из просадки Тест ручной модели Период: 2006-03-28 - 2026-10-29, 6646 дней CAGR +0.1350 Sharpe +0.8871 Sortino +1.1148 Calmar +0.4230 DD -0.3192 Vol 0.1566 Rank IC mean +0.0089, median +0.0100 По годам: 2022: CAGR -0.0051, Sharpe +0.026, MDD -0.1625 2023: CAGR +0.5419, Sharpe +2.491, MDD -0.1173 2024: CAGR +0.1961, Sharpe +0.988, MDD -0.2160 2025: CAGR +0.0923, Sharpe +0.621, MDD -0.1320 2026: CAGR -0.0056, Sharpe +0.011, MDD -0.1641 Тест Ridge Период: 2009-01-06 - 2026-10-25, 5913 дней CAGR +0.1419 Sharpe +0.7189 Sortino +0.9176 Calmar +0.2985 MDD -0.4753 Vol 0.2176 Rank IC mean +0.0130, median +0.0114 По годам: 2022: CAGR -0.0759, Sharpe -0.053, MDD -0.2804 2023: CAGR +0.3749, Sharpe +1.811, MDD -0.1189 2024: CAGR +0.1581, Sharpe +1.060, MDD -0.1970 2025: CAGR +0.0619, Sharpe +0.415, MDD -0.1699 2026: CAGR -0.1347, Sharpe -0.633, MDD -0.2731 Тест CatBoost Triple barrier Период: 2009-01-06 → 2026-10-25, 5913 дней CAGR +0.1999 Sharpe +0.9717 Sortino +1.2725 Calmar +0.4101 MDD -0.4874 Vol 0.2103 Rank IC mean +0.0297, median +0.0298, share>0 0.540, n=5945 По годам: 2022: CAGR -0.0087, Sharpe +0.130, MDD -0.2586 2023: CAGR +0.5555, Sharpe +3.006, MDD -0.0580 2024: CAGR +0.2988, Sharpe +1.853, MDD -0.1722 2025: CAGR +0.2732, Sharpe +1.490, MDD -0.1405 2026: CAGR +0.0911, Sharpe +0.579, MDD -0.1797 У бустинга самый высокий IC. Но высокая просадка. Самая низкая MDD у ручной модели. Вола бустинга 0,21 У ручной 0,1566 Решение - таргетирование волы на уровне портфеля. Результат: CAGR +0.1553 Sharpe +0.9994 Sortino +1.3128 Calmar +0.4664 MDD -0.3329 Vol 0.1568 Модель для сигнала - CatBoost Triple barrier с таргетированием волатильности Сигнал: Тикер Вес TTF 19.18% SBER 17.12% LKOH 15.68% X5 15.15% BRENT 13.63% COPPER 9.97% SILVER 9.26% Визуальный разбор (дневки, горизонт 1-3 дня, 29.10) - копипаста LLM TTF Параболический рост, без нормальных откатов Свеча-пик с длинной верхней тенью, затем красная. Классический blow-off Тренд сильный, но вход здесь покупает вершину. Высок риск отката COPPER Рост с марта, с сентября боковик потолок не взят, дно держится Нейтрально, импульса нет SILVER Нисходящий тренд, серия более низких максимумов Закрытие на минимумах, объём растёт Падение продолжается, подтверждения разворота нет BRENT Выход выше майских максимумов Маленькие свечи, закрепление над пробоем, откат выкупается Тренд вверх, пробой держится, перегрев умеренный X5 Вертикальный рост Свеча 29.10 с длинной верхней тенью и маленьким телом, упёрлась в зону, откуда был слом в июне Перегрет у сопротивления, есть отказ от уровня LKOH Выход выше мартовского максимума, до этого 2 недели консолидации Красная свеча с тенью Тренд вверх, но первая реакция продавца на новом максимуме SBER Отскок, серия более высоких минимумов Отказ от круглого уровня, красная свеча, впереди зона июньского гэпа и далее 328 Отскок внутри большего даунтренда, упирается в сопротивление Общая картина дня. Все три российские акции дали отказ от верхов (тени и красные свечи после ускорения). TTF, серебро и медь закрылись красными. Только Brent держится у максимумов. Это похоже на фиксацию прибыли после ралли, а не на разворот. Но входить вдогонку в такой момент неудачно. Итоговая аллокация BRENT 13,00% LKOH 10,00% SBER 8,00% X5 6,00% COPPER 8,00% TTF 4,00% SILVER 2,00% $BRZ6 $LKOH $SBER $X5 $CEZ6 $FFX6 $SVZ6
1
2
StarkovDV
StarkovDV

28 октября в 20:47

28.10.26 Пул инструментов STOCK_ONLY = ["SBER", "LKOH", "NVTK", "YDEX", "CHMF", "GMKN", "RTKM", "X5", "AFLT"] GLOBAL_MACRO = ["CNYRUB_TOM", "GLDRUB_TOM", "BRENT", "SILVER", "COPPER", "BTC", "TTF", "HH_GAS", "NASDAQ100", "ORANGE_JUICE", "SOL"] EXTRA = ["IMOEX", "IMOEXF"] История start_date='2005-01-01', end_date=None, min_history=250 Состояние Российские акции - тренд вверх Перекупленность в шести из девяти рынок не единый Macro — волатильный и разнонаправленный Дисперсия высокая Модель анализа состояния - LLM Ручная модель Результат: CAGR +0.2457 Sharpe +1.1478 Sortino +1.6172 Calmar +0.8896 MDD -0.2762 Vol 0.2106 Ridge CAGR: +0.1272 Sharpe: +0.6173 Sortino: +0.8000 Calmar: +0.1880 MDD: -0.6765 Vol: 0.2406 CatBoostRegressor CAGR +0.2932 Sharpe +1.0649 Sortino +1.5398 Calmar +0.6073 MDD -0.4828 Vol 0.2777 Выбор Бленд 0.5/0.5 Ridge/Ручная Сигнал ticker layer manual ridge blend SBER stock 0.0000% 7.6923% 3.8462% LKOH stock 4.3478% 0.0000% 2.1739% NVTK stock 8.6957% 15.3846% 12.0401% CHMF stock 0.0000% 15.3846% 7.6923% X5 stock 17.3913% 0.0000% 8.6957% AFLT stock 26.0870% 0.0000% 13.0435% BRENT macro 0.0000% 38.4615% 19.2308% TTF macro 43.4783% 23.0769% 33.2776% TOTAL 100.0000% 100.0000% 100.0000% CASH 0.0000% 0.0000% 0.0000% Сигнал базовой модели ticker layer weight mult IMOEXF imoexf 15.0000% 1.0 LKOH stock 7.1248% 2.0 BRENT macro 6.3559% 1.0 BTC macro 6.3559% 1.0 CNYRUB_TOM macro 6.3559% 1.0 COPPER macro 6.3559% 1.0 GLDRUB_TOM macro 6.3559% 1.0 HH_GAS macro 6.3559% 1.0 NASDAQ100 macro 6.3559% 1.0 SILVER macro 6.3559% 1.0 SOL macro 6.3559% 1.0 TOTAL 79.3280% CASH 20.6720% Решение Акции все убираю. Оставляем IMOEXF. И все тикеры базовыми долями. Три из трех нет. Новый сигнал базу не побил. Работа от ядра. Но с учетом бленда. Плечо не беру - сигнал слишком разнородный. Итог IMOEXF imoexf 15.0000% BRENT 6.3559% BTC 6.3559% CNYRUB 6.3559% COPPER 6.3559% GLDRUB 6.3559% HH_GAS 6.3559% NASDAQ100 6.3559% SILVER 6.3559% SOL 6.3559% $IMOEXF $BRX6 $BTV6 $CNYRUBF $CEZ6 $GLDRUBF $NGZ6 $NAZ6 $SVZ6 $S3Z6
1
2
StarkovDV
StarkovDV

27 октября в 21:05

Три AI-агента. Три нашлёпки на сигнал. Срез на 27.10.2026. Один торговый сигнал, три LLM-агента: DeepSeek, ChatGPT и мета-аллокатор. Все трое пытались улучшить его привычными методами — моментумом, скользящими средними и отбором инструментов. А задача была другой: исследовать сигнал, проверить гипотезы и разобраться в расхождениях. DeepSeek Шесть раз пришлось останавливать его работу. Главная ошибка — подмена торгового правила составом корзины: вместо исследования закономерностей агент предлагал убрать отдельные инструменты. На 60-дневном окне Calmar для TTF достиг 31,96. Агент собирался использовать результат в торговом решении. Пришлось остановить: короткое окно не доказывает устойчивость результата. ChatGPT CAGR вырос с 9,57% до 10,56%, Sharpe — с 0,649 до 0,787. Но 99,3% прироста Calmar пришлось на один период из семи, а bootstrap-интервал разницы доходностей включал ноль. Сам ChatGPT признал: превосходство не доказано. Проверка была аккуратнее, но подход тот же — убрать инструменты, ухудшающие метрики, вместо системного исследования причин расхождений. Мета-аллокатор Сначала отказался выбирать и предложил вернуться к базе. Потом проверил пять гипотез и выбрал минимальное изменение — исключить NG. Только у газа направление изменения Calmar совпало на ALL, IS и VAL. Это аргумент в пользу решения, но не доказательство, что инструмент нужно исключить навсегда. Три разных результата: DeepSeek — 60% в позициях, 40% в кэше. TTF, BRENT и COPPER — по 13,33%; ещё 20% экспозиции приходилось на акции. ChatGPT — 59,69% в позициях, 40,31% в кэше. Сохранил IMOEXF, BTC, SOL, TTF и BRENT, исключил SILVER, COPPER и HH_GAS. Мета — 72,45% в позициях, 27,55% в кэше. Сохранил остальные инструменты ChatGPT, исключив только HH_GAS. Все трое исключили газ. Но совпадение мнений — не доказательство. У меня есть гипотеза, что HH_GAS ведёт себя иначе, чем активы, под которые подходят стандартные эвристики моделей. Это ещё предстоит проверить. Главный вывод: проблема не только в качестве LLM, но и в организации их работы. Три агента с одной задачей «улучши сигнал» могут трижды применить похожие эвристики. Агенты способны находить полезные идеи, но также уверенно защищают сомнительные результаты. Они абьюзят любые дыры в постановке задачи. Итог: 72,45% в позициях, 27,55% в кэше, без плеча. Единственное изменение относительно исходного состава — исключение HH_GAS. Следующий шаг — добиться, чтобы каждый агент действительно выполнял свою роль. #инвестици #ai_agents #трейдинг #пульс_оцени $NGZ6 $FFX6 $IMOEXF $BRZ6 $BTZ6 $SVZ6
1
2