Skip to main content
Core Platform

Estimate point-in-time thematic factor returns

POST /investment/theme-watch/factors

Contract

Runs the governed financegpt_theme_factor_ridge_v1 cross-sectional model on observed monthly market history and the latest taxonomy version published by the requested as-of date. It also derives descriptive specific risk and exposure-weighted theme indices. No synthetic market data, portfolio rebalance, Financial Action or trade is created.

Authentication
Bearer credential required
Required scope
investment:run
Status
Published

Request body

application/json ยท optional
{
    "as_of_date": "2026-08-16",
    "history_months": 36,
    "ridge_lambda": 0.1000000000000000055511151231257827021181583404541015625,
    "minimum_symbols_per_factor": 3,
    "max_factors": 25,
    "max_symbols": 120
}

Code examples

These examples compose a request only. Public reference pages never transmit your credential or execute the operation.

curl

curl -X POST \
  -H "Authorization: Bearer $FINANCEGPT_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  --data '{
    "as_of_date": "2026-08-16",
    "history_months": 36,
    "ridge_lambda": 0.1000000000000000055511151231257827021181583404541015625,
    "minimum_symbols_per_factor": 3,
    "max_factors": 25,
    "max_symbols": 120
}' \
  "https://financegpt.dev/api/v2/investment/theme-watch/factors"

javascript

const response = await fetch("https:\/\/financegpt.dev\/api\/v2\/investment\/theme-watch\/factors", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${FINANCEGPT_API_KEY}`,
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "as_of_date": "2026-08-16",
    "history_months": 36,
    "ridge_lambda": 0.1000000000000000055511151231257827021181583404541015625,
    "minimum_symbols_per_factor": 3,
    "max_factors": 25,
    "max_symbols": 120
}),
});
const data = await response.json();

python

import json
import os
import requests

response = requests.request(
    'POST',
    'https://financegpt.dev/api/v2/investment/theme-watch/factors',
    headers={
        'Authorization': 'Bearer ' + os.environ['FINANCEGPT_API_KEY'],
        'Accept': 'application/json',
    },
    json=json.loads('{"as_of_date":"2026-08-16","history_months":36,"ridge_lambda":0.1000000000000000055511151231257827021181583404541015625,"minimum_symbols_per_factor":3,"max_factors":25,"max_symbols":120}'),
)
response.raise_for_status()
print(response.json())

php

<?php
$ch = curl_init('https://financegpt.dev/api/v2/investment/theme-watch/factors');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('FINANCEGPT_API_KEY'),
        'Accept: application/json',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(array (
  'as_of_date' => '2026-08-16',
  'history_months' => 36,
  'ridge_lambda' => 0.1000000000000000055511151231257827021181583404541015625,
  'minimum_symbols_per_factor' => 3,
  'max_factors' => 25,
  'max_symbols' => 120,
)),
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Responses

Status Description
201 Thematic factor run sealed with SHA-256 market
503 Point-in-time taxonomy exposure or observed market history coverage is insufficient

Authority boundary

A developer credential proves application identity and permits only its scopes. It does not grant model promotion, policy override, QLM rebinding, or Financial Actions execution authority unless those separate controls are satisfied.

investment:run

Machine-readable sources