Automatic daily file transfers can be enabled on your account using a Secure File Transfer Protocols (SFTP) connection.

For uploading data through the application, you can Upload Positions to a Portfolio


The first step for SFTP setup is working with you or a designated fund admin to create a CSV of your portfolio holdings in a way that can be ingested into our system. This article describes the how to create a Portfolio CSV in Common Portfolio Format (CPF).

Once your data is in CPF, you can securely transfer this file into Omega Point's SFTP site. Ideally, files are uploaded to the FTP site by 7:00 AM ET. FTP transfer troubleshooting below**.

Files that are uploaded to the SFTP for previously registered portfolios -- files such as daily uploads or correction files -- are automatically ingested and processed; the content of these files should be made available on the platform through the API & UI within a few minutes. Files for new portfolios, files with updates structure (e.g. new data columns), files with updated naming conventions may break the automatic ingestion. Contact [email protected] to fix.

For a programmatic approach, another option is to send and upload portfolios via our API. Full details on how to connect and interact with our API can be found in the developer section of our product documentation.

FTP Transfer Troubleshooting

  1. FTP file transfer is another part of initial onboarding. If for any reason the FTP transfer isn’t working, please reach out to us on the Intercom web app on the lower right of your screen, or email [email protected]
  2. BrickFTP makes use of the following IP addresses. If you restrict outbound access via a firewall, please whitelist all of these IP addresses for ports 80, 443, 21, 22, and 990, as well as FTP data ports 40000-50000.

Determining Coverage for a Recently Uploaded Portfolio

At the start of the day, it is useful to know if both risk model & portfolio data are both up to date. By querying model.availability & model.portfolio.coverage (with the interval input), it is possible to determine the status of both risk model and portfolio coverage specific to uploaded dates.


  model(id: "modelID") {
    portfolio(id: "portfolioID") {
      coverage(from: "2020-02-21", to: "2020-02-21", interval: POSITION_SET_DATES) {
        summary {
        missingEquities {
          id {

Let’s assume today is February 22, 2020 and we want to request the latest risk model and portfolio data availability on the last business date. Using the availability and coverage nodes in conjunction returns details on how well a risk model — assuming it is available — covers a portfolio’s securities on 2020-02-21. Here is what to look for:

  • Availability date is prior to 2020-02-21
    - The risk model does not yet have the latest data available
    - The portfolio coverage node will return empty since there is no risk model to run against
  • Availability date returns 2020-02-21 & model.portfolio.coverage returns blank
    - Portfolio data has not yet been uploaded
  • Availability date returns 2020-02-21 & model.portfolio.coverage returns summary.percentGMVAvailable > 0
    - Risk model and portfolio positions are ready with the latest data

Moving forward, simply substituting 2020-02-21 with the last business day will provide you with a way to introspection the status of data availability and unlock running analysis and optimizations using the most recent data.

Did this answer your question?