[ blog · tutorial ]12 min read

Jak zbudować agenta do analizy inwestycyjnej: rynki, dane fundamentalne, SEC i dane ekonomiczne w jednym API

Sarah ChoyOpublikowano 16 czerwca 202612 min czytania
Jak zbudować agenta do analizy inwestycyjnej: rynki, dane fundamentalne, SEC i dane ekonomiczne w jednym API

Agent do analizy inwestycyjnej potrzebuje pięciu różnych warstw danych — cen, danych fundamentalnych, zgłoszeń, makro i wiadomości — z których każda to zwykle osobny dostawca, klucz i schema. Oto jak połączyć wszystkie pięć za jednym zestawem endpointów, z działającym kodem i rachunkiem kosztów.

TL;DR

  • Użyteczny agent finansowy potrzebuje pięciu warstw danych: rynki w czasie rzeczywistym (ceny), dane fundamentalne spółek (sprawozdania finansowe), zgłoszenia do SEC, wskaźniki ekonomiczne i wiadomości. Zszyte z osobnych dostawców to 5 umów, 5 kluczy, 5 schematów.
  • API Pick udostępnia wszystkie pięć jako spójne endpointy wyszukiwania JSON — /search/markets, /search/financials, /search/sec, /search/economic, /search/news — plus /extract dla pełnych dokumentów. Jeden klucz, z góry uformowany pod tool calling LLM.
  • Wzorzec agenta: uruchom odpowiednie endpointy równolegle jako narzędzia, scal JSON i pozwól modelowi rozumować na ugruntowanych danych, zamiast zmyślać liczby.
  • Rozliczenie w kredytach jest tylko-za-sukces: markets 120, financials 200, sec 120, economic 50, news 15 za wywołanie. Typowa tura badawcza z wieloma narzędziami kosztuje wyraźnie poniżej $0.01–$0.10 w zależności od głębokości.
  • Build-vs-buy: samodzielne złożenie Polygon + dostawcy danych fundamentalnych + SEC EDGAR + FRED + API wiadomości to tygodnie integracji i 5 comiesięcznych rachunków; droga jednego endpointu to jeden dzień.

Problem pięciu warstw

Zapytaj LLM "czy NVIDIA jest teraz droga?" a z pełną pewnością wymyśli wskaźnik C/Z. Rozwiązaniem nie jest większy model — jest nim grounding. Agent badawczy, który zdobywa zaufanie, musi pobierać żywe, cytowane dane w pięciu warstwach, a następnie na nich rozumować:

  • Rynki — bieżąca cena, kapitalizacja rynkowa i to, jak się poruszała. Krypto, forex, ETF-y i największe zmiany dnia, gdy są istotne.
  • Dane fundamentalne — bilans, rachunek zysków i strat, przepływy pieniężne, dywidendy i transakcje insiderów. Warstwa "czy biznes jest naprawdę zdrowy".
  • Zgłoszenia do SEC — czynniki ryzyka z 10-K, szczegóły z 10-Q, zdarzenia z 8-K, język earnings calls. Wymiar jakościowy, który liczby pomijają.
  • Wskaźniki ekonomiczne — stopy, inflacja, zatrudnienie, PKB z FRED, BLS, Banku Światowego i IMF. Tło makro, wewnątrz którego siedzi każda teza.
  • Wiadomości — aktualny katalizator: obniżka ratingu, premiera produktu, działanie regulacyjne.

Zszyte z osobnych dostawców, to pięć umów, pięć kluczy API, pięć reżimów rate-limit i pięć schematów odpowiedzi, które musisz znormalizować, zanim model będzie mógł ich dotknąć. Integracja to miejsce, w którym utykają projekty agentów finansowych.

Jeden zestaw endpointów, pięć warstw

API Pick udostępnia każdą warstwę jako spójny endpoint wyszukiwania JSON, dzięki czemu agent rozmawia z jednym kluczem i jednym formatem odpowiedzi:

  • Markets Search — akcje globalne i amerykańskie, krypto, forex, ETF-y, fundusze, surowce oraz amerykańskie spółki z największymi zmianami.
  • Financials Search — bilanse, rachunki zysków i strat, przepływy pieniężne, dywidendy, transakcje insiderów.
  • SEC Filings Search — 10-K/10-Q/8-K, transkrypcje wyników, statystyki kapitałowe.
  • Economic Data Search — FRED, BLS, Bank Światowy, IMF, USAspending, Destatis.
  • News Search — wiadomości filtrowane po dacie z głównych mediów.
  • Extract — pobierz pełne zgłoszenie lub artykuł do czystego markdown, gdy fragment nie wystarcza.

Architektura agenta

Zarejestruj każdy endpoint jako narzędzie. Gdy przychodzi pytanie, agent decyduje, których warstw potrzebuje, wywołuje je równolegle, scala JSON i rozumuje na ugruntowanym wyniku. Pytanie o ticker trafia w markets + dane fundamentalne + wiadomości; pytanie "jak jest spozycjonowany sektor" trafia w economic + wiadomości + kilka spółek porównywalnych.

import asyncio, httpx, os

API = "https://api.apipick.com/v1"
HEADERS = {"x-api-key": os.environ["APIPICK_KEY"], "Content-Type": "application/json"}

async def search(client, path, query, **kw):
    r = await client.post(f"{API}/{path}", headers=HEADERS,
                          json={"query": query, **kw})
    r.raise_for_status()
    return r.json()["results"]

async def research(ticker: str):
    async with httpx.AsyncClient(timeout=30) as c:
        markets, fundamentals, filings, macro, news = await asyncio.gather(
            search(c, "search/markets",    f"{ticker} price and market cap"),
            search(c, "search/financials", f"{ticker} latest balance sheet and cash flow"),
            search(c, "search/sec",        f"{ticker} 10-K risk factors", end_date="2026-06-16"),
            search(c, "search/economic",   "US interest rates and inflation latest"),
            search(c, "search/news",       f"{ticker} latest news", end_date="2026-06-16"),
        )
    return {"markets": markets, "fundamentals": fundamentals,
            "filings": filings, "macro": macro, "news": news}

# Feed the merged JSON back to your LLM as grounding, with the source URLs,
# and ask it to synthesize — never to recall numbers.
context = asyncio.run(research("NVDA"))

Każdy wynik niesie URL source. Przekaż je aż do finalnej odpowiedzi, aby człowiek mógł zaudytować każde twierdzenie — i aby wynik agenta był cytowalny, co właśnie czyni go użytecznym w prawdziwym przepływie pracy.

Build vs. buy

Złóż to samodzielnieAPI Pick
Dostawcy / klucze~5 (Polygon, dane fundamentalne, EDGAR, FRED, wiadomości)1
Formaty odpowiedzi5 do znormalizowania1 format JSON
Czas do pierwszego agentaTygodnie integracjiJeden dzień
Rozliczenie5 comiesięcznych subskrypcjiZa wywołanie, tylko za sukces
Gotowe pod LLMSam formujesz każdeWstępnie uformowane fragmenty + URL-e źródeł

Dla pojedynczego typu danych pójście na wprost jest rozsądne. Dla agenta, który potrzebuje wszystkich pięciu i eksploruje w sposób nieprzewidywalny, droga jednego endpointu wdraża się w jeden dzień i rozlicza tylko wtedy, gdy wywołanie się powiedzie.

Co to odblokowuje

Te same pięć narzędzi napędza znacznie więcej niż wyszukiwanie tickerów: agentów przygotowujących briefingi sezonu wyników, przeglądy sektorowe ugruntowane w danych fundamentalnych, świadome makro komentarze portfelowe oraz asystentów due diligence, którzy czytają faktyczny 10-K przez Extract. Wzorzec jest zawsze ten sam — ugruntowane wywołania narzędzi, równoległe pobieranie, synteza na prawdziwych danych z dołączonymi źródłami.

Zacznij od darmowego klucza (100 kredytów, bez karty) i podłącz te pięć narzędzi do wybranego frameworka agentowego. Od tego momentu to inżynieria promptów, a nie hydraulika.

Najczęściej zadawane pytania

Jakich danych naprawdę potrzebuje agent do analizy inwestycyjnej?

Pięciu warstw. (1) Rynki w czasie rzeczywistym — ceny, krypto, forex, ETF-y, największe zmiany, dla pytania „co robi teraz”. (2) Dane fundamentalne — bilans, rachunek zysków i strat, przepływy pieniężne, dywidendy, transakcje insiderów. (3) Zgłoszenia do SEC — treść 10-K/10-Q/8-K oraz transkrypcje wyników dla sygnałów jakościowych. (4) Wskaźniki ekonomiczne — FRED, BLS, Bank Światowy, IMF dla tła makro. (5) Wiadomości — aktualne katalizatory. Większość agentów zawodzi, bo mają ceny, ale nie mają danych fundamentalnych, albo dane fundamentalne, ale nie mają kontekstu makro.

Dlaczego nie odpytywać po prostu Polygon, FRED i SEC EDGAR bezpośrednio?

Można — i dla pojedynczego typu danych jest to w porządku. Ból polega na tym, że agent potrzebuje wszystkich pięciu: to pięciu dostawców, pięć schematów uwierzytelniania, pięć reżimów rate-limit, pięć formatów odpowiedzi, które musisz znormalizować, zanim LLM będzie mógł ich użyć, i pięć rachunków. Podejście jednego endpointu wymienia niewielką premię od wywołania na jeden klucz, jeden format JSON i rozliczenie tylko-za-sukces — co dla agenta wykonującego eksploracyjne wywołania z wieloma narzędziami jest zwykle tańszą i znacznie szybszą drogą do wdrożenia.

Jak uniknąć zmyślania przez LLM liczb finansowych?

Nigdy nie pozwalaj modelowi produkować liczb z pamięci. Uczyń każde źródło danych narzędziem, zmuś agenta do jego wywołania i przekaż zwrócony JSON z powrotem jako grounding. Zadaniem modelu jest rozumowanie i synteza na pobranych wartościach, a nie ich przypominanie. Cytuj URL źródła z każdego wyniku, aby wynik był audytowalny — to także sprawia, że odpowiedź jest wiarygodna dla ludzkiego recenzenta.

Czy wynik nadaje się do faktycznego handlu lub doradztwa?

Nie. Wynik API do wyszukiwania ma charakter informacyjny. Ugruntowuje rozumowanie analityka lub agenta w prawdziwych danych; nie jest poradą inwestycyjną i nie może być używany jako zautomatyzowany sygnał handlowy bez wykwalifikowanego człowieka i odpowiednich kontroli ryzyka. Traktuj agenta jako akcelerator analiz, a nie decydenta.

Ile kosztuje jedna tura badawcza?

Rozliczenie jest za udane wywołanie: markets 120 kredytów, financials 200, sec 120, economic 50, news 15 (1000 kredytów ≈ $1). Skupiona tura, która trafia w markets + dane fundamentalne + wiadomości, to ~335 kredytów (~$0.34); lżejsza tura makro+wiadomości to ~65 kredytów. Płacisz tylko przy HTTP 200, więc nieudane lub puste wywołania nie kosztują nic — co ma znaczenie, gdy agent eksploruje.

API użyte w tym artykule

Sarah Choy
Autor
Sarah Choy
CEO, API Pick

Sarah Choy jest CEO API Pick. Pisze o budowaniu produkcyjnych API dla agentów AI i przepływów pracy z LLM.