You can use the API to add or remove daily position sets for portfolios in your account. For more information on position sets, please see the article on Using Position Sets. This article will walk you through the steps to upload a position set to a portfolio, review the results, and delete position sets from the portfolio for a particular date range.

To read about uploading portfolio data via the application, please read Upload Positions to a Portfolio.

Portfolio ID

When running your own requests, please be sure to replace the portfolio ID with an appropriate ID from your own account. If you're not familiar with how to obtain a portfolio ID, please see the article on Requesting Portfolios.

Uploading a Position Set

A position set can be uploaded for single date per API request. Note that position sets do not need to be uploaded for subsequent days without trades, as our system will automatically adjust the position sizes based on the daily returns of all equities in the model.

Below is an example of how to structure a request to upload a position set, with variables set for date 2017-06-01, holding $500 in Microsoft and $1000 in Apple:

Query

mutation($portfolioId: String!, $modelId: String!, $data: PositionSetDateInput!) {
  uploadPositionSetDate(portfolioId: $portfolioId, data: $data) {
    coverage(modelId: $modelId) {
      date
      summary {
        percentGmvAvailable
        percentGmvNotAvailable
      }
      missingEquities {
        id {
          ticker
          mic
          sedol
        }
        percentGmv
      }
    }
  }
}

Variables

{
  "portfolioId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "modelId": "xxxxx-xx",
  "data": {
    "date": "2017-06-01",
    "equities": [
      {
        "id": {"ticker": "MSFT", "mic": "XNAS"},
        "economicExposure": 500
      }, {
        "id": {"ticker": "AAPL", "mic": "XNAS"},
        "economicExposure": 1000
      }
    ]
  }
}

To provide a custom equity value, the optional equity key can be set with the override value of the position set. More information can be found at Using Positions Sets.

Coverage Report

Note the “coverage” section of the query:

    coverage (modelId: $modelId) {
      date
      summary {
        percentGmvAvailable
        percentGmvNotAvailable
      }
      missingEquities {
        id {
          ticker
          mic
          sedol
        }
        percentGmv
      }
    }

This sets up the request to return a coverage report following the upload, letting you know which securities were successfully or unsuccessfully mapped, given the specified data model. In the summary section, percentGmvAvailable provides the percent GMV over all available positions in the position set; whereas percentGmvNotAvailable lets you know the percent GMV over all missing positions in the position set. The missing equities will list the unsuccessfully mapped securities and their sizes as a percentage of the GMV.

Request the Position Set

To verify the position set was uploaded to your portfolio, you can use the following:

Query

query($portfolioId: String!, $date: Date!) {
  portfolio (id: $portfolioId) {
    name
    dates (from: $date, to: $date) {
      date
      equities {
        id {
          ticker
          mic
          sedol
        }
      }
    }
  }
}

Variables

{
  "portfolioId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "date": "2017-06-01"
}

Deleting Position Sets

To remove position sets from the portfolio, you can use the following:

Query

mutation ($portfolioId: String!, $dates: [Date]!) {
  deletePositionSetDates($portfolioId, $dates) {
    count
  }
}

Variables

{
  "portfolioId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "dates": [
    "2017-06-01",
    "2017-06-02",
    "2017-06-05"
  ]
}

The count request in the query will let you know the number of dates of data successfully deleted from the portfolio.

Did this answer your question?