Skip to main content

A qanat cut open: shaft mouths and fields on the surface, the tunnel running beneath them, and a man walking it

Qanat

A data platform for investment research.

License Python Status Discord members

What it is

Qanat is a data platform for investment research.

It does four things:

ingest pull data in from wherever it lives
save keep it, dated, exactly as it arrived. The same data arriving twice is stored once, so a re-run is always safe
transform clean it, type it, and compute what you define from it
serve hand it back, including as it stood on a past date

And it has its own orchestrator that runs those four and checks each one did what it should.

That part is not an extra. A source pulls on its own clock and a step waits for the table it reads, so something has to hold the order. And a job that failed quietly looks exactly like a job that had nothing to do. Only the thing that knew the job was due can tell those apart. Without it, a data set loses a day and nobody notices.

What it is for is investment research: company accounts, prices, anything with a date on it. Qanat computes the metrics you define over that data, for every company, for any date. Valuation metrics and screening metrics are just metrics you defined.

What it is not: it does not define metrics for you, does not hold your thresholds, does not pick companies, and does not trade. Those belong to you and to whatever you point at it.

The dates are the point

Company results come out a while after the period they cover. Before that day, nobody could read them.

So Qanat puts two dates on every number: the period it covers, and the day it became public.

Ask for a metric as of 2022 and you get it computed from what was public in 2022. Not from numbers that arrived in 2023. Without that, every answer about the past is quietly better than anything you could have acted on.

This is the one thing in Qanat that is hard to add later, and it is why the platform exists rather than a folder of spreadsheets.

Try it

Needs Python 3.10 or newer.

uv tool install qanat-fdtl                 # or: pip install qanat-fdtl
qanat init my-research --demo && cd my-research

That builds a small working project and runs it, in about ten seconds. The data is made up, so you need no API key and no network.

Use it from your agent

claude mcp add qanat -- qanat mcp --scope research

Any MCP client works. Then just ask:

"What data is in here, and where did it come from?"

"Add a metric for price over earnings."

"Which companies passed my rule in 2022?"

"What did those companies do over the next year?"

There is no website and no dashboard. Your agent is the screen.

What Qanat keeps, and what it does not

Qanat keeps what everyone shares.

  • Your data, in layers. A source lands it as it arrived; steps you write clean and type it.
  • Your metric definitions. A metric is the same number for everybody who asks, so it is worked out once rather than per request.

Two of those are not finished in 0.4.0: versioned definitions and kept values are the direction, and today a metric is a step you run. See Status.

Your client keeps what is yours alone. Thresholds. Target rates. Which companies you watch. Your saved work.

That split is not a preference. Qanat cannot tell two callers apart, so anything belonging to one person cannot be stored in it correctly. Your agent, or a hosted service, is where that lives.

So screening happens on your side. Qanat serves the values. Your client compares them to your numbers and gets the list.

The yaml, the step contract and the four rules Qanat enforces are in docs/contract.md. Tool-by-tool reference is in docs/agents.md.

What comes in the box

Connectors HTTP, SQL, CSV, and a fake market so you can play before you have any API key
Store a DuckDB file, or Postgres on localhost
Examples five of them. examples/filings-sample is the shape this is built for

Qanat makes no network calls of its own. The only ones are what your own sources make.

Status

Beta. It does what this page says on my own work, and few other people have run it. If something breaks, open an issue or say so on Discord.

You bring the data. Nothing in here reads a company filing yet. There are generic connectors and no SEC parser, so loading real accounts is your job, or point it at a feed you already have.

It does not trade. Qanat produces a list. It does not place an order, and no agent it serves ever will.

What it does not do yet. No industry grouping, so a ranking is against whatever list of companies you give it. No backfills. No incremental updates.

One honest limit. The two dates stop a step from seeing the future. They do not stop you, or your agent, from reading ahead while deciding what to try. The data cannot cheat. A person still can.

0.4.0 took a lot out. This was built as a backtesting engine and it is a data platform now, so everything that judged a result is gone: the significance bar, the trial ledger, the indicator IC block, portfolio weights, the benchmark, the in-sample split, and live scoring. About 1,300 lines. The reasoning is in CHANGELOG.md.

Three things on this page are the direction and not 0.4.0. The package still ships five fixed layer names rather than letting you name your own. Metric definitions are not versioned yet, and their values are not kept. And screening is still a step you write rather than one call. Each is a decision already made, not an open question.

What this is not. Airflow, Dagster and Prefect run general pipelines and run them across many machines. Use those for that.

Issues and pull requests welcome. See CONTRIBUTING.md.

License

MIT. See LICENSE.

Copyright (c) 2026 fidetolabs

Metadata

Release files for qanat-fdtl 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qanat-fdtl 0.4.1
File Size Uploaded Provenance
qanat_fdtl-0.4.1.tar.gz 1.1 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for qanat-fdtl 0.4.1
File Interpreter ABI Platform
qanat_fdtl-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / qanat_fdtl-0.4.1.tar.gz

Download URL qanat_fdtl-0.4.1.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
7f3a0b0cbd4944af6c51b030fdb10de0e283c4a2636d4d4c737023ca0a181757
BLAKE2b-256 checksum
How to use checksums
18855a26675b440e75cc6ffa2dc65c29db9a5140f1faa9bd845519fb4ce136d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / qanat_fdtl-0.4.1-py3-none-any.whl

Download URL qanat_fdtl-0.4.1-py3-none-any.whl
Size 121.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95d69bf9bb5ec9f331c336f8ae34a1ce6ae8926bdb0c3f6d997c627e26bf8805
BLAKE2b-256 checksum
How to use checksums
d94f91880e180ce1ae32194238d80f05acb3781ab08d51d2c32bcc7ed1ae4ea1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for qanat-fdtl 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for qanat_fdtl-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page