Portfolio Rail
Portfolio Rail
Section titled “Portfolio Rail”Portfolio management, position tracking, and NAV calculation.
Overview
Section titled “Overview”The Portfolio Rail provides endpoints for managing investment portfolios, tracking positions, calculating NAV, and monitoring performance.
Base URL
Section titled “Base URL”/api/v1/portfoliosEndpoints
Section titled “Endpoints”Create Portfolio
Section titled “Create Portfolio”POST /api/v1/portfoliosCreate a new portfolio.
Request Body:
{ "name": "Islamic Growth Fund", "type": "FUND", "currency": "USD", "benchmark": "DJIM", "inceptionDate": "2025-01-01", "managerId": "user_123", "shariahCompliant": true}Response:
{ "data": { "portfolioId": "pf_abc123", "name": "Islamic Growth Fund", "type": "FUND", "currency": "USD", "status": "ACTIVE", "nav": "0.00", "createdAt": "2025-01-15T10:00:00Z" }}Get Portfolio
Section titled “Get Portfolio”GET /api/v1/portfolios/:portfolioIdRetrieve portfolio details including current positions.
List Portfolios
Section titled “List Portfolios”GET /api/v1/portfoliosQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by type (FUND, MANAGED, CUSTODY) |
status | string | Filter by status |
page | number | Page number |
Add Position
Section titled “Add Position”POST /api/v1/portfolios/:portfolioId/positionsAdd a position to the portfolio.
Request Body:
{ "instrumentId": "inst_xyz", "instrumentType": "SUKUK", "quantity": "1000", "costBasis": "100000.00", "currency": "USD", "acquisitionDate": "2025-01-15"}List Positions
Section titled “List Positions”GET /api/v1/portfolios/:portfolioId/positionsGet all positions in a portfolio.
Response:
{ "data": [ { "positionId": "pos_123", "instrumentId": "inst_xyz", "instrumentType": "SUKUK", "quantity": "1000", "costBasis": "100000.00", "marketValue": "105000.00", "unrealizedPnL": "5000.00", "weight": "0.15" } ], "pagination": { "total": 25, "page": 1 }}Calculate NAV
Section titled “Calculate NAV”POST /api/v1/portfolios/:portfolioId/nav/calculateCalculate current Net Asset Value.
Request Body:
{ "valuationDate": "2025-01-15", "pricingSource": "MARKET"}Response:
{ "data": { "portfolioId": "pf_abc123", "valuationDate": "2025-01-15", "totalAssets": "1000000.00", "totalLiabilities": "50000.00", "nav": "950000.00", "navPerUnit": "95.00", "unitsOutstanding": "10000", "currency": "USD" }}Get Performance
Section titled “Get Performance”GET /api/v1/portfolios/:portfolioId/performanceQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
period | string | MTD, QTD, YTD, 1Y, 3Y, SI |
benchmark | string | Benchmark to compare |
Response:
{ "data": { "portfolioId": "pf_abc123", "period": "YTD", "return": "0.0825", "benchmarkReturn": "0.0750", "alpha": "0.0075", "sharpeRatio": "1.25", "volatility": "0.12" }}Rebalance Portfolio
Section titled “Rebalance Portfolio”POST /api/v1/portfolios/:portfolioId/rebalanceGenerate rebalancing recommendations.
Request Body:
{ "targetAllocations": [ { "assetClass": "SUKUK", "weight": 0.4 }, { "assetClass": "EQUITY", "weight": 0.35 }, { "assetClass": "CASH", "weight": 0.25 } ], "tolerance": 0.05}Portfolio Types
Section titled “Portfolio Types”| Type | Description |
|---|---|
| FUND | Investment fund |
| MANAGED | Discretionary managed account |
| CUSTODY | Custody account |
| MODEL | Model portfolio |
Events
Section titled “Events”| Event | Description |
|---|---|
portfolio.created | Portfolio created |
portfolio.position.added | Position added |
portfolio.position.closed | Position closed |
portfolio.nav.calculated | NAV calculated |
portfolio.rebalanced | Portfolio rebalanced |
See Also
Section titled “See Also”- Risk Rail - Risk management
- Treasury Rail - Treasury operations