Feature catalogue

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.

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.

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

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.