← Всички проекти

Проект 01 · Финанси · AI

Market Sentiment Terminal

Десктоп приложение, което чете над 100 източника в реално време, оценява всяка новина с AI и показва на български какво става на пазара, защо и дали настроението изобщо изпреварва цената.

Моята роля: идея, изисквания, тестване Код: писан от AI по мои указания Статус: работещо, версия 1.2
Как работи
Стрелката от −100 до +100. Пример, сметнат по формулата на приложението.
  • 100+източника: медии, регистри, социални мрежи, пазарни данни
  • 3000+истории на ден, подредени по важност
  • 570оценени записа за проверка на точността
  • 22файла с автоматични тестове

Проблемът

Хиляди новини на ден, а повечето са шум

Новините за пазарите са хиляди на ден и на английски. Една и съща история излиза в десетки медии, а голяма част са реклами, ценови прогнози и „3 акции за купуване“.

Исках един екран, който казва кое е важно, какво е настроението и дали то изобщо има връзка с цената. И исках да мога да проверя всяко число, а не да му вярвам.

Какво прави

Три екрана от приложението

Интерфейсът е на български. Приложението чете новините на английски и само ги превежда и обобщава.

Най-важното днес
Раздел „Най-важното днес“: списък с новините за деня, подредени по важност, и самата статия вдясно
Най-важното днес. Над 3 000 истории за деня, подредени по важност. Една история от 34 медии е един ред. Вдясно е самата статия, прочетена, съкратена до фактите и преведена.
Сектори
Раздел „Сектори“: 17 сектора с оценка на тона на новините и обобщение
Сектори. 17 сектора с тона на новините за 7 дни спрямо обичайното и обобщение: какво се случи, какво дърпа нагоре и надолу.
Актив
Страница за актив: цена, отчети, анализатори, инсайдери и новини върху графиката
Страница за актив. Досие на всяка компания или монета: цена, отчети, анализатори, инсайдери, документи към SEC и новините върху графиката.

Логиката

От суровата новина до една стрелка

Седем стъпки. Всяко число, тегло и срок по-долу е взето от настройките на самото приложение.

  1. 01 · Събиране

    Всеки източник, който има значение

    48 новинарски фийда, документите към SEC (8-K, 6-K, 13D) за всяка листната фирма, прессъобщения, Фед, ЕЦБ и американската статистика, StockTwits и Bluesky, Yahoo и CoinGecko, икономически календар и данни на FRED. Заявките вървят бавно и учтиво: сайт, който блокира три пъти, се пропуска за 6 часа.

    • 48 RSS
    • SEC EDGAR
    • Fed · ECB · BLS
    • StockTwits · Bluesky
    • CoinGecko топ 500
  2. 02 · Разпознаване

    За коя компания е новината

    Всяко заглавие се сверява с всички американски акции и ETF плюс водещите криптовалути. Име, което е и обикновена дума, иска контекст: „Attorney General“ не е General Motors, а „Washington Post“ не е акцията POST.

  3. 03 · Почистване

    Една история, един глас

    Рекламите, ценовите прогнози и ботовете отпадат. Заглавията се сравняват по редките думи и числата в тях. Ако 8 медии пускат една история, тя се брои веднъж, с по-голяма тежест заради широкото отразяване.

    тежест на историята × (1 + 0,5 × log₂ медии) → 8 медии = ×2,5

  4. 04 · Оценка

    AI модел, обучен за финансов текст

    Новините се оценяват с FinBERT от −100 до +100, плюс правила за ясните случаи: отчети, рейтинги, „акцията падна с X%“. Социалните постове минават и през VADER с около 250 думи финансов и крипто жаргон. Документите към SEC и макро данните се оценяват по правила: изненадата спрямо очакването.

    оценка = P(позитивно) − P(негативно) · увереност = 1 − P(неутрално)

  5. 05 · Тежест

    Кой го казва и колко е свежо

    Големите агенции и регулаторите тежат 1,0, утвърдените медии 0,65, малките сайтове 0,25. Прессъобщенията на самите фирми тежат 0,3, защото по природа са оптимистични. Старата новина губи половината си тежест за 3 часа, постът за 1 час, а събитието за 6.

  6. 06 · Стрелката

    Четири части, една стойност

    Новини, социални мрежи, събития и цени. Част с малко данни тежи по-малко, затова едно заглавие не може да вкара стрелката в силна зона. Накрая сумата минава през tanh, за да остане между −100 и +100. Пробвай го по-долу.

    стрелка = 100 × tanh(1,8 × Σ тегло × увереност × тон ÷ Σ тегло)

  7. 07 · Самопроверка

    Изпреварва ли настроението цената?

    На всеки 10 минути програмата взима последните 30 дни на непокриващи се 4-часови периоди. Брои случаите, в които думите са били поне ±10, и сравнява колко често цената е тръгнала натам със случайността. Присъда се дава само при поне 30 случая, с 95% интервал.

Пробвай сам

Как се движи стрелката

Формулата и теглата са същите като в приложението. Смени тона и броя новини и виж защо едно заглавие не стига, а цените тежат най-много.

Свежест

Колко бързо остарява информацията

Тежест на една новина, пост или събитие спрямо часовете от публикуването

Точност

Версия 0.7 срещу 0.8

Проверка върху 570 реални записа от 5 до 7 октомври 2026 г., оценени от два независими AI оценителя

версия 0.7версия 0.8

Технологии

На какво е построено

AI модели
FinBERT (ProsusAI) в ONNX, свит до int8, за да върви бързо на обикновен процесор. VADER с добавен речник за финанси и емоджита за социалните постове. Офлайн модел за превод, когато няма интернет.
Правила
Документи към SEC по вид: фалит −90, делистинг −60, активист инвеститор +25. Макро данни като изненада спрямо консенсуса с посока: по-висок CPI е лош знак, по-силни работни места са добър. Отчетите като EPS спрямо очакването.
Данни
SQLite база с цялата история. При рестарт последните 12 часа се зареждат обратно без двойно броене. Обичайният тон на всеки източник се самонастройва бавно и стрелката показва отклонението от него.
Интерфейс
Десктоп приложение с PySide6 (Qt), изцяло на български, с конзола за команди и клавишни комбинации. Пакетирано като .exe с PyInstaller, около 300 до 400 MB.
Мрежа
Асинхронни заявки, отделно учтиво темпо за всеки сайт, резервни адреси за всеки фийд и специален клиент за сайтовете със защита от ботове.
Тестове
pytest, 22 файла. Отделен тест върху 570-те оценени записа спира всяка промяна, която прави оценките по-лоши от версия 0.8.

Поуки

Какво научих

  • Чистите данни са по-важни от AI модела

    Първите показания бяха изкуствено завишени: +54 вместо +41 за крипто. Дублираните истории и рекламите се брояха като новини. Поправката беше в почистването, не в модела.

  • AI грешките се виждат само с проверка

    FinBERT оцени „Why Pagaya Stock Dropped 20%“ като добра новина (+68). Затова добавих правила за ясните случаи и тест, който ги хваща.

  • Една история не е десет новини

    Покупката на 334 BTC от Strategy се броеше в 12 отделни групи. След по-доброто сравняване на заглавията станаха 3.

Отвъд финансите

Същата система става и за вашата фирма

Мониторинг на медиите за марка или фирма, мнението на клиентите, следене на конкуренти, PR и комуникации. Навсякъде, където има много текст и трябва бързо да се разбере кое е важно.

Образователен проект, не е инвестиционен съвет. Приложението е лично и не се разпространява.

На живо

Ще ви го покажа

Market Sentiment Terminal е мой личен инструмент и не се разпространява. С удоволствие ще го покажа на живо в разговор: как чете новините, как смята стрелката и как проверява сам себе си.

Пиши ми