TL;DR
RealFin — исследование того, как LLM ведут себя когда в вопросе не хватает критически важной информации для однозначного ответа. Исследователи создали парные задачи: оригинальные (все условия есть) и ревизированные (убрали ключевое условие, но вопрос выглядит осмысленным). Протестировали 10 моделей на 2020 финансовых задачах на английском и китайском.
Модели не умеют говорить "недостаточно данных". Когда из финансового вопроса убирают важное условие (процентную ставку, метод расчёта, стандарт учёта), модели всё равно выдают уверенный ответ — домысливают недостающее на основе паттернов из обучающих данных. Общие модели (GPT, Claude, Gemini) гадают и подставляют "типичный кейс". Финансовые специализированные модели (DISC-FinLLM, FinGPT) видят знакомые термины типа "налог на потребление" и срабатывают на автомате — запускают расчёты даже когда не все данные есть, показывая <20% точности.
Исследование выявило парадокс языка: на английских вопросах точность моделей растёт на +8-12% когда условия убирают (модель случайно угадывает правильное допущение), а на китайских падает на -12% (многозначность слов вводит в заблуждение). Reasoning-модели типа Fin-R1 показывают скачок точности до +65% на недоопределённых задачах — умеют отказываться отвечать, но иногда переусложняют: находят правильный принцип, затем продолжают рассматривать редкие граничные случаи которых в вопросе не было.
Извлекаемые принципы для работы в чате
Хотя это исследование, а не готовая техника, оно показывает как заставить модель проверять условия перед ответом. Три принципа применимы в любом чате сразу:
Принцип 1: Явная проверка условий
Суть: Перед решением задачи попроси модель составить чек-лист необходимых данных.
ПЕРЕД тем как ответить:
1. Перечисли ВСЕ условия, необходимые для решения
2. Отметь какие ЕСТЬ в вопросе, какие ОТСУТСТВУЮТ
3. Если чего-то не хватает — скажи "недостаточно данных" и укажи что именно нужно
[Твоя задача]
Принцип 2: Критика неявных допущений
Суть: Модели домысливают молча. Заставь озвучить что она додумала.
Реши задачу, но ПЕРЕД финальным ответом:
- Перечисли все НЕЯВНЫЕ допущения, которые ты сделал
- Объясни почему выбрал именно эти допущения
- Скажи насколько ответ изменится при других допущениях
[Задача]
Принцип 3: Опция отказа
Суть: Для важных решений добавь вариант "недостаточно информации".
Варианты ответа:
А. [вариант 1]
Б. [вариант 2]
В. [вариант 3]
Г. **Недостаточно информации для ответа**
Выбирай Г если для обоснованного выбора А/Б/В не хватает данных.
Сначала объясни ПОЧЕМУ данных не хватает, потом выбери.
Пример применения
Задача: Разбираешь варианты инвестиций. В каком-то чате нашёл старую переписку: "ОФЗ с доходностью 12% принесут через год...". Хочешь понять сколько заработаешь на 500 тысячах рублей.
Промпт:
ПЕРЕД тем как посчитать доход:
1. Перечисли ВСЕ условия необходимые для расчёта дохода по ОФЗ
2. Отметь какие ЕСТЬ в сообщении, какие ОТСУТСТВУЮТ
3. Если чего-то не хватает — скажи что именно нужно уточнить
Сообщение: "ОФЗ с доходностью 12% принесут через год..."
Сумма вложений: 500 000 рублей
Результат: Модель укажет что не хватает критичных данных: это купонная доходность или к погашению, как часто выплачиваются купоны (раз в полгода обычно, но не всегда), какая цена покупки относительно номинала (с премией или дисконтом), нужно ли учитывать налог 13% на купоны (да для резидентов). Вместо быстрого "60 тысяч" получишь список из 4-5 пунктов что уточнить до расчёта.
Почему это работает
Слабость LLM: Модели обучены завершать запросы, а не проверять решаемость. Когда видят знакомый паттерн ("доходность 12%", "через год"), активируется цепочка "вопрос → расчёт → ответ". Проверки "а все ли данные есть?" в этой цепочке нет — модель натренирована считать каждый prompt решаемым.
Механика домысливания: Модель заменяет недостающее условие на "типичный кейс" из обучающих данных. Для ОФЗ это "купон выплачивается раз в полгода, покупка по номиналу". Для налоговых расчётов это "ИП без работников, платит взносы за себя". Ответ получается внутренне связным и звучит убедительно, но не обоснован конкретными условиями задачи.
Финансовые модели хуже общих: Специализация работает против них — видят термин "налог на потребление" и запускают агрессивный retrieval знаний. Чем больше знают формул и правил, тем сильнее триггер "начать считать прямо сейчас". DISC-FinLLM и FinGPT показали точность ниже 20% именно из-за этого — перегруз знаниями блокирует способность сказать "стоп, данных мало".
Как проверка условий ломает автоматизм: Явная инструкция "сначала чек-лист всех условий" прерывает триггер. Модель переключается из режима "отвечать" в режим "анализировать структуру задачи" — это другая цепочка рассуждений. Вместо pattern matching (узнал паттерн → применил формулу) включается logical decomposition (что нужно → что есть → что отсутствует).
Рычаги управления:
- Строгость чек-листа — укажи "ПЕРЕД решением" vs "проверь если сомневаешься" → первое даёт полную проверку, второе экономит время на очевидных задачах
- Формат вывода — потребуй таблицу "условие | статус | где в тексте" → модель будет сканировать текст вопроса тщательнее
- Порог отказа — "откажись если хоть одно условие неясно" vs "откажись если критичное условие отсутствует" → первое безопаснее, второе практичнее
Шаблон промпта
Ты — аналитик, который **не даёт ответы без достаточных данных**.
Алгоритм работы:
ШАГ 1: Перечисли ВСЕ условия необходимые для решения {задачи}
ШАГ 2: Проверь статус каждого условия
✅ ЕСТЬ в вопросе: [процитируй где именно]
❌ ОТСУТСТВУЕТ: [укажи что нужно узнать]
⚠️ НЕЯВНОЕ ДОПУЩЕНИЕ: [какое допущение делаешь и почему]
ШАГ 3: Вердикт
• Если ВСЕ условия на месте → реши задачу
• Если что-то отсутствует → "Недостаточно информации. Нужно уточнить: [список]"
• Если делаешь допущения → реши, но укажи "Ответ верен при условии: [допущения]. При других условиях результат может измениться на [примерный диапазон]"
ЗАДАЧА:
{твоя_задача}
Что подставлять:
- {задачи} — тип задачи одним словом (расчёт налога, оценка доходности, выбор тарифа)
- {твоя_задача} — полный текст вопроса или проблемы
🚀 Быстрый старт — вставь в чат:
Вот шаблон проверки условий перед решением задач с высокой ценой ошибки.
Адаптируй под мою задачу: [опиши свою ситуацию].
Задавай вопросы чтобы понять какие условия критичны для моего случая.
[вставить шаблон выше]
LLM спросит специфику твоей области (финансы, право, медицина, техника) — чтобы понять какие условия обычно критичны и какие типичные допущения делают люди. Она возьмёт трёхшаговую структуру и подстроит чек-лист под твой контекст.
Ограничения
⚠️ Переобдумывание: Reasoning-модели (типа Fin-R1) правильно находят ответ, но продолжают искать граничные случаи которых в вопросе нет. Научились отказываться когда надо, но не научились останавливаться когда достаточно. Ответ получается размытым от избытка осторожности.
⚠️ Многозначность языка: Принцип работает по-разному на разных языках. В русском многозначные слова ("уйти", "снять", "провести") могут сбить модель с толку даже когда все условия на месте — она начнёт искать недостающий контекст где его нет.
⚠️ Overhead на простых задачах: Если вопрос тривиален ("сколько 6% от 100 тысяч?"), трёхшаговая проверка создаёт лишний текст и медленнее. Применяй когда цена ошибки высока или когда задача сложная и многоступенчатая.
⚠️ Ложные отказы: Модель может счесть условие "отсутствующим" если оно выражено косвенно в другой части текста. Например, стандарт учёта не назван явно, но упоминается "по требованиям ЦБ РФ" — модель может не связать это с конкретным стандартом.
Как исследовали
Команда взяла 2020 реальных финансовых вопросов профессионального уровня: 1062 из подготовительных материалов CFA (английский) и 959 из учебных материалов CPA (китайский) — не настоящие экзамены, а открытые тренировочные задачи. Отбирали сложные кейсы: многоступенчатые расчёты, интеграция информации из нескольких источников, применение теории к практике — то есть задачи где одного pattern matching недостаточно.
Для каждого вопроса создали "испорченную" версию: удалили одно критичное условие, но сохранили грамматическую и смысловую связность. Например, из вопроса про доходность облигации убрали величину изменения процентной ставки (было "25 базисных пунктов", стало "ожидается снижение") — вопрос читается нормально, но однозначно решить его уже нельзя, нужно уточнение.
Что конкретно удаляли: (1) Макроэкономические предпосылки — режим процентных ставок, инфляционные ожидания, действует ли принцип непрерывности бизнеса; (2) Методы связывания — какую модель оценки применять (CAPM или DCF), как рассчитывается мультипликатор, логика хеджирования, метод амортизации; (3) Граничные условия контрактов — финансовые ковенанты, есть ли залог и регресс, связанные стороны; (4) Стандарты учёта — МСФО или US GAAP, регуляторный режим, момент признания выручки, правила расчёта налоговых разниц.
Два аннотатора (PhD и студент бакалавриата, оба с финансовым бэкграундом) независимо создавали ревизированные версии, затем кросс-проверяли: (1) остался ли вопрос осмысленным в финансовом контексте, (2) действительно ли теперь нет однозначного ответа. Расхождения решали обсуждением.
Протестировали 10 моделей в трёх режимах: (1) Original — оригинальный вопрос со всеми условиями, есть правильный ответ; (2) Revised — испорченный вопрос, нужно распознать недостаток информации; (3) None-of-the-above — правильный вариант заменён на "ни один из перечисленных", модель должна выбрать его вместо угадывания среди неверных.
Что удивило: На английских вопросах общие модели (GPT, Claude, DeepSeek) стали точнее на +8-12% когда убрали условия. Почему? Потому что случайно угадали типичное допущение которое совпало с эталонным ответом. Модель домыслила "стандартный кейс" из обучающих данных, и он оказался тем самым который имели в виду составители вопроса. На китайском же точность упала на -12% — контекстная многозначность слов сбила модель. Одно и то же слово может означать разное в зависимости от окружения, и когда убрали ключевое условие, оставшиеся слова стали двусмысленными.
Парадокс: Модель систематически неправа когда пытается интерпретировать неоднозначный текст, и случайно права когда просто подставляет частотный паттерн. Это показывает что высокая точность ≠ понимание — модель может быть права по неправильной причине.
Инсайт для практики: Если модель даёт уверенный ответ на финансовый (или любой важный) вопрос — это не гарантия что она поняла задачу. Она могла просто подставить "стандартное" допущение из обучающих данных, которое типично встречается с похожими формулировками. Поэтому критически важно просить модель явно назвать все допущения которые она сделала — это единственный способ проверить обоснованность ответа.
Адаптации и экстраполяции
🔧 Техника: Режим "красных флагов" для критичных решений
Усиль проверку для задач где цена ошибки особенно высока — добавь лингвистический слой перед логической проверкой:
Это решение с высокой ценой ошибки. Работай в режиме КРАСНЫХ ФЛАГОВ.
🚩 СТОП-СИГНАЛЫ (если хоть один обнаружен — откажись отвечать):
• Неоднозначные термины без уточняющего контекста
• Числа упомянуты без единиц измерения или временного периода
• Не указан применимый стандарт/регламент/закон/ГОСТ
• Условия выражены как "обычно", "как правило", "в типичном случае"
• Есть отсылка к "текущей ситуации" без указания даты
Алгоритм:
ШАГ 1: Сканируй текст задачи на стоп-сигналы → если нашёл, составь список что уточнить + ОТКАЗ от ответа
ШАГ 2: Если стоп-сигналов нет → проверь логическую полноту условий (основной алгоритм)
ШАГ 3: Реши только если прошли ОБА фильтра
ЗАДАЧА:
{высокорисковая_задача}
Зачем два слоя: Текстовые стоп-сигналы ловят неявную неопределённость которую логический анализ может пропустить. "Обычно выплачивается раз в полгода" звучит как условие, но это не факт а предположение. Лингвистический фильтр ловит такие формулировки до того как модель начнёт рассуждать логически.
🔧 Техника: Версионирование допущений
Для сложных кейсов где невозможно избежать допущений, покажи как ответ меняется в зависимости от их выбора:
Задача содержит неизбежные допущения. Дай ТРИ версии ответа:
📊 ВЕРСИЯ А (оптимистичная):
Допущения: [самые благоприятные для желаемого результата]
Расчёт: [краткая формула]
Ответ: [результат]
📊 ВЕРСИЯ Б (базовая):
Допущения: [стандартные/средние для отрасли или практики]
Расчёт: [краткая формула]
Ответ: [результат]
📊 ВЕРСИЯ В (консервативная):
Допущения: [наиболее строгие/пессимистичные]
Расчёт: [краткая формула]
Ответ: [результат]
Для каждой версии оцени ВЕРОЯТНОСТЬ что именно эти допущения соответствуют реальности.
Укажи какие данные нужны чтобы выбрать между версиями обоснованно.
ЗАДАЧА:
{задача_с_неизбежной_неопределённостью}
Эффект: Вместо одного "уверенного" ответа получаешь диапазон сценариев. Видишь насколько чувствителен результат к выбору допущений. Это ручной Monte Carlo — модель симулирует разные предположения и показывает разброс исходов. Если все три версии дают похожий ответ — допущения некритичны, решение robust. Если версии сильно расходятся — надо срочно уточнять реальные условия, риск ошибки высок.
🔧 Техника: Обратная проверка через "могло бы быть иначе?"
Проверь чувствительность вывода к конкретным значениям условий:
Реши задачу по стандартному алгоритму.
ЗАТЕМ обратная проверка:
1. Для каждого числового условия (ставка, срок, сумма) — измени его на ±20%
2. Пересчитай ответ с новым значением
3. Если ответ изменился НЕЗНАЧИТЕЛЬНО (<5%) — условие некритично
4. Если ответ изменился СИЛЬНО (>20%) — это критичное условие, отметь ⚠️
Покажи:
• Какие условия КРИТИЧНЫЕ (⚠️) — их надо проверить особенно тщательно
• Какие условия некритичные — ошибка в них не фатальна
ЗАДАЧА:
{задача_с_числовыми_условиями}
Применение: Выявляешь хрупкие места решения. Если всё упирается в одну процентную ставку — лучше перепроверить её три раза. Если разброс ±20% в сроке даёт всего ±3% в результате — можно работать с приблизительным сроком.
Ресурсы
RealFin: How Well Do LLMs Reason About Finance When Users Leave Things Unsaid?
Yuyang Dai (INSAIT), Yan Lin (INSAIT, Newcastle University), Zhuohan Xie (MBZUAI), Yuxia Wang (INSAIT)
Данные построены на основе CFA preparatory materials (английский) и CPA instructional materials (китайский) — публично доступные учебные материалы, не реальные экзамены.
