Владимир, 26/06 Швецов назвал текущую доходность по длинным ОФЗ (около 10% реальной доходности) «золотым дождём» для инвесторов, отметив уникальность ситуации с фиксированной доходностью в РФ – Интервью на Радио РБК
cos(dowAng): Косинус угла дня недели. (Позволяет модели учитывать день недели).
Math.Abs(ret1) (дубль): Еще одно дублирование признака ret1, но на этот раз в группе временных признаков. Код просто перечисляет его здесь еще раз, увеличивая его вес в общей сумме.
Группа 4: Признаки на основе скользящих значений (5 признаков)
ret5: Доходность за 5 свечей (Close[t] / Close[t-5] — 1.0). Зажимается в [-0.5, 0.5].
upperW: Относительный размер верхней тени (High — max(Open, Close)) / Close. Зажимается в [0, 0.5].
lowerW: Относительный размер нижней тени (min(Open, Close) — Low) / Close. Зажимается в [0, 0.5].
Группа 5: Производные от RSI (5 признаков)
rsiZ: Z-оценка RSI (RSI — 50) / 15. Показывает, насколько RSI далек от нейтрального уровня. Зажимается в [-5, 5].
rsiExtreme: Бинарный признак экстремума: +1 если RSI <= 30 (перепроданность), -1 если RSI >= 70 (перекупленность), иначе 0.
rsiDelta1 / 10.0: Изменение RSI за одну свечу. Зажимается в [-5, 5].
div (дубль): Признак дивергенции из группы 2 дублируется и здесь.
Группа 6: Долгосрочные и экстремальные признаки (3 признака)
np1Scaled: Нормализованная цена от DailyBandNormalizer с периодом 30 дней. Показывает, насколько текущая цена отклонилась от средней точки за последний месяц. (Price / 30d_mid — 1). Зажимается в [-2.0, 2.0]. Это уровень перекупленности/перепроданности на месячном горизонте.
np2Scaled: То же самое, но с периодом 180 дней (полгода). (Price / 180d_mid — 1). Глобальный уровень.
extPctScaled: Признак недавнего экстремума. Показывает, насколько текущая цена отклонилась от максимума или минимума за последние extWindowMinutes (полтора от торгового горизонта). (Peak_or_Trough_Price / Current_Price — 1). Зажимается в [-2.0, 2.0].
Важно: в коде за этим признаком должны следовать extT01 и extVolScaled, но они, судя по индексации, не включены в итоговый массив X[t] в функции BuildSlidingDatasetNormalized. Это потенциальный момент для проверки, но вопрос был именно про F, который сейчас равен 28.
Итоговая структура вектора F
В итоге, модель получает на вход «мгновенный снимок» рынка, описываемый 28 числами, которые кодируют:
Текущую волатильность и объем (признаки 1-5, 8-9, 20-21).
Краткосрочный тренд и импульс (признаки 6-7, 10, 17-19, 25).
Время и циклические закономерности (признаки 11-16).
Состояние перекупленности/перепроданности (признаки 22-24, 26-28).
Это не просто сырые данные, а тщательно сконструированный (feature-engineered) вектор, который позволяет модели искать сложные, многомерные паттерны, ведущие к прибыльному движению цены через заданный горизонт.