01
Lookup
“Tesla: P/E, debt-to-equity, and free cash flow. Current vs. 3-year trend”
Single-entity snapshot with historical context. A few seconds, end to end.
A purpose-built analytical engine for financial research. It computes answers from real data and shows its work every time. Not a chatbot. Not an API wrapper. Three free queries, no signup.
11,000+
US-listed stocks & ETFs
20+ yrs
of financials on US stocks
< 10s
typical response time
Step 01
Multi-factor screens, temporal trends, cross-dataset event studies. Describe the analysis in plain English. The engine understands financial semantics.
Step 02
mrmarket.ai was purpose-built to resolve complex financial questions against structured data. It cross-references, aligns time dimensions, and computes. No guessing at any stage.
Step 03
Charts, tables, and saved screens. Every answer is reproducible, shareable, and refreshable when new data arrives.
Serious analysis spans multiple datasets at once. Insider transactions joined to forward returns. Margin trends screened against valuation. A 200 day moving average crossed with the earnings calendar. Chatbots guess at this and get it wrong. Terminals can do it once you learn their language and pay for the seat. Most of us just give up and rebuild it by hand in a spreadsheet.
mrmarket.ai removes that middle step. Describe the analysis the way you would say it out loud and the engine resolves it against structured financial data, then returns a clean, reproducible result. The same question always returns the same answer, so you can build on the number instead of checking it twice.
Each result ships with the exact query the engine ran against the data, pretty-printed, parameter by parameter. Copy it and check it yourself. No other AI finance tool we know of will show you the computation. We show you all of it.
If a question needs data we don’t have, the engine stops and says so. It does not improvise a number to fill the silence. The queries it won’t run, it tells you why, and it never charges you for them.
Answers come stamped with the data they’re built on and the caveats stated plainly, including which companies existed then but have since delisted. The honest answer, not the flattering one.
Every answer the engine produces ships with the exact query it ran against the data, pretty-printed, with every parameter, ready to copy. Read it. Check it. Hand it to your own analyst. The computation is never hidden and it is never faked: if the engine cannot show its work cleanly, it does not ship the answer at all.
Every answer in the product carries this panel. The one below is reproduced verbatim from a live query run: question, rows, SQL, and bindings.
The question
“Tesla: quarterly P/E ratio, debt-to-equity, and free cash flow for the last 3 years”
The answer
All 12 quarters returned:
| Quarter | Close (report day) | EPS (qtr) | EPS (TTM) | P/E | D/E | FCF |
|---|---|---|---|---|---|---|
| Q2 2023 | $291.26 | $0.91 | $4.00 | 72.8 | 0.04 | $1.01B |
| Q3 2023 | $242.68 | $0.66 | $3.61 | 67.2 | 0.08 | $0.85B |
| Q4 2023 | $207.83 | $0.71 | $3.13 | 66.4 | 0.08 | $2.06B |
| Q1 2024 | $144.68 | $0.45 | $2.73 | 53.0 | 0.09 | -$2.54B |
| Q2 2024 | $246.38 | $0.52 | $2.34 | 105.3 | 0.12 | $1.34B |
| Q3 2024 | $213.65 | $0.72 | $2.40 | 89.0 | 0.12 | $2.74B |
| Q4 2024 | $389.10 | $0.73 | $2.42 | 160.8 | 0.12 | $2.03B |
| Q1 2025 | $237.97 | $0.27 | $2.24 | 106.2 | 0.11 | $0.66B |
| Q2 2025 | $332.56 | $0.40 | $2.12 | 156.9 | 0.10 | $0.15B |
| Q3 2025 | $438.97 | $0.50 | $1.90 | 231.0 | 0.11 | $3.99B |
| Q4 2025 | $431.46 | $0.50 | $1.67 | 258.4 | 0.10 | $1.42B |
| Q1 2026 | $387.51 | $0.41 | $1.81 | 214.1 | 0.11 | $1.44B |
Methodology, as the engine disclosed it with the answer: P/E is the report-day close divided by trailing-twelve-month EPS, the quarter’s reported EPS plus the prior three (check it: 387.51 ÷ 1.81 = 214.1), never a single quarter’s EPS. D/E is short-term plus long-term debt over shareholder equity. FCF is operating cash flow minus capital expenditures.
WITH "step_1" AS (
SELECT
"earnings"."symbol" AS "symbol",
"earnings"."fiscal_date_ending" AS "fiscal_date_ending",
"earnings"."reported_date" AS "reported_date",
"earnings"."reported_eps"
* COALESCE(
"ref_1"."rate_to_usd",
CASE WHEN "earnings"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "reported_eps",
"earnings"."period_type" AS "period_type",
"company"."asset_type" AS "asset_type"
FROM "earnings"
JOIN "company"
ON "earnings"."symbol" = "company"."symbol"
LEFT JOIN "currency_reference" AS "ref_1"
ON "ref_1"."currency" = "earnings"."reported_currency"
AND "ref_1"."date" = "earnings"."fiscal_date_ending"
WHERE "earnings"."symbol" = $1
AND "earnings"."period_type" = $2
AND "earnings"."reported_date" <= $3
AND "earnings"."fiscal_date_ending" >= $4
AND "company"."asset_type" = $5
AND "earnings"."reported_eps" IS NOT NULL
),
"step_2" AS (
SELECT
"step_1".*,
LAG("reported_eps", 1) OVER (
PARTITION BY "symbol"
ORDER BY "reported_date" ASC NULLS LAST
) AS "eps_lag1",
LAG("reported_eps", 2) OVER (
PARTITION BY "symbol"
ORDER BY "reported_date" ASC NULLS LAST
) AS "eps_lag2",
LAG("reported_eps", 3) OVER (
PARTITION BY "symbol"
ORDER BY "reported_date" ASC NULLS LAST
) AS "eps_lag3"
FROM "step_1"
),
"step_3" AS (
SELECT
"step_2".*,
reported_eps + eps_lag1 + eps_lag2 + eps_lag3 AS "ttm_eps"
FROM "step_2"
),
"step_4" AS (
SELECT *
FROM "step_3"
WHERE "fiscal_date_ending" >= $6
AND "eps_lag1" IS NOT NULL
AND "eps_lag2" IS NOT NULL
AND "eps_lag3" IS NOT NULL
),
"step_5" AS (
SELECT
"daily_price"."symbol" AS "symbol",
"daily_price"."date" AS "date",
"company"."asset_type" AS "asset_type",
"daily_price"."close_adjusted" AS "price"
FROM "daily_price"
JOIN "company"
ON "daily_price"."symbol" = "company"."symbol"
WHERE "daily_price"."symbol" = $7
AND "daily_price"."date" >= $8
AND "company"."asset_type" = $9
),
"step_6" AS (
SELECT
"balance_sheet"."symbol" AS "symbol",
"balance_sheet"."fiscal_date_ending" AS "fiscal_date_ending",
"balance_sheet"."total_shareholder_equity"
* COALESCE(
"ref_2"."rate_to_usd",
CASE WHEN "balance_sheet"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "total_shareholder_equity",
"balance_sheet"."short_term_debt"
* COALESCE(
"ref_2"."rate_to_usd",
CASE WHEN "balance_sheet"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "short_term_debt",
"balance_sheet"."long_term_debt"
* COALESCE(
"ref_2"."rate_to_usd",
CASE WHEN "balance_sheet"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "long_term_debt",
"cash_flow"."operating_cashflow"
* COALESCE(
"ref_3"."rate_to_usd",
CASE WHEN "cash_flow"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "operating_cashflow",
"cash_flow"."capital_expenditures"
* COALESCE(
"ref_3"."rate_to_usd",
CASE WHEN "cash_flow"."reported_currency"
IN ('USD','None') THEN 1 END
) AS "capital_expenditures",
"balance_sheet"."period_type" AS "period_type",
"company"."asset_type" AS "asset_type",
(COALESCE(short_term_debt, 0) + COALESCE(long_term_debt, 0))
::NUMERIC / NULLIF(total_shareholder_equity, 0) AS "debt_to_equity",
operating_cashflow - capital_expenditures AS "free_cash_flow"
FROM "balance_sheet"
JOIN "cash_flow"
ON "balance_sheet"."symbol" = "cash_flow"."symbol"
AND "balance_sheet"."fiscal_date_ending"
= "cash_flow"."fiscal_date_ending"
AND "balance_sheet"."period_type" = "cash_flow"."period_type"
JOIN "company"
ON "balance_sheet"."symbol" = "company"."symbol"
LEFT JOIN "currency_reference" AS "ref_2"
ON "ref_2"."currency" = "balance_sheet"."reported_currency"
AND "ref_2"."date" = "balance_sheet"."fiscal_date_ending"
LEFT JOIN "currency_reference" AS "ref_3"
ON "ref_3"."currency" = "cash_flow"."reported_currency"
AND "ref_3"."date" = "cash_flow"."fiscal_date_ending"
WHERE "balance_sheet"."symbol" = $10
AND "balance_sheet"."period_type" = $11
AND "balance_sheet"."fiscal_date_ending" >= $12
AND "cash_flow"."period_type" = $13
AND "cash_flow"."fiscal_date_ending" >= $14
AND "company"."asset_type" = $15
),
"step_7" AS (
SELECT
ref_4.*,
"ref_5"."ref_6"
FROM "step_4" ref_4
LEFT JOIN LATERAL (
SELECT MIN("date") AS "ref_6"
FROM "daily_price"
WHERE "symbol" = ref_4."symbol"
AND "date" >= ref_4."reported_date"
AND "date" <= ref_4."reported_date" + INTERVAL '10 days'
) "ref_5" ON true
),
"step_8" AS (
SELECT *
FROM "step_5"
),
"step_9" AS (
SELECT *
FROM "step_6"
),
"step_10" AS (
SELECT
"step_7"."symbol",
"step_7"."fiscal_date_ending",
"step_7"."reported_date",
"step_7"."reported_eps",
"step_7"."period_type",
"step_7"."asset_type",
"step_7"."eps_lag1",
"step_7"."eps_lag2",
"step_7"."eps_lag3",
"step_7"."ttm_eps",
"step_8"."date",
"step_8"."asset_type" AS "asset_type_2",
"step_8"."price",
"step_9"."fiscal_date_ending" AS "fiscal_date_ending_3",
"step_9"."total_shareholder_equity",
"step_9"."short_term_debt",
"step_9"."long_term_debt",
"step_9"."operating_cashflow",
"step_9"."capital_expenditures",
"step_9"."period_type" AS "period_type_3",
"step_9"."asset_type" AS "asset_type_3",
"step_9"."debt_to_equity",
"step_9"."free_cash_flow"
FROM "step_7"
INNER JOIN "step_8"
ON "step_7"."symbol" = "step_8"."symbol"
AND "step_8"."date" = "step_7"."ref_6"
INNER JOIN "step_9"
ON "step_7"."symbol" = "step_9"."symbol"
AND "step_7"."fiscal_date_ending"
= "step_9"."fiscal_date_ending"
),
"step_11" AS (
SELECT
"step_10".*,
"price" ::NUMERIC / NULLIF("ttm_eps", 0) AS "pe_ratio"
FROM "step_10"
)
SELECT *
FROM "step_11"
ORDER BY "fiscal_date_ending" ASC NULLS LAST$1 = TSLA · $2 = quarterly · $3 = 2026-06-13 · $4 = 2022-02-08 · $5 = Common Stock · $6 = 2023-06-13 · $7 = TSLA · $8 = 2023-06-13 · $9 = Common Stock · $10 = TSLA · $11 = quarterly · $12 = 2023-06-13 · $13 = quarterly · $14 = 2023-06-13 · $15 = Common Stock
Table and column names follow the public data dictionary. Intermediate result stages are numbered step_1…step_N in execution order; ref_N are internal lookup aliases. Parameter placeholders ($1…) bind to the values below.
Cross-dataset joins, consecutive pattern detection, forward return studies, point-in-time backtests, event correlation, and more. One sentence in, structured results out.
01 · cross-dataset
Combine fundamentals with prices, insider transactions with earnings, balance sheet ratios with sector benchmarks. Multiple datasets resolved in a single query.
02 · temporal
Consecutive growth detection, forward return studies, pre/post-event analysis. The engine handles time-aligned computation across different data frequencies.
03 · saved
Save any query as a persistent screen. Refresh it, share its charts, build a library of research workflows that stay current as new data arrives.
04 · automatic
The right chart for the data shape: rankings, time series, comparison tables. Computed from the result structure, not selected by the user.
Honest coverage
What we do not have: survivorship-free index history.
Index membership in our data is as of today, not point in time. Screen the S&P 500 over 2015 and you are screening the survivors. Most tools let you find that out in the postmortem. The engine flags survivorship on every affected answer, and if your study needs historical constituents, we would rather tell you that here than after you have run it.
mrmarket.ai is an analytical engine, not a forecaster and not an advisor. It computes answers from data that has actually been reported, current and historical, on US-listed stocks and ETFs. It will not predict where a price is going, recommend a trade, or value an instrument it holds no data for. Knowing where that line sits is what keeps every answer one you can stand behind.
01Ask for analysis, not a verdict. “Compare these on the numbers” works. “Should I buy” does not.
02Keep one question per query. Split independent asks so the engine can answer a single, focused analysis well.
03Name the measure, the universe, and the window. “Operating margin, S&P 500, last five years” leaves nothing to guess.
04Read the receipt. Every answer ships its assumptions and the exact query it ran, so you can confirm it understood you.
05Trust the refusal. When something is out of scope, the engine says so plainly instead of inventing a number.
01
Lookup
“Tesla: P/E, debt-to-equity, and free cash flow. Current vs. 3-year trend”
Single-entity snapshot with historical context. A few seconds, end to end.
02
Screen
“ROE above 15%, D/E below 1, revenue growth above 10%, FCF positive. Large cap only”
Multi-factor screen across three financial statements.
03
Cross-dataset
“Insider purchases over $500K where the stock dropped 20% in the following 3 months”
Insider filings joined with daily price data. Forward-return computation.
04
Temporal
“4 consecutive quarters of FCF growth, margin expansion, and revenue acceleration”
Sequential trend detection with multiple conditions. One sentence.
05
Event study
“For every stock where insiders bought >$1M in the 30 days before an earnings beat, what was the 63-trading-day return?”
Three datasets (insider filings, earnings, daily prices) resolved into a single result.
Free to try. Pro from $20/month, Max at $100/month.
See pricingProfile 01
Cross-dataset analysis without the pipeline. Describe the study, get structured results. Spend your time on the analysis, not the infrastructure.
e.g. “Average 63-day return after insider purchases >$1M, grouped by sector, last 3 years”
Profile 02
Run institutional-caliber screens for your clients, without the institutional data budget. Every number from a filing. Every chart shareable.
e.g. “Top 20 quality compounders: 5-year ROIC stability, margin expansion, FCF growth”
Profile 03
Cross-reference price action against fundamentals and insider activity before the next print.
e.g. “Stocks reporting next week where insiders bought in the last 90 days and the stock is below its 200-DMA”
The cross-dataset analysis terminals were built for. Without the $25,000 price tag.
Daily prices, quarterly financials, earnings estimates, and insider filings sourced from publishers on the Nasdaq Data Link marketplace with point-in-time accuracy. Curated and maintained for the kind of cross-dataset queries that break generic tools.
X
Integrations
mrmarket.ai exposes a full MCP interface. Connect it to Claude, ChatGPT, or Gemini CLI and your AI gets a purpose-built analytical engine behind it. Multi-step research workflows, signal backtesting, comparative studies, pre-earnings watchlists. Your AI orchestrates. mrmarket.ai supplies the ground truth.
How it works
mrmarket.ai
query_data
mrmarket.ai
query_data
mrmarket.ai
query_data
Fundamentals
income, balance, cash flow
Prices
OHLC, returns, signals
Earnings
reported, estimates, calls
Filings
Form 4, 8-K, ownership
Your AI fans out parallel queries to mrmarket.ai. Each stack is one tool call resolving cross-entity joins. The AI synthesizes the answer.
Ask almost anything
“For every large-cap stock that gapped down 5%+ after earnings in the past 2 years, what is the 30/60/90-day recovery rate? Is it statistically significant vs. random 90-day windows?”
“Backtest this signal: buy stocks with insider purchases over $500K within 30 days before earnings, that beat EPS estimates. Hold 63 trading days. Show CAGR, max drawdown, and win rate vs. buying all post-beat stocks.”
“Build a pre-earnings watchlist: companies reporting in the next 2 weeks where insiders bought in the last 90 days, the stock is below its 200-DMA, and they beat estimates last quarter.”
Two-minute setup
Claude Code · One command
claude mcp add --transport http mrmarket https://mcp.mrmarket.ai/mcp
Every dataset we cover. Every query type the engine runs. No credit card.