Skip to main content
A Portfolio is a managed collection of holdings governed by an Investment Policy Statement (IPS). Bluum handles portfolio construction, rebalancing, recurring investments, and dividend reinvestment.

Investment Policy Statement (IPS)

The IPS defines the rules that govern the portfolio:
  • Risk profile — Risk tolerance, optional risk score, volatility tolerance
  • Time horizon — Investment duration in years, optional category
  • Investment objectives — Primary and secondary goals, target annual return
  • Target allocation — Target percentages with min/max bands per asset class
  • Constraints — Liquidity requirements, tax considerations, rebalancing policy

Creating an IPS

curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/investment-policy" \
  -H "Authorization: Basic $AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "risk_profile": {
      "risk_tolerance": "moderate",
      "risk_score": 5,
      "volatility_tolerance": "medium"
    },
    "time_horizon": {
      "years": 20,
      "category": "long_term"
    },
    "investment_objectives": {
      "primary": "capital_appreciation",
      "secondary": ["income_generation"],
      "target_annual_return": "7.00"
    },
    "target_allocation": {
      "equities": { "target_percent": "50.00", "min_percent": "40.00", "max_percent": "60.00" },
      "fixed_income": { "target_percent": "25.00", "min_percent": "20.00", "max_percent": "30.00" },
      "alternatives": { "target_percent": "5.00", "min_percent": "0.00", "max_percent": "10.00" }
    },
    "constraints": {
      "liquidity_requirements": { "minimum_cash_percent": "5.00", "emergency_fund_months": 6 },
      "tax_considerations": { "tax_loss_harvesting": true, "tax_bracket": "24", "prefer_tax_advantaged": true },
      "rebalancing_policy": { "frequency": "quarterly", "threshold_percent": "5.00", "tax_aware": true }
    }
  }'

Validating an IPS

Check that the IPS is internally consistent before creating a portfolio:
curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/investment-policy/validate" \
  -H "Authorization: Basic $AUTH"

Creating a portfolio

curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios" \
  -H "Authorization: Basic $AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Growth Portfolio",
    "initial_investment": "10000.00"
  }'

Portfolio data

Summary

High-level portfolio metrics:
curl -X GET "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/summary" \
  -H "Authorization: Basic $AUTH"

Holdings

Individual positions within the portfolio:
curl -X GET "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/holdings" \
  -H "Authorization: Basic $AUTH"

Performance

Returns, benchmarks, and time-weighted performance:
curl -X GET "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/performance" \
  -H "Authorization: Basic $AUTH"

Rebalancing

When asset allocations drift beyond the IPS threshold, rebalancing brings them back to target.

Check rebalancing status

curl -X GET "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/rebalancing" \
  -H "Authorization: Basic $AUTH"

Trigger rebalancing

curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/rebalancing" \
  -H "Authorization: Basic $AUTH" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "quarterly_review" }'

Auto-invest

Set up recurring investments into a portfolio:
curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/auto-invest" \
  -H "Authorization: Basic $AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "portfolio_id": "'"$PORTFOLIO_ID"'",
    "amount": "2000.00",
    "frequency": "monthly",
    "day_of_month": 1,
    "funding_source": "wallet"
  }'

Managing schedules

# List schedules
curl -X GET "$BASE_URL/wealth/accounts/$ACCOUNT_ID/auto-invest" \
  -H "Authorization: Basic $AUTH"

# Pause a schedule
curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/auto-invest/$SCHEDULE_ID/pause" \
  -H "Authorization: Basic $AUTH"

# Resume a schedule
curl -X POST "$BASE_URL/wealth/accounts/$ACCOUNT_ID/auto-invest/$SCHEDULE_ID/resume" \
  -H "Authorization: Basic $AUTH"

DRIP (Dividend Reinvestment)

Automatically reinvest dividends back into the portfolio:
curl -X PUT "$BASE_URL/wealth/accounts/$ACCOUNT_ID/portfolios/$PORTFOLIO_ID/drip" \
  -H "Authorization: Basic $AUTH" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true }'

Key endpoints

MethodPathDescription
POST/wealth/accounts/{id}/investment-policyCreate IPS
GET/wealth/accounts/{id}/investment-policyGet IPS
POST/wealth/accounts/{id}/investment-policy/validateValidate IPS
POST/wealth/accounts/{id}/portfoliosCreate a portfolio
GET/wealth/accounts/{id}/portfolios/{pid}/summaryPortfolio summary
GET/wealth/accounts/{id}/portfolios/{pid}/holdingsPortfolio holdings
GET/wealth/accounts/{id}/portfolios/{pid}/performancePortfolio performance
GET/wealth/accounts/{id}/portfolios/{pid}/rebalancingRebalancing analysis
POST/wealth/accounts/{id}/portfolios/{pid}/rebalancingTrigger rebalance
POST/wealth/accounts/{id}/auto-investCreate auto-invest schedule
PUT/wealth/accounts/{id}/portfolios/{pid}/dripConfigure DRIP