← Developer Hub
Investment Analytics

Portfolio Scenario Lab

Run deterministic price and verified-sensitivity factor shocks against a governed portfolio.

Version: v2
Stability: stable
Sandbox: Available
Production: Entitlement required
Target latency: ≤ 850 ms
POST/api/v2/investment/portfolios/{portfolio}/scenarios

Missing factor sensitivities are reported as coverage gaps rather than inferred.

Required scope: investment:run
Try it in the FinanceGPT sandbox

The playground uses deterministic isolated sandbox fixtures. It never queries production workspace data and does not require you to paste an API secret into the browser.

Sign in to run
Example response
{
    "data": {
        "status": "completed",
        "change_pct": -8.4000000000000003552713678800500929355621337890625,
        "coverage_gaps": []
    }
}
Code examples

curl

curl -X POST \
  https://equitygpt.app/api/v2/investment/portfolios/1/scenarios \
  -H "Authorization: Bearer $FINANCEGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"global_price_pct":-10,"factors":{"rates_bps":150}}'

python

import os, requests

url = "https://equitygpt.app/api/v2/investment/portfolios/1/scenarios"
headers = {"Authorization": f"Bearer {os.environ['FINANCEGPT_API_KEY']}"}
payload = {
    "global_price_pct": -10,
    "factors": {
        "rates_bps": 150
    }
}
response = requests.request("POST", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())

javascript

const response = await fetch('https://equitygpt.app/api/v2/investment/portfolios/1/scenarios', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.FINANCEGPT_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"global_price_pct":-10,"factors":{"rates_bps":150}})
});
if (!response.ok) throw new Error(`FinanceGPT ${response.status}`);
console.log(await response.json());

php

<?php
$ch = curl_init('https://equitygpt.app/api/v2/investment/portfolios/1/scenarios');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => ['Authorization: Bearer '.getenv('FINANCEGPT_API_KEY'), 'Content-Type: application/json'], CURLOPT_POSTFIELDS => '{\"global_price_pct\":-10,\"factors\":{\"rates_bps\":150}}']);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) throw new RuntimeException($response);
echo $response;
Versions & changelog
v2 published
M27 publication of this governed FinanceGPT API operation.

Ready to build?

Explorer gives immediate isolated sandbox access. Production plans require a commercial entitlement.

Create account