---
title: "Optimize Portfolio"
method: POST
path: "/api/portfolio/optimize"
tags: ["portfolio"]
---

# Optimize Portfolio

`POST /api/portfolio/optimize`

## Request

- Base URL: `https://api.equity-rank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.equity-rank.com/api/portfolio/optimize`
- Auth: HTTP bearer

Black-Litterman portfolio model. F&F-only v1 (legal gate).
Returns model-derived weights for holdings used as model inputs.
Not investment advice. Educational use only.

## Request body

- PortfolioOptimizeRequest
  - `tickers` string[], nullable
  - `positions` object[], nullable

## Response `200`

Successful Response

- PortfolioOptimizeResponse
  - `holdings_used` integer, required
  - `weights` object[], required
  - `portfolio_stats` object, required
  - `disclaimer` string, required
  - `cache_age_minutes` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/equity-rank/apis/equity-rank-api.md) · [All operations](https://skmtc.dev/equity-rank/apis/equity-rank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/equity-rank/apis/equity-rank-api/revisions/c2f2463fee33?raw)
