Help center › Data Feed Reference
Data Feed Reference
How to send data to Vestoris: the start-of-day order, the drop box, file names, full and delta files, and the standard XML format of every data set, each with its XSD.
Validate a filePrintable specification (PDF)Error codes
Vestoris is a paper-trading platform: orders and fills are simulated, and nothing here is investment advice. Vestoris is not a broker-dealer or an investment adviser. Feeds load reference data, holdings and market data for the simulation and for compliance checks.
Start-of-day processing #
Each business morning (New York time) a firm's feeds are processed in a fixed order: calendars, security master, accounts and groups, positions / lots / cash, prices and FX, corporate actions, then data quality checks and the pre-open compliance check. Until every step is done, every app page says "Start of day not complete" with the date the data is as of. Operations can override with a reason, which is logged.
- Calendarsholidays, blackouts
- Security mastersecurities, issuers, classifications
- Accounts and groupsaccounts, groups, models, lists
- Positions, lots and cash
- Prices and FXEOD, intraday, FX, ADV
- Corporate actionssplits, dividends
- Data quality checks
- Pre-open compliance
- Start of day complete
Feed order and dependencies #
A feed can depend on others: its file waits (M306) until they are applied for the same business date. A file that has not arrived by the feed's expected time raises a late alert (M301); after the cut-off the date is missed (M307).
Managed file transfer folders #
Each firm has a drop box with five folders: inbound (you write here), processing, archive (applied files, kept for the feed's retention), rejected (refused files) and outbound (files Vestoris writes for you, such as the optional end-of-day trade file). The folders sit outside the web root and are never reachable over the web. Senders connect with explicit FTPS (FTP over TLS) on port 21, or push over HTTPS with an API token.
File names #
Name files <FIRM>_<TYPE>_<YYYYMMDD>_<SEQ>.xml, e.g. F00012_PRICE_20261023_001.xml, where TYPE is the format name in capitals and SEQ counts files for the same date (001, 002 …). Write the data file first, then an empty <name>.done file: the .done file tells Vestoris the data file is complete (M304 until it arrives). A feed can also require <name>.sha256 holding the SHA-256 of the file (M303 when it does not match).
F00012_PRICE_20261023_001.xml the data file (written first) F00012_PRICE_20261023_001.xml.done empty; written when the data file is complete F00012_PRICE_20261023_001.xml.sha256 optional: the SHA-256 of the data file
Full and delta files #
delta (the default) changes only the records in the file; action="delete" removes one where the format allows it. full says the file is complete: records it does not list are inactivated, but if that would inactivate more than the feed's safety threshold the file is held for review (H201) instead.
Business dates #
businessDate is the date the data is for, as YYYY-MM-DD, and must be a business day of the feed's calendar (US exchange holidays 2026–2027, plus the firm's own days on the FIRM calendar) (F005). End-of-day prices for Friday are usually sent on Monday morning with businessDate set to Monday and priceDate to Friday.
Encoding, numbers and codes #
UTF-8 XML without a DOCTYPE (a DOCTYPE or entity declaration is refused: F002). Decimals are plain text such as 1234.5 (no thousands separators); dates are ISO 8601; currencies ISO 4217 (USD); countries ISO 3166-1 alpha-2 (US). Security identifiers carry their scheme (TICKER, ISIN, CUSIP, SEDOL, FIGI) and check digits are verified.
Compression and size #
Files up to 50 MB; a file may be gzip-compressed (.xml.gz) or a .zip holding one data file. Files of 50,000 records and more are read as a stream.
Checks and duplicates #
Every file is checked against its XSD, then its header (namespace and version F007, firm code F006, business date F005, recordCount F004), then row by row (codes R1xx). A file whose content (SHA-256) was already received is not loaded again (M302).
Errors and "held" #
Rejected rows are listed with their codes in an error file you can download; the rest of the file can still be applied. A feed can hold a file for review instead of applying it: always (H204), or when too many rows were rejected (H202), too many records would change (H203) or a full file would inactivate too much (H201). Held files are applied or rejected by Operations.
Versioning #
Each format has a versioned namespace, urn:vestoris:feed:<type>:1.0. Within a version only optional elements are ever added. A change that could break a valid file gets a new version (2.0); both versions are accepted side by side for at least 12 months, and the changelog says when.
Formats #
| Format | Namespace | Start-of-day step | What it holds |
|---|---|---|---|
| Calendars and holidays | urn:vestoris:feed:calendar:1.0 | Calendars | Holidays per calendar. The scheduler skips them; feed business dates and T-1 tokens follow them. Calendar US is built in for 2026 and 2027; FIRM is your own. |
| Blackout windows | urn:vestoris:feed:blackout:1.0 | Calendars | Trading blackout windows by symbol or issuer (e.g. around earnings or while the firm holds inside information). Every active blackout rule checks them. |
| Issuers | urn:vestoris:feed:issuer:1.0 | Security master | Issuers of securities, with their country, LEI and parent issuer. The issuer code is the key. |
| Security master | urn:vestoris:feed:security:1.0 | Security master | Securities with their identifiers (ticker, ISIN, CUSIP, SEDOL, FIGI), issuer, classification and trading attributes. The ticker symbol is the key. |
| Classifications | urn:vestoris:feed:classification:1.0 | Security master | Sector, industry, country, asset class, market-cap bucket and ESG flags for securities already in the security master. Updates only; the symbol is the key. |
| Security lists | urn:vestoris:feed:list:1.0 | Security master | Members of restricted, watch and exclusion (ESG, sanctions) lists. Compliance rules that use a list enforce its current members. Key: list name and symbol; a full file replaces the members of the lists it names. |
| Accounts | urn:vestoris:feed:account:1.0 | Accounts and groups | Accounts (funds) with their strategy, model, base currency, beneficial-owner group and status. The account code is the key. New accounts are visible to Admin, Compliance and Operations; grant others on Entitlements. |
| Account groups | urn:vestoris:feed:accountgroup:1.0 | Accounts and groups | Which accounts belong to which group. Compliance rule packages are assigned to groups, so membership decides which rules apply. A new group code creates the group. |
| Model portfolios | urn:vestoris:feed:model:1.0 | Accounts and groups | Target weights per model and security. A new model name creates the model. A full file replaces the targets of the models it names; weights per model should add up to 100% minus the cash target. |
| Benchmarks | urn:vestoris:feed:benchmark:1.0 | Accounts and groups | Benchmark constituents and their weights. A new benchmark code creates the benchmark; a full file replaces the constituents of the benchmarks it names. |
| Brokers | urn:vestoris:feed:broker:1.0 | Reference (any time) | Brokers as reference data (code, name, country, LEI). Vestoris is paper trading only: nothing is routed to a broker. |
| Positions | urn:vestoris:feed:position:1.0 | Positions, lots and cash | Quantity and average cost per account and security, e.g. from the custodian. Each loaded position replaces the open lots with one lot at the average cost. Use the lots data set to keep lot detail. |
| Tax lots | urn:vestoris:feed:lot:1.0 | Positions, lots and cash | Open tax lots per account and security with acquired date and unit cost, so tax-aware rebalancing uses your real lots. One lot per account, security and date (several purchases on one day are one lot). |
| Cash balances | urn:vestoris:feed:cash:1.0 | Positions, lots and cash | The cash balance of each account in its base currency. The difference from the current balance is booked as a cash movement, so the history adds up. |
| End-of-day prices | urn:vestoris:feed:price:1.0 | Prices and FX | Closing prices per security and date. Loaded prices take priority over the simulated ones for those dates (price-source priority: uploaded EOD, then the simulator). |
| Intraday prices | urn:vestoris:feed:intradayprice:1.0 | Prices and FX | Price snapshots during the day (UTC timestamps). The blotter shows a loaded price younger than 15 minutes instead of the simulated one. |
| FX rates | urn:vestoris:feed:fx:1.0 | Prices and FX | Exchange rates per date: how many units of the quote currency one unit of the base currency buys. |
| Average daily volume | urn:vestoris:feed:adv:1.0 | Prices and FX | Average daily volume in shares per security. Used by the liquidity rule (% of ADV) and the slicing advice. Earlier values stay in the history (as-of). |
| Corporate actions | urn:vestoris:feed:corporateaction:1.0 | Corporate actions | Stock splits and cash dividends. A split adjusts every open tax lot (quantity times the ratio, unit cost divided by it) on the ex-date; a dividend books cash to each account holding the security. Applied deterministically and undoable with the batch. |
| Risk factors | urn:vestoris:feed:riskfactor:1.0 | Prices and FX | Factor exposures (betas) per security, factor and date, e.g. from a risk-model vendor. |
CSV, delimited text and Excel files are still welcome for ad-hoc loads in the loading center: their columns are matched to the same fields. A feed set to "Vestoris XML" needs no column mapping.