Market data feeds
Your bank sends files of dated numbers — exchange rates today, security prices and benchmark rates as those arrive. A layout describes how to read one of those files. A feed says which layout reads which file.
Both are settings you edit yourself. Taking on a new bank, or a bank changing its file format, is a change you make on this screen rather than a release you wait for.
What you see
The screen has three tabs.
| Tab | What it answers |
|---|---|
| Layouts | How do we read this bank’s file? |
| Feeds | Which layout reads which file? |
| Files received | What actually arrived, and when? |
Describing a file
A layout says where each of three things sits in a record: the subject, the date, and the value. What the subject holds depends on the feed. For exchange rates it is an ISO 4217 alphabetic code — USD, GBP, ZAR. The form tells you which, so you do not have to infer it from the bank’s specification.
Records come in two shapes.
- Fixed width. Every field sits at a fixed offset and runs for a fixed width.
- Delimited. Every field is a numbered column, counting from 1.
You also set the character encoding, how many header lines to skip, and — for the value — how the number is scaled and signed.
Start from a layout we already know
Select Start from a known layout before typing anything. If your bank uses a format this platform has seen, picking it fills the whole form in. The copy is yours from that moment: editing it changes nothing for anyone else, and a later change to ours does not reach you.
Numbers without a decimal point
Many bank files write a number with the decimal point implied rather than printed. Set Implied decimals to say how many places to shift.
| In the file | Implied decimals | What it means |
|---|---|---|
0000000010734 |
4 | 1.0734 |
0000000000250- |
4 | -0.0250 |
A trailing minus sits just after the field, so a negative record is one character longer than a positive one. Set Negative sign to Leading if your bank writes the sign in front instead.
Try it before you save
Select a sample file under Try it. You see the rows and the errors the layout as currently typed would produce.
The sample is never stored. It is read in your browser, sent with the draft, and gone when the answer comes back — nothing reaches the file store and nothing reaches settings.
Do this every time. Without it, the first sign that a position is one character out is a refused end-of-day run.
Binding a feed
On Feeds, pick a layout for each feed you receive. You can only pick a layout declared for that feed — a layout written for security prices cannot be bound to exchange rates, because that mistake shows up only as a failure at end of day.
A layout a feed uses cannot be removed, and its key cannot be renamed while the feed points at it. Remove the feed first, or add a second layout and re-point.
Removing a feed leaves its layout alone. The layout stays listed and you can bind it again.
Checking a day’s file
Open a feed and pick a business date.
You see the file’s name and version, every row read from it, and every record that could not be read — with the line number and the reason. A file delivered by a simulation rather than sent by your bank is labelled as such.
Two different people need this.
- Before end of day, you check that today’s file reads correctly while there is still time to ask for a corrected one.
- Months later, an auditor asks what a particular day was priced off, and the file is still there to answer.
What arrived
Files received lists the deliveries newest first, with the date they are for, the file name, the version, the size, and when they arrived.
Re-uploading a file for a day you already have does not replace it. The new file becomes version 2 and the first is marked superseded — still listed, still readable. “Version 1 was replaced at 09:40” stays answerable.
This list never opens the files. It tells you what arrived; select a row to read that day’s file.
Uploading a file yourself
Select Upload a file to file the day’s document without leaving this screen.
You choose the feed from a list of the ones your organisation has configured. You never type it. The feed is the only thing that decides which layout reads the file, so a typed one is a quiet way to file a price list as exchange rates.
After the upload you land on that file, parsed, so a wrong choice shows in seconds.
Worked example
Woodgrove Bank sends a fixed-width exchange-rate file. The currency code sits at offset
20 and runs 3 characters; the date sits at offset 31 and runs 10, written as
dd-MM-yyyy; the rate sits at offset 41 and runs 16, with the decimal point printed.
Records end with a carriage return and line feed, and the file is UTF-8.
A record reading USD, 16-09-2026, 1.0741 becomes one row: subject USD, effective
date 16 September 2026, value 1.0741.
The date on a row is the bank’s, not yours
A row’s date is the date the bank put on it. An overnight rate file filed for the 16th routinely carries rows dated the 15th, and that is ordinary — no error is reported. What each feed does with that date is its own business.
What your organisation configures
- Which feeds you receive, and which layout reads each one.
- The layouts themselves — positions, encoding, date format, decimal scaling and sign.
- Whether a configured feed is switched on.
- Who may see and change any of this.
The list of feeds a layout can be declared for is fixed by the platform, because something has to read the numbers at the other end.