Overview
When the positions file data is sent to FundApps, a number of validation checks are run on the data to ensure that FundApps' rules can process it successfully. In order to format your file so that it will validate, please refer to our Documentation page.
Positions File Validation
A number of validation steps take place before the data is sent for checking:
Is the format well-formed? e.g. Can the XML be parsed and interpreted by FundApps.
You can apply data overrides & defaults that are configured in the system. This allows you to correct basic data issues coming from your internal systems.
For each portfolio in the file:
Check if the PortfolioId exists in FundApps
Check that the NavDate is present and after the InceptionDate
For each Asset or Instrument in the file:
Check if the AssetId or InstrumentId is unique (The AssetId must be unique within the portfolio, the InstrumentId must be globally unique)
Check that all properties are known, no blanks. If not this can cause the validation to fail unless the "Ignore unknown columns" option is set (only possible when uploading files manually in the UI, not available for API uploads).
Depending on AssetClass: Check all properties are valid (e.g. CallPut is not valid on an Equity, an Equity cannot have an underlying InstrumentId)
Depending on AssetClass: Check that all mandatory properties are present (e.g. IsCashSettled is required for derivatives)
For each property in the file:
Validate data type (e.g. is the field a valid Integer / Decimal / Date)?
If the property must be from a list of possible values (e.g. countries, currencies etc.), validate that the value is one of the possible values
Tips & Tricks
AssetID
To make the AssetId unique for cash positions consider appending the Counterparty & perhaps the Account Number to the Currency to make a distinct name for every cash position
If your source data system keeps multiple positions in the same instrument consider appending the Counterparty/Custodian to the AssetId to make it unique
Unknown Values
If struggling to source certain data points, you can implement temporary solutions. See our Control Rules article for more details on Unknown Values.
Validation Failures
Additional reasons files can fail validation:
Essential properties missing (any properties with a red checkmark on the Documentation page)
Positions file references a portfolio that does not exist in the environment
An Instrument references a component InstrumentID that is not present in the positions file
An Instrument references its own InstrumentID as its component
An invalid input (formatting issues)
Blank/null values for 'Decimal' properties
Incorrect format - different properties require different formats (string, list, decimal, boolean)
InstrumentId has to be different from PortfolioId
Providing underlying that is not valid for that asset class
Processing issues caused by one-off specific incidents
Troubleshooting
You can find the reason why a file failed via the Upload Positions view after the file upload attempt was made. Alternatively, if you select "Validate File" from Previous Uploads, you will then be shown the Validation Results.