Skip to main content
POST
/
strategies
/
{strategyId}
/
optimized-portfolio
Optimize the portfolio for a strategy using a subset of companies
curl --request POST \
  --url https://api.noonum.ai/v1/strategies/{strategyId}/optimized-portfolio \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "companyIds": [
    "<string>"
  ]
}
'
{
  "metadata": {
    "numberStocks": 50,
    "weightedLinguisticBeta": 0.12,
    "marketBuzzCoverage": 25.4,
    "annualizedReturn": 0.18,
    "volatility": 0.09,
    "cvar": 0.2,
    "sharpeRatio": 1.5,
    "expectedDailyReturn": 0.001,
    "maxDrawdown": -0.25
  },
  "portfolio": [
    {
      "id": "b544d95b-43a6-4a50-a326-90552b05c551",
      "symbol": "TSLA",
      "name": "Tesla, Inc.",
      "isin": "US88160R1014",
      "exchange": "NASDAQ",
      "market": "us",
      "sector": "Consumer Cyclical",
      "industry": "Auto - Manufacturers",
      "marketCap": 902298200000,
      "volAvg": 1250000,
      "linguisticBeta": 0.12002,
      "marketBuzz": 0.406,
      "active": true,
      "weight": 0.035,
      "figi": "BBG000N9MNX3",
      "mic": "XNAS",
      "reasoning": "<string>",
      "convictionScore": 0.75
    }
  ]
}

Authorizations

Authorization
string
header
required

Enter 'Bearer' followed by a space and then your JWT or API Key. Example: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... or Bearer YOUR_API_KEY_HERE

Path Parameters

strategyId
string
required

UUID of the user strategy

Query Parameters

minMarketCap
number<double>
default:1000000000

Minimum company market capitalization (USD) required for inclusion.

Required range: x > 0
returnWeight
number<double>
default:1

Multiplier applied to expected returns in the optimization objective.

Required range: x > 0
linguisticBetaWeight
number<double>
default:0.5

Weight of the linguistic beta term in the optimization objective.

Required range: 0 <= x <= 1
riskFreeRate
number<double>
default:0.03

Annual risk-free rate assumption used for risk metrics.

minActivePositions
integer
default:50

Minimum number of holdings that must receive a positive weight.

Required range: x >= 2
minActivePositionWeight
number<double>
default:0.01

Minimum weight assigned to holdings counted toward the active position requirement.

Required range: x > 0.0001
maxWeight
number<double>
default:0.2

Maximum weight allowed for any single holding.

Required range: 0 < x <= 1
marketBuzzWeight
number<double>
default:0.05

Penalty weight applied when allocations diverge from market buzz preferences.

Required range: 0 <= x <= 1

Body

application/json
companyIds
string[]

Optional list of company IDs to include before applying other filters; if omitted or empty, the full strategy set is used.

Response

Optimized portfolio data

metadata
object
required
portfolio
object[]
required