Upload a .csv file — one instrument per row. Set product_type to identify the product.
Important CSV rule: The CSV is flexible, but it is not arbitrary. The user can upload a mixed portfolio CSV, but each row must contain all required fields for its own product_type. Columns can be in any order, unused columns can be left empty, but missing required fields will make that row fail or return no valid stress result.
There is no fixed number of columns. The required columns depend on the instrument. For example, a stock needs fewer fields than an option, and an option needs fewer fields than a convertible bond.
Supported product_type values
| product_type | Description | Key fields required |
fi_bond | Fixed-rate bullet bond (QuantLib) | face_value, coupon_rate, issue_date, maturity_date, pricing_date, risk_free_rate, spread, frequency, day_count_convention, quantity |
fi_frn | Floating-rate note | face_value, current_float_rate, spread, risk_free_rate, frequency, quantity |
fi_zcb | Zero-coupon bond | face_value, time_to_expiry_years, risk_free_rate, spread, quantity |
fi_bond_future | Bond future (CTD-based) | ctd_clean_price, conversion_factor, accrued_interest, ctd_modified_duration, risk_free_rate, quantity |
fi_irs | Interest rate swap (pay fixed) | fixed_rate, current_float_rate, notional, maturity_years, frequency, risk_free_rate, quantity |
fi_cds | Credit default swap (protection buyer) | cds_spread, notional, maturity_years, risk_free_rate, recovery_rate, quantity |
fi_cap_floor | Interest rate cap or floor | cap_floor_type, notional, strike_rate, maturity_years, volatility, risk_free_rate, frequency, quantity |
fi_inflation_bond | Inflation-linked bond | face_value, coupon_rate, time_to_expiry_years, real_yield, inflation_rate, frequency, quantity |
Shocks — Moderate: yield ±50bps, spread ±25bps, vol ±20%, infl ±50bps | Extreme: yield ±150bps, spread ±75bps, vol ±50%, infl ±150bps