# FAQ

> Short answers to common questions about trading, quotes, verdicts, realized P/L, Claude, data storage, self-hosting and the apps.

Source: https://investi.live/docs/support/faq

Short answers to the questions people ask most. Each one links to the page with the full detail.

## Can Investi place trades?

No. Investi is read-only toward every broker. The Schwab connection makes only read requests, and no API endpoint, Claude tool, extension message or desktop feature can place, change or cancel an order. There is no permission scope that can trade. Recording an order in Investi only notes something you did elsewhere; it is never sent to a broker. See [Security and privacy](/docs/support/security-privacy#scopes).

## Why are quotes delayed?

Quotes, price history, calendars and analyst consensus come from Nasdaq's public endpoints, which are delayed about 15 minutes. Real-time exchange data needs a license Investi does not have, so it is never shown or approximated. Every price carries a freshness label so you can tell how old it is. See [Data sources](/docs/concepts/data-sources).

## Why is my verdict INSUFFICIENT?

Investi will not judge a company it cannot see clearly. The verdict is INSUFFICIENT when price history is unavailable (no last price or 52-week low), or when three or more of the hard rules cannot be evaluated because their data is missing. The verdict summary names what is missing. See [Verdicts and policy](/docs/concepts/verdicts-and-policy).

## Why doesn't my realized P/L match my broker?

The most common reasons:

- **Lot method.** Investi matches lots FIFO by default. If your broker uses a different method for that account, the realized figures differ. You can switch the reporting method to LIFO or HIFO in [Settings](/docs/app/settings). Your original executions never change; only the matching does.
- **Unknown cost basis.** Lots whose basis Investi does not know, such as a zero-basis transfer in, are never counted in the verified realized total. Their proceeds are reported separately as unknown-basis proceeds.
- **Coverage.** Investi only knows the history you imported or synced. If your import starts after you first bought a position, the early lots are missing.
- **Rounding and fees.** Realized P/L is computed per lot match and rounded to cents. Buy fees are added to cost and sell fees reduce proceeds.
- **Weekly review.** The weekly review on the History screen reports realized profit on average cost per symbol, the way the framework's reviews are kept, so it can differ from the lot-matched figures elsewhere in Investi and from your broker. The review says so.

See [Ledger](/docs/concepts/ledger) and [Import history](/docs/getting-started/import-history).

## What is a round trip?

One position in one account taken from flat to open and back to flat. It opens when your position moves away from zero and closes when it returns to zero. A fill that crosses zero, going from long to short or the reverse, closes one trip and opens the next. See [Ledger](/docs/concepts/ledger).

## How do I connect Claude?

In Claude, open Settings, Connectors, Add custom connector, and paste your Investi MCP URL (`<your origin>/api/mcp`, shown with a copy button in Investi under Settings, Connections). Claude registers itself and opens an Investi consent screen where you pick scopes. Claude's cloud connectors need a public HTTPS deployment; Claude Code and Claude Desktop can use localhost. See [Claude (MCP)](/docs/integrations/mcp).

## Can I use Investi from my own scripts?

Yes, through the REST API at `/api/v1` with a personal access token from Settings, Connections. The token is shown once and Investi keeps only a hash. See [REST API](/docs/integrations/rest-api).

## Where is my data stored?

In one Postgres database: the one named by `DATABASE_URL`, or, without it, an embedded Postgres (PGlite) on disk at `apps/web/.data/pglite`. Passwords, sessions and tokens are stored only as hashes, and Schwab tokens are encrypted with AES-256-GCM. See [Security and privacy](/docs/support/security-privacy#where-your-data-is-stored).

## Is anything sent to an AI provider?

Only if the server has `ANTHROPIC_API_KEY` set and you click to request a plain-language explanation on a research page. Then Investi sends that one company report, which includes your trading history in that company, to Anthropic. Claude explains the verdict; it never computes it. See [Security and privacy](/docs/support/security-privacy#plain-language-explanations-with-anthropic).

## Can I self-host?

Yes. Run `pnpm install`, then `pnpm dev` in `apps/web`, and open `/setup` to create the first account. Locally, no environment variables are required. For a production deployment, set:

| Variable | Purpose |
| --- | --- |
| `DATABASE_URL` | Postgres connection string. Required on serverless hosts such as Vercel. |
| `CRON_SECRET` | Optional, on Vercel. Turns on the scheduled alert check (`/api/cron/alerts`, every 10 minutes in market hours); the route refuses every request without it. |
| `INVESTI_PUBLIC_URL` | Your canonical origin, used for OAuth metadata, the MCP URL and redirects |
| `INVESTI_ENCRYPTION_KEY` | 32-byte base64 key that encrypts Schwab tokens. Needed only for Schwab. |
| `SCHWAB_APP_KEY`, `SCHWAB_APP_SECRET`, `SCHWAB_CALLBACK_URL` | An approved Schwab Trader API app. Needed only for Schwab. |
| `SEC_USER_AGENT` | Recommended contact string for SEC EDGAR |
| `ANTHROPIC_API_KEY` | Optional. Turns on plain-language explanations. |

See [Create an account](/docs/getting-started/create-account) and [Connect Schwab](/docs/getting-started/connect-schwab).

## Does the extension read my passwords?

No. Investi for Chrome never reads credentials or cookies, and it does not run on sign-in, password or order-entry pages, or on any page with a password field. It only reads ticker symbols on the page and asks your Investi server for that ticker's card, using a token that the finance site's page cannot read. See [Chrome extension](/docs/integrations/chrome-extension#security-model).

## Which sites does the extension work on?

Schwab, Yahoo Finance, Google Finance, TradingView, Robinhood, Seeking Alpha, MarketWatch, Finviz, Morningstar, Fidelity and E*TRADE. It was checked on the live Yahoo Finance, Google Finance, TradingView and Robinhood sites. Signed-in Schwab, Fidelity and E*TRADE pages are tested only against saved or reconstructed pages, and if a site's real structure differs the extension detects nothing rather than guessing. Apple Stocks is a Mac app, so no browser extension can reach it. See [Supported sites](/docs/integrations/chrome-extension#supported-sites).

## Is there a mobile app?

No. The web app is responsive and works in your phone's browser. There is also a desktop app for macOS and Windows, available from [/downloads](/downloads). See [Desktop app](/docs/integrations/desktop-app).

## How often do I need to reconnect Schwab?

Every 7 days. Schwab's refresh tokens expire after a week, and when that happens Investi marks the connection expired and asks you to authorize again. See [Connect Schwab](/docs/getting-started/connect-schwab).

## Can I try Investi without my own data?

Yes. Load the labeled sample portfolio from Settings or from the Home onboarding, and remove it when you are done. See [Sample data](/docs/getting-started/sample-data).
