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.

  1. Calendarsholidays, blackouts
  2. Security mastersecurities, issuers, classifications
  3. Accounts and groupsaccounts, groups, models, lists
  4. Positions, lots and cash
  5. Prices and FXEOD, intraday, FX, ADV
  6. Corporate actionssplits, dividends
  7. Data quality checks
  8. Pre-open compliance
  9. 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 #

FormatNamespaceStart-of-day stepWhat it holds
Calendars and holidaysurn:vestoris:feed:calendar:1.0CalendarsHolidays 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 windowsurn:vestoris:feed:blackout:1.0CalendarsTrading blackout windows by symbol or issuer (e.g. around earnings or while the firm holds inside information). Every active blackout rule checks them.
Issuersurn:vestoris:feed:issuer:1.0Security masterIssuers of securities, with their country, LEI and parent issuer. The issuer code is the key.
Security masterurn:vestoris:feed:security:1.0Security masterSecurities with their identifiers (ticker, ISIN, CUSIP, SEDOL, FIGI), issuer, classification and trading attributes. The ticker symbol is the key.
Classificationsurn:vestoris:feed:classification:1.0Security masterSector, 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 listsurn:vestoris:feed:list:1.0Security masterMembers 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.
Accountsurn:vestoris:feed:account:1.0Accounts and groupsAccounts (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 groupsurn:vestoris:feed:accountgroup:1.0Accounts and groupsWhich 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 portfoliosurn:vestoris:feed:model:1.0Accounts and groupsTarget 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.
Benchmarksurn:vestoris:feed:benchmark:1.0Accounts and groupsBenchmark constituents and their weights. A new benchmark code creates the benchmark; a full file replaces the constituents of the benchmarks it names.
Brokersurn:vestoris:feed:broker:1.0Reference (any time)Brokers as reference data (code, name, country, LEI). Vestoris is paper trading only: nothing is routed to a broker.
Positionsurn:vestoris:feed:position:1.0Positions, lots and cashQuantity 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 lotsurn:vestoris:feed:lot:1.0Positions, lots and cashOpen 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 balancesurn:vestoris:feed:cash:1.0Positions, lots and cashThe 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 pricesurn:vestoris:feed:price:1.0Prices and FXClosing 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 pricesurn:vestoris:feed:intradayprice:1.0Prices and FXPrice snapshots during the day (UTC timestamps). The blotter shows a loaded price younger than 15 minutes instead of the simulated one.
FX ratesurn:vestoris:feed:fx:1.0Prices and FXExchange rates per date: how many units of the quote currency one unit of the base currency buys.
Average daily volumeurn:vestoris:feed:adv:1.0Prices and FXAverage 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 actionsurn:vestoris:feed:corporateaction:1.0Corporate actionsStock 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 factorsurn:vestoris:feed:riskfactor:1.0Prices and FXFactor 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.