Inspiration

Investment research is usually split across price charts, company facts, risk calculators, backtests, and separate AI conversations. General-purpose AI can summarize that material, but a polished answer is not enough when users cannot verify where its figures came from.

I built Aeternus Market Intelligence to create an AI research workflow that can reason across market evidence without becoming the source of that evidence. The goal is not to predict guaranteed returns or execute trades. The goal is to show what the data supports, how each conclusion was reached, and where uncertainty remains.

What it does

Aeternus Market Intelligence is a local-first, evidence-grounded market research workspace.

Users select a market, symbol, analysis period, and research question. In live mode, GPT-5.6 Sol uses the OpenAI Responses API and strict function calling to coordinate deterministic tools for symbol validation, price history, fundamentals, technical indicators, risk metrics, and buy-and-hold versus SMA20/SMA50 comparison.

The final report presents technical, fundamental, backtest, and risk views together with bull and bear cases, conflicting signals, uncertainty, follow-up questions, limitations, and a financial disclaimer.

Every displayed financial figure is calculated by application code and carries a stable evidence ID, value, unit, currency, data date, source, and methodology. Unknown citations and unsupported numerical claims are rejected.

For reliable judging without credentials, Fixed Demo Mode uses a clearly labeled synthetic AET-DEMO dataset fixed through June 30, 2026. It runs through the same deterministic analytical boundary and explicitly reports when GPT was not called.

The application does not execute trades or provide personalized investment advice.

How I built it

Before Build Week, the repository already contained a local Flask and JavaScript market dashboard with watchlists, charts, technical indicators, backtests, risk analysis, comparisons, scanners, fundamentals, reports, alerts, portfolio tools, and optional local chat.

During Build Week, I added a GPT-5.6 Sol research agent using the OpenAI Responses API, strict function calling across nine deterministic research capabilities, Pydantic-validated structured synthesis, stable evidence IDs, a tool execution timeline, and fail-closed validation for unknown citations and unsupported numerical claims.

The browser interface calls a loopback-only Flask API. The server validates and locks each request to one market, symbol, and period. ResearchToolbox retrieves or generates the data, performs all calculations in Python, and writes a deduplicated evidence ledger.

In live mode, GPTResearchAgent sends strict tool schemas to gpt-5.6-sol through the Responses API, executes the requested tools, and parses a typed final response. The server validates every evidence reference before attaching authoritative metadata and rendering the report.

I also corrected compound-return and signal-timing details, added the Fixed Demo path, expanded automated tests, updated Windows PyInstaller packaging, and created reproducible validation and submission-media scripts.

The stack includes Python, Flask, OpenAI's Python SDK, Pydantic, pandas, NumPy, yfinance, SQLite, HTML, CSS, JavaScript, pytest, PyInstaller, Playwright, and FFmpeg.

Source code: https://github.com/shibaraven/aeternus-market-intelligence

Challenges

The hardest challenge was preventing fluent model output from becoming the system of record for financial figures. I separated qualitative synthesis from deterministic calculations, designed stable evidence IDs, and rejected unmatched citations and numerical claims.

Another challenge was preserving a large existing application while adding an isolated AI research boundary. I also had to correct compound-return calculations and next-session signal execution, package the expanded dependency graph for Windows, and provide an honest judge path that works without an API key or reliable network access.

Conflicting market signals were handled as first-class output rather than being compressed into a single unexplained score.

Accomplishments that I am proud of

I preserved the existing product while adding an isolated evidence-grounded AI agent.

Every displayed research figure is attributable to deterministic application code and a dated evidence record. The report exposes bull and bear cases, conflicts, uncertainty, limitations, and supporting evidence instead of returning a generic AI opinion.

I also built a repeatable synthetic demo that never disguises mock data as live data, added automated unit and API tests, validated both source and packaged Windows paths, and created fail-closed validation and recording scripts that refuse to fabricate GPT proof.

What I learned

I learned that tool calling is most trustworthy when the model has a narrow role: decide which evidence to request, compare the results, identify conflicts, and explain what they mean.

Application code should continue to own calculations, validation, provenance, data dates, units, currencies, and other policy-sensitive metadata.

I also learned that a clearly labeled deterministic fallback is more than a backup. It provides a reliable surface for judging, testing, debugging, and explaining the system without making false claims about live model usage.

What's next

Next steps include richer filing-period provenance for fundamentals, additional benchmark strategies, walk-forward analysis, configurable transaction-cost assumptions, more market-data provider adapters, saved local research sessions, report export, and broader accessibility testing.

Any future forecasting capability will retain the same evidence, validation, and uncertainty boundaries.

Aeternus Market Intelligence is for research and educational purposes only. It does not execute trades, provide personalized investment advice, guarantee outcomes, or guarantee returns. Historical and simulated performance does not guarantee future results.

Built With

Share this project:

Updates