Trade publication

Prev Next

FINBOURNE’s Trade Publication Framework allows you to automatically push transaction and instrument changes from LUSID to downstream systems as enriched CSV files.

When LUSID creates, updates, or deletes a transaction in a monitored portfolio, the trade publication framework captures that event and publishes a formatted file to LUSID Drive or an SFTP server. You can then push that trade data to fund administrators, prime brokers, or internal systems that require a structured file feed.

How it works

The integration monitors a portfolio for transaction and instrument changes. When it detects a change, the integration:

  1. Retrieves the transaction and instrument data from LUSID.

  2. Applies your configured filters to determine whether to publish the transaction.

  3. Enriches and transforms the data according to your configured column mappings.

  4. Writes the output to a CSV file which it delivers to your specified destination (SFTP and/or LUSID Drive).

Setting up the integration

An integration instance is a configuration of data points to export to LUSID Drive or an external SFTP.

Prerequisites

Before getting started, ensure you have:

  1. Navigate to Integrations > Dashboard.

  2. Click Create instance and select Trade publication framework from the available integrations.

  3. Specify the following in the Integration details tab:

    • Name: A friendly name for this integration instance

    • Description: A detailed description of the instance

  4. Go to the Integration settings tab and specify the following:

    • Portfolio Scope and Portfolio Code: The scope and code of the portfolio to monitor and publish changes

    • File Name: A name for the CSV the integration outputs; supports dynamic tokens

    • Export Header: Text to prepend to the top of the output file; supports dynamic tokens

    • Export Footer: Text to append to the bottom of the output file; supports dynamic tokens

    • Time Zone: The timezone to use for date/time tokens in the file name, header, and footer

    • Optionally, you can configure cut-off times to control how the integration dates late-arriving transactions; if you configure any of the following fields, all three are required:

      • End of Day Cut Label: The integration assigns the next business day as the transaction date for transactions processed after this cut label

      • Start of Day Cut Label: Sets the timestamp for transactions moved to the next business day

      • Holiday Calendars: One or more LUSID calendars to use when calculating the next business day

    • Transaction Filter: A LUSID filtering syntax expression that restricts the transactions the integration includes in the output file, for example to only publish equity transactions:

      instrument.instrumentDefinition.instrumentType eq 'Equity'
    • Trade Publication Framework Mapping: Specify one or more column mappings to define the structure and content of the output file; only columns you define here will appear in the output file. Each item corresponds to one column in the output file, and each item should contain the following:

      • LUSID Value Source: A LUSID filtering syntax expression that defines where in LUSID the data for this column should come from

        Note

        In addition to the standard instrument and transaction fields available for filtering on, you can filter for PublicationStatus which reflects the lifecycle of transactions in the context of files output by this integration instance. The value can be one of:

        • New: This transactionId is new since the last run of this integration instance

        • Amended: Previous runs of this integration instance have seen this transactionId and there has been an update to the transaction

        • Cancelled: Previous runs of this integration instance have seen this transactionId but the transaction has now been deleted in LUSID

        • InstrumentMatured

        • InstrumentPartialClosure

        • InstrumentFullClosure

      • Output Column Name: A name for the column in the output file

      • Aggregation Mode: How the integration should aggregate values if multiple rows contribute to it

      • Value Format: A format string for dates and decimals; overrides the Default number format/Default date format

    • Default number format and Default date format: The data type to use for numbers and dates in the output file (unless overridden in the column mapping configuration); see .NET standard numeric format strings and .NET date-time format strings

    • SFTP credentials: If you intend to send output files to an SFTP, specify the required details:

      • Host Name

      • Port

      • Username

      • Password

      • Private Key

      • Passphrase

      • Base Path

      • Encryption Key: Optionally, supply your public PGP key to encrypt the output file before delivering it to your SFTP; the integration encrypts and signs the file before upload

    • Drive path: If you intend to send output files to LUSID Drive, specify an existing folder path; note that you must create the folder path before running the integration instance

  5. Go to the Execution settings tab and specify the following:

    • Enable integration: Whether to enable scheduled runs of the integration upon saving the instance

    • Schedule and Schedule timezone: A cron expression and timezone that defines when the integration should run

  6. Click Save to create the integration instance.

Running the integration

LUSID runs the integration instance automatically according to your specified schedule, or you can run the instance manually on demand. If the integration finds one or more trade updates matching your transaction filter, you can find the output file in your specified LUSID Drive or SFTP location.

Important

Remember to create the folder path in LUSID Drive before the schedule runs. If the folder path does not exist, the integration run will fail.

For example, let’s imagine you create an integration instance with the following configuration that you choose to output to Drive at 6pm each day:

Now let’s say the following events occur for your Equities portfolio on the 27th Mar 2026 between 9am and 5pm:

  • You update the price of a BP purchase (Txn01) from 9.79 to 10.00

  • You receive confirmation of a purchase of Microsoft shares (Txn02)

When the trade publication integration next runs at 6pm, the output CSV file looks like this:

Equity txns for 27-03-2026
TxnID,Type,Security,Units,Price,Status
Txn01,BuyWithAutomaticAmountCalcs,BP,1011.00,10.00,Amended
Txn02,BuyWithAutomaticAmountCalcs,Microsoft,2002.00,16.00,New
Acme co.

Monitoring and troubleshooting integration runs

See how to monitor integrations and troubleshoot general issues.

Appendix A: Supported token values

You can use the tokens listed in this section to generate dynamic values at the time of file creation for the following fields:

  • File Name

  • Export Header

  • Export Footer

  • Drive Path

For example, to dynamically produce the file name trades_20240115_1430.csv, you might specify the following configuration value: trades_{year}{month}{day}_{hour}{minute}.

The following table lists all supported token values:

Token

Description

{day}

Day of the month (01-31)

{month}

Month (01-12)

{year}

Four-digit year

{hour}

Hour in 24-hour format (00-23)

{hour12}

Hour in 12-hour format (01-12)

{minute}

Minute (00-59)

{second}

Second (00-59)

{millisecond}

Millisecond (000-999)

{meridiem}

AM or PM

{rowcount}

Number of data rows in the generated file

{domain}

Your LUSID domain name