For banks, insurers, funds and regulators
Every figure sourced.
Every limit stated.
Finmind consolidates Uzbekistan's capital markets, FX, commodities and macro data from official sources, and runs tax, screening, insurance, pension and portfolio engines on top, sold per feature. This brief is for the institution deciding whether to buy: what the system does, where the data comes from, how it is secured, and what we refuse to claim.
Deciding whether to buy
You are in the right place. The brief below is the platform, provenance, posture and price included.
Deciding whether to fund
Investors and diligence teams have their own register. Finmind for investors.
The mandate
What Finmind does for an institution
One platform in place of the portals your analysts already juggle. Everything below exists in the running system today; nothing on this page is a roadmap item.
- For a bank
- The whole retail market on one screen: deposit, loan and card catalogues read from each bank's own published pages, the central bank's registry of 35 licensed banks, official FX and the interbank money-market curve. Rates are stored as the bank stated them, never computed to fill a gap, so a comparison desk sees what was published and what was not.
- For an insurer
- A market view of 51 products from ten insurers, the state register's participant roster, and a needs-analysis engine whose every multiplier is a named industry convention, disclosed in the response and overridable per call. An input it lacks returns “cannot assess” with the missing list, never a need of zero.
- For a fund or brokerage
- The exchange's own numbers in a queryable warehouse: prices, disclosures, corporate actions, fundamentals and 300+ named ratios per issuer. Shari'a screening to AAOIFI Standard 21 and Meezan's criteria across every listed ticker, and portfolio risk (volatility, VaR, drawdown, beta, concentration) computed in exact decimal.
- For a regulator or auditor
- A system built to be examined. Every figure carries its source and date; an unknown renders as “n/a” with a machine-readable reason; statutory parameters cannot be saved without citing their decree; and anything that can act on money writes an audit row with its reasoning before it acts.
Provenance
Where every number comes from
The registry that governs this platform has one evidence rule: an upstream may be marked live only when a named code path talks to it AND we have observed the data it wrote, with a row count and a date. These are the sources that pass it today.
| Source | What it supplies |
|---|---|
| Central Bank of Uzbekistan (cbu.uz) | Official UZS FX rates, policy rate, gold-bar prices, bank registry and the sovereign yield curve. |
| CoinGecko crypto prices (api.coingecko.com) | Crypto asset prices and market caps for the global-markets crypto strip. |
| Gold spot feeds (gold-api.com, Yahoo GC=F) | International gold spot price (XAU/USD) for the gold page and real-return math. |
| Narx-Tahlil price monitor (narxtahlil.uz) | Official consumer product price statistics for the cost-of-living view. |
| OpenInfo corporate disclosure portal (openinfo.uz) | Issuer disclosures, daily equity OHLCV bars, issuer fundamentals and the day-aggregate screener behind live quotes. |
| State Statistics Committee SIAT (stat.uz) | Official macro indicators (CPI, GDP and friends) for the macro dashboard. |
| Central Securities Depository (uzcsd.uz) | Corporate actions (dividends, meetings) from the depository's public register. |
| Uzbek Commodity Exchange (uzex.uz) | Commodity trade register and weekly exchange quotes for the commodities view. |
| Uzbek Republican Currency Exchange (uzrvb.uz) | Weighted FX rates and volumes, the interbank/repo money-market curve and government-bond auctions. |
| Tashkent Stock Exchange (uzse.uz) | Real-time trade tape, authoritative share registry (shares outstanding/par) and bond listings. |
| Yahoo Finance quotes (query1.finance.yahoo.com) | Global market quotes (US indices, big tickers) for the world-markets strip. |
The registry holds 26 upstreams in all: beside the 11 live above, 8 are partial, 4 designed and 3 blocked by gates no code can open, each with its blocker stated. The full board, status by status, is on the investor register.
- Upstream systems live
- 11 of 26
- backend/apps/integrations/catalog.py
- Timescale hypertables
- 4
- db/schema.sql:2556-2559 (create_hypertable, four calls)
- Named ratios per issuer
- 300+
- db/README.md (financial_ratios, EAV)
- Float columns in the schema
- 0
- pg: select count(*) from information_schema.columns where table_schema='public' and data_type in ('double precision','real')
Measured against the repository and the running system (registry and schema figures 23.08.2026 and 31.08.2026). The investor register publishes the reproduction command beside every figure.
The warehouse itself is TimescaleDB. Market time-series live in 4 hypertables; price bars are chunked in 30-day partitions and compressed after 90 days, so range scans stay fast as history grows. Ratios are stored one row per ratio per period, which is why a new ratio needs no schema change.
And the rule underneath all of it: a price on this platform comes from a named source or it is null. A ratio that cannot be computed is emitted as null with the reason recorded, per instrument, per ratio. Zero is a claim; we only make it when a source did.
Posture
Security, stated as what the code does
No certification is claimed anywhere on this page. What follows is the actual posture, control by control, each verifiable against the source.
- Credentials encrypted, failing closed
- Brokerage credentials are Fernet-encrypted with a key that exists only in the environment. There is no default key and no generated fallback: if the key is absent, every encrypt and decrypt raises, and the platform refuses to store the credential rather than persist plaintext (backend/apps/brokerage/crypto.py).
- Entitlements enforced on the server
- A feature grant is an API permission checked on the backend, not a hidden button. What a user has not bought, the API refuses; the interface merely reflects that refusal.
- Every row has an owner
- Portfolios, orders, messages and declarations are owner-scoped at the query level. One user's data is structurally invisible to another, not filtered out in the view layer.
- Two-factor that proves delivery first
- Optional Telegram two-factor login can only be enabled after a live code was actually delivered and verified, so no account can become gated on an undeliverable code. Codes are hashed, expiring, attempt-capped and single-use, and two-factor is deliberately not a paid feature.
- Secrets masked by default
- Anything secret-like renders masked and is revealed per item behind an explicit control; list views only ever hold the masked shape.
- Money is exact, end to end
- NUMERIC(38,2) in the database, decimal strings on the wire, integer minor-unit arithmetic in the browser. No money value touches a float anywhere, and the schema can prove it in one query.
- A statutory number cannot be uncited
- Tax and pension parameters are effective-dated rows naming the decree that set them, and the database CHECK constraint refuses a row without a source reference. Citation is schema, not habit.
What we do not hold: no ISO 27001, no SOC 2, no PCI DSS. Nobody has audited this platform but us, and a procurement page that implied otherwise would fail the first check you ran. The controls above are code; bring your security team and we will walk them through it, module by module.
Integration
How data gets in, and what gates it
Four lanes, honestly labelled: what arrives live, what arrives at protocol level, what arrives by file because the law or the upstream allows nothing better, and what waits on a contract rather than on code.
Live, on a schedule
- The eleven upstream feeds above are fetched on schedules, cached, and shared across all users.
- A feed that hiccups serves its last good snapshot, labelled with its age, rather than a gap or a guess.
- A non-positive price is dropped, not displayed: an empty panel is honest, a fabricated zero is not.
The broker, at protocol level
- The platform speaks the UZSE broker terminal protocol (fondbozori.uz) natively, not as a screen-scrape: account sync, order routing and reconciliation against the venue's own order list.
- The login cryptography is locked to published test vectors byte-for-byte, asserted in two client implementations' test suites.
- The venue offers no public API and pushes no fill confirmation; what that means in practice is stated in the limits below.
By file, on purpose
- Broker statements import from files, so a portfolio never depends on a live connection.
- KATM credit reports are read from the file the subject downloads themselves: the bureau publishes no consent-free API, and under law that is the only route that needs nobody's permission but the subject's.
- Insurance policies paste in from the state register keyed on the register's own series and number, so the same policy can never import twice.
Gated by contract, not by code
- OneID (id.egov.uz) national sign-in is implemented and not live: client registration is contract-only, and no call has ever completed a round trip. We say so rather than imply otherwise.
- The taxpayer cabinet (my.soliq.uz) needs a per-taxpayer E-IMZO session or a service agreement; neither can be coded around.
- Payment operators publish their merchant protocols, and the adapters are written against them; the credentials only exist after signed agreements, so none is switched on.
Procurement
How it is bought and deployed
Finmind is sold per feature, time-boxed monthly or annual. There are no subscription tiers: an entitlement is granted explicitly for a period, and it is enforced as a server-side API permission, so what was bought and until when is a database fact rather than a billing convention. A desk that needs market data and screening does not pay for a tax engine it will not use.
Current price per feature
1 000,00 UZS / month
10 000,00 UZS / year
Read from the catalogue API as this page rendered: an introductory market-entry price for individual accounts. Institutional terms, seats and scope are agreed per agreement, not published here.
Deployment, as it runs today
The platform is a containerized stack: a Django API with scheduled workers, an ingestion service, a Next.js frontend and a TimescaleDB warehouse (docker-compose.yml at the repository root is the deployment, not a diagram of it). Payment collection is manual today, by design and by necessity; the limits below state exactly why, because how we take money is part of what you are evaluating.
An institutional purchase therefore starts as a conversation: scope, seats, the agreement, and a service level negotiated with the infrastructure to honour it. The platform you would be agreeing about is running now, and you can drive it before any of that paper exists.
Stated before you find them
What we refuse to claim
A procurement page is credible in exact proportion to what it admits. These are the limits that bear on a purchase decision, in our own words.
- Nobody bought before you
- No institution runs Finmind today. There are no reference customers, no logos, no usage figures on this page, and none held back to show privately. What we can demonstrate is the running system itself, live, with you driving.
- No certificate stands behind the security chapter
- No ISO 27001, no SOC 2, no PCI DSS assessment has been performed. The security section above describes what the code does, and every control on it can be verified against the source with us in the room. We state the posture; we do not borrow a badge for it.
- No SLA and no uptime figure
- We publish neither, because neither has been measured over a period we could defend. A service level belongs in an agreement, negotiated with the infrastructure to honour it, not asserted on a web page first.
- The state's own gaps bind us too
- There is no e-filing API, so the platform renders the exact declaration and the taxpayer files it. The compulsory-insurance register is captcha-gated, so policies are recorded and linked to the register, not verified against it. Where a decree behind a statutory number is unpublished, the affected rows say pending rather than guess.
- Payment collection is manual today
- A purchase is a server-priced request, a reference QR that is explicitly ours, an out-of-band payment and a human approval that creates the time-boxed grant. For an institution that means an agreement and an invoice conversation, not a checkout. The automation exists in code and waits on operator agreements, not on engineering.
This is the buyer's selection, not the whole account. The complete register of limits, the order ledger and the defect history live on the investor register, where every figure carries the command that reproduces it.
Next step
Evaluate the running system, not this page
Ask for a walkthrough and we drive the live platform with your team watching: the data warehouse and its sources, the screening output with its refusals, the declaration export in the authority's own notation, and the places where the system says “n/a” and why. The honest gaps are the demonstration; a product that cannot show you its refusals is hiding them.
Bring your own checklist. Every measured figure we publish carries its source, and your team can re-run the commands with us in the room.
Contact details read from the platform's own public settings as this page rendered.
Contact
Questions, feedback or a feature request. Your message reaches the team directly and we reply by email.