Portfolio · Endpoint
Portfolio ledger
Daily portfolio ledger: equity, exposure, turnover and costs.
/v1/alphas/{alpha}/portfolioParameters
Path parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
alpha | string | required | — | alpha_id (e.g. CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42). Use the value returned by GET /v1/alphas. |
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
book | string | optional | long_short | One of the books listed by /books — long_short and long_only, plus their raw_ twins for keys with raw-book access. A book the key may not see is rejected exactly like one that does not exist. |
from | YYYY-MM-DD | optional | window start | First trading day, inclusive. |
to | YYYY-MM-DD | optional | window end | Last trading day, inclusive. |
limit | integer 1–5000 | optional | 100 | Rows per page. Below 1 or above 5000 is a 400 bad_request naming the parameter and the constraint it broke. |
offset | integer | optional | 0 | Rows to skip; pagination.has_more is false at the end. |
Example request
curl
curl -H "Authorization: Bearer sxk_live_4f9c…" \ "https://api.simicx.com/v1/alphas/CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42/portfolio?book=long_short&from=2026-06-22&to=2026-06-26"
Try it
Execute GET /v1/alphas/{alpha}/portfolio against the live API using your key. Paste a key below to send without signing in, or sign in to auto-fill from your profile — either way, the call counts towards your rate limits. Whether the route answers depends on your key's endpoint allow-list — /v1/me lists what is in force; a new key starts with only the self-service routes until an administrator grants more.
Sent server-side via a same-origin proxy; only the documented host(s) are allowed.
Paste an API key above to list alphas your key may access.
Request
https://api.simicx.com/v1/alphas/{alpha}/portfolio?book=long_short&limit=100&offset=0Example response
JSON · synthetic values, real schema
{
"data": [
{
"book": "long_short",
"date": "2026-06-26",
"timestamp": "2026-06-26T20:00:00Z",
"starting_equity": 1.2841,
"ending_equity": 1.2867,
"cash_start": 0.0287,
"cash_end": 0.0312,
"position_value_end": 1.2555,
"market_pnl": 0.0031,
"execution_cost": -0.0004,
"borrow_cashflow": -0.0001,
"cash_carry": 0.0001,
"risk_free_return": 0.000168,
"rounding_adjustment": -0.0000002,
"equity_basis": 1.0,
"gross_notional": 2.5202,
"net_notional": 0.0257,
"gross_exposure": 1.96,
"net_exposure": 0.02,
"largest_abs_weight": 0.0134,
"turnover_notional": 0.1415,
"turnover": 0.11
}
],
"pagination": { "limit": 100, "offset": 0, "returned": 1, "total": 5, "has_more": true },
"meta": { "run": "CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42", "alpha_id": "CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42", "source_alpha_id": "causal_haar_activity_displacement_reversal_b3874c9db78d", "book": "long_short" }
}Response fields
Every field the response can carry, what it means, and how it is computed.
bookdatetimestampstarting_equityending_equitycash_startcash_endposition_value_endmarket_pnlexecution_costborrow_cashflowcash_carryrisk_free_returnrounding_adjustmentequity_basisgross_notionalnet_notionalgross_exposurenet_exposurelargest_abs_weightturnover_notionalturnoverpagination.limitoffsetpagination.returnedpagination.totalpagination.has_moremeta.runmeta.alpha_idbookdatetimestampstring / ISO timestampThe book and the session.
How it is computed
One row per book per trading day; timestamp is the engine's UTC instant for that session.
starting_equityratioEquity at the previous close.
How it is computed
Yesterday's ending_equity; 1.0 at inception (equity is normalised, so values read as growth multiples).
ending_equityratioEquity after the day's P&L and costs.
How it is computed
starting_equity + market_pnl + execution_cost + borrow_cashflow + cash_carry + rounding_adjustment.
cash_startcash_endposition_value_endratioOpening and closing cash, and closing invested value.
How it is computed
cash_end + position_value_end sums to ending_equity.
market_pnlratioMark-to-market P&L before costs.
How it is computed
Σ over positions of quantity × (close − previous close), signed.
execution_costratio (≤ 0)Fees and modelled market impact for the day's fills.
How it is computed
Cost model applied to each fill; negative by convention.
borrow_cashflowratio (≤ 0)Cost of carrying shorts.
How it is computed
Borrow rate × short notional, accrued daily.
cash_carryrisk_free_returnratioInterest on the cash balance, and the risk-free rate it accrued at.
How it is computed
cash_carry is the accrual credited to equity for the session; risk_free_return is the session rate it was accrued at.
rounding_adjustmentratioThe residual that makes the ledger identity close exactly.
How it is computed
Whole-share rounding and settlement residue; tiny by construction.
equity_basisnumberThe equity the normalised columns are expressed against.
How it is computed
1.0 for a normalised ledger — divide a notional column by it to read the ratio.
gross_notionalnet_notionalnumberAbsolute and signed position value held.
How it is computed
Σ |signed_notional| and Σ signed_notional over the day's positions; gross_exposure and net_exposure are these over equity.
gross_exposureratioTotal capital at risk.
How it is computed
Σ |weight| over held names; ~2.0 for a fully-invested dollar-neutral book.
net_exposureratioDirectional tilt.
How it is computed
Σ weight; ~0 when dollar-neutral.
largest_abs_weightratioThe single biggest position that day, either side.
How it is computed
max |weight| over held names — the concentration check a risk committee asks for.
turnover_notionalnumberValue traded that day.
How it is computed
Σ |traded notional| over the day's fills; turnover is this over equity.
turnoverratioOne-sided traded fraction that day.
How it is computed
½ Σ |weight_t − weight_t−1| over the day's trades.
pagination.limitoffsetintegerThe page window applied.
How it is computed
Echoes the request parameters (or their defaults — 100 rows, 500 on /equity-curve).
pagination.returnedintegerRows in this page.
How it is computed
data.length — below limit on the last page.
pagination.totalintegerRows matching the query across all pages.
How it is computed
Server-side count before paging.
pagination.has_morebooleanWhether another page exists.
How it is computed
offset + returned < total — false on the last page; stop paging there.
meta.runstringThe alpha that served the response.
How it is computed
Echoes the resolved alpha_id. Retain for reproducible analysis.
meta.alpha_idstringSource label associated with the alpha, when present.
How it is computed
Informational; address data endpoints with alpha_id / meta.run.
- The ledger holds one row per session, not per symbol — passing symbol here is a 400 telling you to drop it or query /positions or /pnl instead.

