Loading Your Own Instruments
Last updated: 2026-02-12
Whilst MantaRisk provides a default pricing data source, you may find it desirable to load your own instruments and / or pricing data into the system. Use cases include:
- Ensuring consistency of analytics across the organisation as pricing data sources may have discrepancies;
- Inputing custom instruments or price curves for the purpose of analytics;
- Creating Composite (Blended) Benchmarks;
- Handling private assets through a proxy instrument; or
- Changing certain properties of a known (proxy) instrument e.g. its CFI classification.
As a client, you retain ownership of any proprietary data uploaded to the platform and can delete it at any point in time. MantaRisk ensures strict confidentiality and does not use nor share your data with any third parties.
1 - Choosing the Correct JSON Object
Four JSON types are provided. The CFI asset class of the instrument you are loading will determin which JSON type to use:
| JSON Type | CFI |
|---|---|
| instrument_derivative | O DE DS EYB, EYC, EYD, EYE, EYM R ex RF F J |
| instrument_equity | E ex EYB, EYC, EYD, EYE, EYM |
| instrument_fixed_income | D ex DE, DS |
| instrument_fund | C, EYA, RF |
| instrument_generic | Other CFI codes |
2 - History
When providing historical data, the following needs to be taken into consideration:
- the data must be adjusted for dividends and splits where relevant
- for fixed income instruments the historical data is assumed to be the "clean" data i.e. without interest payments as these are specified in the instrument object — so coupons fall outside the price-return analytics (expected return, volatility, VaR/CVaR) and are forecast separately by the Cashflow module.
For best results, we recommend the history to be populated with 5 years worth of data.
At least 41 data points are required to calculate exposure. If fewer are provided the instrument is still saved, but the response carries a 210 status with a warning and the instrument is excluded from analytics.
Fixed Income instruments are an exception. If no data is specified for a Fixed Income instrument then the MantaRisk will reprice it based on the reference data provided.
3 - Proxy
The proxy object sits alongside instrument, timeframe_id and history on the historical_data item — not inside instrument. A proxy nested inside instrument is rejected with a 400 response.
The proxy is identified using one of the standard identification schemes: instrument code and apiid, ISIN and currency, or CUSIP and country.
If a proxy instrument is specified then the history object is ignored, and the 41 data point minimum described above does not apply.
The proxy has different behaviours depending on the asset class. This is to allow users to use MantaRisk's historical data but change certain aspects of the instrument's reference data for instance the CFI code.
The concept of proxy can also be used to model private assets.
Once a proxy is specified, the proxy's historical data is used for this instrument. MantaRisk updates that data automatically, there is no action required from our users.
| User Class | Proxy Class | Field | Behaviour |
|---|---|---|---|
| All | All | All | A user instrument cannot be used as a proxy |
| All | All | Currency | Currency must be identical between the user and proxy |
| All | All | History | History is always taken from the proxy |
| All | All | CFI | The CFI code (asset class) is taken from the user |
| All | All | Identifiers | The user's identifiers are used |
| All | All | Exchange (MIC) | The user's MIC is used if specified |
| All | All | Margin Data | The user's margin data is used |
| All | All | Fees | The user's fees are used |
| All | All | Dealing Rules | The user's dealing rules are used |
| Derivative | All | All | Derivatives are already pegged to an underlying instrument therefore the concept of proxy does not apply to derivatives |
| All | Derivative | All | A derivative cannot be used as a proxy or underlying instrument |
| Fixed Income | Fixed Income | Expiration Date Face Value Redemption Payment Redemption Currency Coupon Price Type | These fields are taken from the proxy |
| Fixed Income | Fixed Income | Classification | This field is taken from the proxy |
| Fixed Income | Others | All | A fixed income instrument cannot be proxied by anything other than a fixed income instrument. |
| Fixed Income | None | History | If a fixed income instrument is specified without its price history, we will reprice it using the provided reference data. |
| Others | Fixed Income | All | A fixed income instrument can only be proxy to a fixed income instrument. |
| Equity | Equity | Classification | Classification data (sectory, industry, primary country) is taken from the user if specified and from the proxy if not. |
| Equity | Others | Classification | Classification data is taken from the user |
| Fund | Fund | Breakdown | The fund's breakdown (percentage allocation to sectors, geographies etc) is taken from the user if specified and from the proxy if not. |
| Fund | Others | Breakdown | The exposure is calculated using the standard Factor methodology based on the provided proxy. |
Rebasing
By default the proxy's prices are read as-is. Set rebased to true on the proxy object to scale the proxy's price series so that it passes through your position's entry level on its entry date, and follows the proxy's relative movements from that point onwards.
Use this when the instrument and its proxy sit on different price scales — for instance a private holding proxied by a listed ETF. Without rebasing, the position would be valued at the proxy's own price level rather than yours.
Rebasing applies per position. If the position's entry date falls before the start of the proxy's price history, or no entry level is available, the proxy's prices are used as-is instead.
4 - Loading & Using the Data
To load the data, a call to the PUT /History endpoint must be made. The history will be loaded into MantaRisk for future use.
To use your data in other API calls, you will also need an apiid. This can be obtained by making a call to GET /history/api and noting the apiid corresponding to "api_name": "User Feed"
