Where the data comes from, and what may be shown
The binding constraint on a site like this is not the price of market data. It is the licence attached to it. Almost every affordable API tier is contractually personal, non-commercial and internal-use only, and several explicitly forbid public display.
Two flags, deliberately separate
May the raw values from this source be displayed publicly, verbatim? For most paid feeds the answer is no.
May statistics computed from it be displayed? Our own paper fills, percentage returns, profit and loss, drawdown and rank are our work product, not licensed market data. This distinction is what makes the project affordable at all — the alternative display-licensed tier costs about $2,499 a month.
The licence is not a comment in a README. It is a runtime object attached to every provider, the publication path asserts on it, and the build refuses to produce a deployable payload if an unpublishable source reaches it. Getting this wrong is made loud rather than silent.
Sources used to build this site
| Source | Vendor | Raw | Derived | Verified |
|---|---|---|---|---|
| aiport_own_work | aiport (this platform) own-work-product | publishable | yes | 2026-08-06 |
| coinbase_public | Coinbase public-exchange | publishable | yes | 2026-08-06 |
| eodhd | EOD Historical Data eod+intraday $30/mo | engine only | yes | 2026-08-18 |
| iex_hist | IEX Group, Inc. historical, free | publishable | yes | 2026-08-18 |
| sec_edgar | U.S. Securities and Exchange Commission public | publishable | yes | 2026-08-06 |
Notes on each source, including the ones deliberately not used, are in the licence register in the repository. The register records rejected vendors too, so that nobody re-evaluates them from scratch a year later.
Why you will not see a CUSIP anywhere on this site
13F filings are keyed by CUSIP. CUSIP is licensed by CUSIP Global Services with active enforcement, and its copyrightability is unresolved in two class actions in the Southern District of New York. Republishing them would be the clearest legal trap in this project.
The solution is structural rather than procedural. OpenFIGI maps CUSIP to a ticker and a FIGI; FIGI is an open standard and freely redistributable. No database table here has a CUSIP column, the public representation of an instrument has no field for one, and the pre-deploy check scans both the payload and this site's own source for a CUSIP field or property access. A CUSIP is held transiently in memory during the 13F join and never persisted.
Where the prices on this site come from
Every price you can see on this site comes from IEX, and from nowhere else. IEX publishes its own trading data and grants the right to redistribute it, which is what makes it showable here. Portfolio valuations, the charts, and the value of each holding are all computed from IEX trades.
These are last traded prices, not official closing prices. IEX runs no closing auction, so what we publish is the last trade that crossed on IEX at or before the moment we mark — four points during the day and one at the close. IEX is roughly 4% of US trading volume, so its last print can differ slightly from the consolidated closing price you would see elsewhere. We measured that difference across every position we hold on 2026-08-14: the typical gap was about a hundredth of one percent, and the widest was 6.3 basis points — twenty-three cents on a three-hundred-and-sixty-four dollar share. It is small, it is not zero, and it is the reason this paragraph exists rather than a footnote.
We buy a separate commercial data feed, and none of it appears on this site. It is what the trading engine reads — company fundamentals, market capitalisations, trading volumes and the full price history our rules are evaluated against — and its licence does not permit public display, so it is used internally and stays there. If a holding cannot be priced from IEX for a given session, that portfolio is simply not valued for that session. It is never quietly valued from the other feed instead.
Prices are still published a day behind. That is now our own conservatism rather than a licence requirement: raw bars older than 24 hours sit outside every exchange claim we have found, and the delay costs a reader nothing that matters on a record whose point is what was decided and why.
The audit record says which feed backed which number. Every valuation written to the hash chain carries a price_basis field, so a valuation made before this change and one made after it can be told apart permanently, by anyone, without taking our word for it.
Data provided for free by IEX. By accessing or using IEX Historical Data, you agree to the IEX Historical Data Terms of Use.
Macro series
Macro series are checked individually rather than as a group. The aggregator used for them is a redistributor whose own terms are permissive, but the terms of the series it hosts are not uniformly so: some are third-party copyrighted and must never reach a public surface. A series with no recorded licence status is treated as forbidden, and the assertion enforces that rather than trusting a convention.
News
Headline, publisher and outbound link only. Article body text is the publisher's copyright and not the aggregator's to grant; most aggregator licences forbid storing it and separately forbid feeding it to a language model. Regulatory filings and issuer investor-relations pages are the exceptions, and are used in full.