diff --git a/README.md b/README.md index 3d3fab3..9204747 100644 --- a/README.md +++ b/README.md @@ -27,12 +27,12 @@ - **Как работает:** ищет публикации за заданный период, выделяет основные тезисы, сопоставляет позиции и приводит даты и ссылки на источники - **Регулярная задача:** каждое утро собирает новые публикации выбранных авторов, отмечает изменения мнений и противоречия; если новых материалов нет, сообщает об этом -### 3. Сохранить деньги +### 3. Поиск сигналов в волатильных акциях -Проверяет, какие риски портфеля важны, если деньги понадобятся к определённой дате +Следит за выбранными волатильными акциями и сообщает о необычных движениях цены -- **Как работает:** читает снимок портфеля, оценивает концентрацию, сроки и ликвидность, рассчитывает заданные стресс-сценарии -- **Регулярная задача:** раз в неделю обновляет аудит и показывает изменения относительно предыдущего отчёта, включая устаревшие или недоступные данные +- **Как работает:** рассчитывает скорость и ускорение изменения цены, ищет резкое ускорение роста, замедление роста и падение, сравнивает их с обычным поведением бумаги и проверяет доступные новости +- **Регулярная задача:** каждые 1–5 минут в торговую сессию проверяет список акций и отправляет уведомление с графиком, причиной сигнала и найденным объяснением либо отметкой «объяснение в подключённых источниках не найдено»; повторные сигналы подавляются ### 4. Капитал под цель diff --git a/designDocument/design.md b/designDocument/design.md index ef32a19..0e659af 100644 --- a/designDocument/design.md +++ b/designDocument/design.md @@ -44,7 +44,7 @@ Invest Harness — платформа агентов для инвестиций ### Пять инвестиционных сценариев -На общем DSH harness создаются пять шаблонов: **«Мой первый портфель»** объясняет инструменты начинающему, **«Эксперты из Пульс»** сопоставляет подтверждённые мнения авторов, **«Сохранить деньги»** проверяет портфель к заданной дате, **«Капитал под цель»** рассчитывает план накопления, **«Исследовательская панель»** анализирует отчётность. Пользователь настраивает шаблон через JSON Schema Driven UI и выбирает локальный либо удалённый Runner. Финансовые инструменты реализуются плагинами; методика задаётся скиллами +На общем DSH harness создаются пять шаблонов: **«Мой первый портфель»** объясняет инструменты начинающему, **«Эксперты из Пульс»** сопоставляет подтверждённые мнения авторов, **«Поиск сигналов в волатильных акциях»** регулярно выявляет необычное ускорение роста, замедление роста и падение цены и сообщает пользователю, **«Капитал под цель»** рассчитывает план накопления, **«Исследовательская панель»** анализирует отчётность. Пользователь настраивает шаблон через JSON Schema Driven UI и выбирает локальный либо удалённый Runner. Финансовые инструменты реализуются плагинами; методика задаётся скиллами [Сценарии с настройками, шагами, обработкой ошибок и критериями приёмки](scenarios.md). Они описывают демонстрационные шаблоны с учебным или read-only доступом; конкретные внешние интеграции требуют проверки. Внутренняя логика агента остаётся за границей ответственности платформы diff --git a/designDocument/scenarios.md b/designDocument/scenarios.md index 2aaa023..59620ac 100644 --- a/designDocument/scenarios.md +++ b/designDocument/scenarios.md @@ -1,14 +1,14 @@ # Пять демонстрационных сценариев -Сценарии адаптированы из предоставленной аналитической работы «Finance Harness», версия 1.0 от 11.11.2026, раздел 3 (страницы 4–5), с учётом технической модели на странице 11. Это требования к демонстрации Invest Harness, а не описание готовых интеграций или подтверждённых продуктовых эффектов +Четыре сценария адаптированы из предоставленной аналитической работы «Finance Harness», версия 1.0 от 11.11.2026, раздел 3 (страницы 4–5), с учётом технической модели на странице 11. Третий сценарий заменён на поиск сигналов в волатильных акциях по продуктовому запросу. Это требования к демонстрации Invest Harness, а не описание готовых интеграций или подтверждённых продуктовых эффектов -В исследовании профили называются harness. В [терминах платформы](design.md) «Мой первый портфель», «Эксперты из Пульс», «Сохранить деньги», «Капитал под цель» и «Исследовательская панель» — пять **шаблонов агента** на общей DSH-базе: каждый закрепляет harness, плагины, скиллы, правила ответа и JSON Schema настроек. Отдельный движок для каждого сценария не нужен. Пользователь создаёт из шаблона свой экземпляр агента +В исследовании профили называются harness. В [терминах платформы](design.md) «Мой первый портфель», «Эксперты из Пульс», «Поиск сигналов в волатильных акциях», «Капитал под цель» и «Исследовательская панель» — пять **шаблонов агента** на общей DSH-базе: каждый закрепляет harness, плагины, скиллы, правила ответа и JSON Schema настроек. Отдельный движок для каждого сценария не нужен. Пользователь создаёт из шаблона свой экземпляр агента | Шаблон | Запрос пользователя | Результат | Демонстрируемая возможность | |---|---|---|---| | Мой первый портфель | «Объясни, чем отличаются эти инструменты» | Понятное сравнение и учебный пример | Настройка глубины ответа через форму | | Эксперты из Пульс | «Как менялась позиция выбранного автора?» | Хронология с подтверждающими источниками | Поиск по публикациям и цитирование | -| Сохранить деньги | «Деньги нужны через девять месяцев: где риски?» | Аудит портфеля и ликвидности | Read-only данные и регулярный обзор | +| Поиск сигналов в волатильных акциях | «Сообщи о необычном движении выбранных акций» | Сигнал с графиком и объяснением | Частый мониторинг и уведомления | | Капитал под цель | «Как накопить 3 млн рублей за семь лет?» | Несколько расчётных планов | Калькулятор, параметры и график | | Исследовательская панель | «Сравни банки по отчётности» | Проверяемые расчёты и аналитический отчёт | Инструменты, документы и свой Runner | @@ -70,29 +70,41 @@ **Критерий приёмки.** Каждая цитата совпадает с фрагментом корпуса, автор и дата атрибутированы правильно. Тестовый конфликт показывает обе позиции; запрос без источника не порождает выдуманный ответ. Разрешения корпуса проверяются и в локальном, и в удалённом режиме -## 3. «Сохранить деньги» +## 3. «Поиск сигналов в волатильных акциях» -**Пользователь и цель.** Инвестору нужны деньги к определённой дате. Он хочет увидеть концентрацию, сроки и неопределённость ликвидности своего портфеля. Пример: «Мне нужны деньги через девять месяцев. Какие позиции требуют внимания?» +**Пользователь и цель.** Инвестор выбирает набор волатильных акций и хочет получать сообщения о необычном ускорении роста, замедлении роста или падении цены. Пример: «Проверяй эти акции каждые две минуты и сообщай о резких изменениях, для которых не нашлось объяснения в доступных источниках» -**Состав.** DSH harness; плагины чтения портфеля, метаданных облигаций и сценарного расчёта (`portfolio_read`, `bond_metadata`, `rate_scenario`, `issuer_risk`), при регулярном запуске — `recurring-tasks`; скилл аудита портфеля +**Состав.** DSH harness; плагины рыночных данных, расчёта сигналов, новостного поиска, графиков, `recurring-tasks` и доставки уведомлений; скилл объяснения рыночных отклонений. Расчёт выполняет детерминированный инструмент, а агент проверяет контекст и формулирует сообщение. Торговые поручения не отправляются -**Настройки формы.** `targetDate`, `requiredAmount`, `baseCurrency`, `maxDataAgeHours`, включение сценариев изменения ставки. Параметры стресс-сценария задаются явно. Расписание настраивается отдельной формой платформы с timezone, preview, overlap и misfire policy +**Настройки формы.** Список идентификаторов инструментов и бирж, интервал проверки (в первой версии 1–5 минут), размер свечи, окно сглаживания, окно оценки обычной волатильности, пороги скорости и ускорения, минимальная ликвидность/объём, максимальный возраст данных, время подавления повторов и выбранные типы сигналов. Пользователь задаёт режим уведомлений: обо всех обнаруженных отклонениях либо только об отклонениях без найденного объяснения. Источники новостей и канал доставки подключаются с отдельными разрешениями; секреты в форму не попадают + +**Как определяется сигнал.** Используются завершённые свечи одинаковой длительности. Расчётный плагин получает сглаженный логарифм цены x(t), оценивает скорость v(t) = [x(t) − x(t−Δt)] / Δt и ускорение a(t) = [v(t) − v(t−Δt)] / Δt. Метод сглаживания, единицы времени, пороги и версия алгоритма закреплены в конфигурации. Сглаживание и сравнение используют только данные, доступные к моменту оценки, без будущих свечей + +- Ускорение роста: скорость положительна, ускорение положительно и превышает выбранный порог необычности +- Замедление роста: скорость ещё положительна, ускорение отрицательно и по модулю превышает порог; это не утверждение, что цена уже падает +- Падение: скорость отрицательна и её модуль превышает порог; отрицательное ускорение дополнительно отмечает усиление падения + +Пороги сравниваются с прошлым поведением той же бумаги на сопоставимом интервале, а не с одним абсолютным значением для всех акций. Алгоритм и значения порогов проверяются на историческом воспроизведении до включения уведомлений; документ не задаёт универсально прибыльную торговую стратегию **Ход сценария.** -1. Пользователь выбирает «Сохранить деньги» и загружает снимок портфеля либо подключает доступный read-only источник -2. Задаёт дату потребности в деньгах и сумму; платформа фиксирует конфигурацию агента -3. Плагин нормализует позиции, валюты и дату оценки, объединяет экспозиции одного эмитента -4. Инструменты рассчитывают концентрацию и заданные сценарии; агент объясняет результаты с указанием недостающих данных -5. Пользователь сохраняет отчёт. При необходимости включает еженедельный запуск и просматривает следующие срабатывания перед сохранением +1. Пользователь выбирает акции, периодичность, параметры чувствительности и канал уведомлений, сохраняет ревизию и включает расписание +2. Запуск проверяет торговую сессию, свежесть и полноту свечей, достаточность истории и ликвидность, затем рассчитывает скорость, ускорение и отклонения +3. Для кандидатов плагин проверяет корпоративные события, доступные новости, движение рынка и сектора; сплит или изменение базы цены не выдаются за обычный рыночный скачок +4. Агент формирует объяснение со ссылками либо помечает, что объяснение не найдено в проверенных источниках. Недоступный источник обозначается отдельно: он не подтверждает отсутствие новостей +5. Сигнал сохраняется, проверяется подавление повторов и создаётся задание доставки в разрешённый канал. Пользователь получает время, бумагу, тип отклонения, значения показателей, график или ссылку на него и статус проверки объяснения -**Результат.** Сводка портфеля, концентрация по эмитентам и классам, сведения о сроках и ликвидности, сценарии и перечень пробелов. Для повторного обзора можно явно передать предыдущий результат; вывод об изменениях содержит обе даты оценки +**Результат.** Карточка сигнала с датой и часовым поясом, временем последней свечи, источником котировок, интервалом расчёта, порогом и измеренным отклонением. При найденной новости показывается возможная связь, а не доказанная причина. Слова «объяснение не найдено» не означают, что движение объективно необоснованно, и не являются командой купить или продать -**Если источник устарел или недоступен.** Отчёт обозначает возраст снимка; при превышении установленного порога задача не выдаёт его за актуальный обзор. Отзыв connection останавливает расписание с причиной. Низкая ликвидность не определяется только сроком погашения +**Если данные непригодны.** При пропусках, устаревших котировках, недостаточной истории, остановке торгов или неподтверждённой корректировке цены расчёт по бумаге пропускается с причиной. Недоступность новостей даёт статус «объяснение не проверено»; в режиме «только без найденного объяснения» такой сигнал не отправляется как необъяснённый. Техническая ошибка видна в истории запусков -**Регулярная работа.** Еженедельный запуск получает свежий разрешённый снимок портфеля, повторяет расчёты и сравнивает результат с последним успешным отчётом. В отчёте фиксируются обе даты оценки, изменившиеся позиции и пробелы данных. Если подключён только загруженный файл, агент анализирует его с исходной датой и не обещает обновление портфеля. Обнаруженные изменения отображаются в результате; самостоятельная продажа или покупка не выполняется +**Регулярная работа.** Расписание запускает проверку каждые 1–5 минут; плагин учитывает календарь и сессию конкретной биржи, вне сессии возвращает статус без сигнала. Для этого сценария overlapPolicy=skip и misfirePolicy=skip: после простоя проверяется ближайшее новое срабатывание, просроченные торговые сигналы не рассылаются. Субминутный мониторинг потребует отдельного потокового режима и не обещается текущим cron API -**Критерий приёмки.** Итоги на подготовленном портфеле совпадают с эталонными расчётами, отсутствующие сведения видимы. Повторная доставка одного occurrence не создаёт второй Run. Локальное расписание работает только при запущенном daemon; удалённое выполняется на выбранном Runner +Состояние мониторинга хранит последнюю обработанную свечу и активное отклонение отдельно для tenant, агента, инструмента и версии алгоритма. Пока одно отклонение продолжается, новые проверки не создают одинаковые уведомления. Повтор разрешён после возврата показателя в норму и нового пересечения порога либо при явно настроенном усилении сигнала; cooldown ограничивает частоту. Перезапуск Runner не сбрасывает это состояние + +Сигнал и запись на доставку фиксируются атомарно в хранилище плагина. Доставка повторяется отдельно от расчёта с тем же notificationId и ограниченным сроком актуальности; статус доставки виден пользователю. Если канал не поддерживает идемпотентность, неоднозначный ответ отмечается как неизвестный результат доставки, без обещания отсутствия дублей. Перед отправкой повторно проверяются разрешение канала и возраст сигнала + +**Критерий приёмки.** Историческое воспроизведение проверяет раздельное обнаружение трёх типов движения, отсутствие использования будущих данных и подавление повторов. Пропуск свечи, сплит, закрытая сессия и устаревшие котировки не создают ложный сигнал в подготовленных тестах. Повтор одного запуска не создаёт второе задание доставки, а сбой доставки не запускает повторный анализ. Качество сигналов и частота ложных срабатываний измеряются отдельно; успешный Run не доказывает полезность сигнала для торговли ## 4. «Капитал под цель» @@ -148,9 +160,9 @@ Каждое срабатывание создаёт отдельный Run с новым входным снимком либо явно указанным режимом получения свежих данных. После создания ExecutionSpec не меняется. Данные, полученные внутри Run, сохраняются как артефакты с датами и источниками. Сравнение с историей использует явно разрешённую ссылку на предыдущий успешный результат, а не неограниченную общую память агентов -Для мониторинга исходный вариант — overlapPolicy=skip и misfirePolicy=coalesce: занятое расписание пропускает срабатывание, после простоя выполняется максимум один пропущенный запуск. Точная семантика задана в [API расписаний](api/runs-api.md). Плагин хранит состояние мониторинга в пределах tenant и экземпляра агента; повтор не должен дважды продвигать отметку обработки. Это требование к реализации финансовых плагинов, а не новая гарантия диспетчера +Для периодических обзоров исходный вариант — overlapPolicy=skip и misfirePolicy=coalesce: занятое расписание пропускает срабатывание, после простоя выполняется максимум один пропущенный запуск. Точная семантика задана в [API расписаний](api/runs-api.md). Поиск краткоживущих сигналов использует misfirePolicy=skip, как указано в третьем сценарии. Плагин хранит состояние мониторинга в пределах tenant и экземпляра агента; повтор не должен дважды продвигать отметку обработки. Это требование к реализации финансовых плагинов, а не новая гарантия диспетчера -Результат доступен в истории запусков. Уведомления во внешние каналы потребуют отдельного плагина и разрешения; наличие расписания само по себе не означает отправку сообщений. Если данные недоступны, отчёт показывает проблему, а отзыв connection приостанавливает расписание согласно общему контракту +Результат доступен в истории запусков. Для третьего сценария плагин уведомлений и разрешение канала обязательны до включения доставки; для остальных уведомления опциональны. Наличие расписания само по себе не означает отправку сообщений. Если данные недоступны, отчёт показывает проблему, а отзыв connection приостанавливает расписание согласно общему контракту ## Связь с реализацией платформы