PortEngine API

Portfolio Stress Test for Developers

Everysk PortEngine API
Benefit from a flexible Rest API

Benefit from a flexible
Rest API

Use our integrated Data+Analytics

Use our integrated
Analytics+Data

Customize your ideal risk workflow

Customize your ideal
risk workflow

Programmatically Stress Test a multi-asset, multi-currency portfolio with longs and shorts in just a few seconds. In your language of choice.

Enrich your current client reporting

Enrich your
current client reporting

Differentiate from the competition by easily adding important risk statistics to your current portfolio reports.

Get instantaneous insights before trading

Get instantaneous
insights before trading

Quickly calculate how portfolio risks will be impacted by your trades, before execution.

Monitor portfolio trends and detect problems early

Monitor portfolio trends
and detect problems early

Periodically monitor critical portfolio properties by designing your own customized alerts.

Verify portfolio objectives with an unbiased, statistical tool

Verify portfolio objectives
with an unbiased, statistical tool

Provide a statistical validation that the claimed portfolio goals are indeed accurate.

What is my expected
shortfall if oil declines 10%?

If I buy more Facebook shares,
how much growth factor I am acquiring?

Do I have too much
risk concentration in the energy sector?

What was the increase in
momentum factor since last quarter?

How much risk is
in my 401(k) account?

What will be the P&L contribution
from my hedges in a market decline?

Which bond is riskier
if a BBB index declines?

What is my long duration risk
if rates go up 100 basis points?

Is my delta adjusted
gross exposure over 2x?

What is my potential loss
from foreign positions if JPY devalues?

Is my portfolio
risk parity?

How my current systematic
risk compares with last year's?

Should I offer my emerging
markets portfolio in the US?

How my risk will propagate
if muni spreads widen 50 bps?

What is the diversification
benefit of 2 model portfolios?

Are my hedges immunizing
"country factor" risk?

Can I find a cheaper
replacement mutual fund for my client?

Python

Answer critical portfolio questions with a few lines of code


STRESS TESTING

STRESS TEST YOUR PORTFOLIO WITH FLEXIBLE SCENARIOS

  • More than 200K securities can be used to stress test your portfolio.
  • Compute your portfolio's expected P&L as a result of any shock, as well as worst and best outcomes (tail risks).
  • Break down those portfolio risks from a specific shock by: positions, various aggregations, as well as factor models.
curl -X POST \
     -H "Content-Type: application/json" \
     -u YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN \
     -d '{ \
      "securities": [ \
        {"id": "id1", "symbol": "AAPL", "quantity": 1000.0}, \
        {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0}, \
        {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0}, \
        {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0}, \
        {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0} \
      ], \
      "date": "20180118", \
      "projection": ["SPY"], \
      "shock": "IND:SPX", \
      "magnitude": -0.1 \
     }' \
     https://api.everysk.com/v2/stress_test
    
import requests

url = 'https://api.everysk.com/v2/stress_test'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118",
    "projection": ["SPY"],
    "shock": "IND:SPX",
    "magnitude": -0.1
}

response = requests.request('POST', url, json=payload, headers=headers)

print(response.text)
    
var request = require("request");

var url = 'https://api.everysk.com/v2/stress_test';
var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
};
var payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118",
    "projection": ["SPY"],
    "shock": "IND:SPX",
    "magnitude": -0.1
};

var options = {
    method: 'POST',
    url: url,
    headers: headers,
    body: payload,
    json: true
};
request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
    
require 'uri'
require 'net/http'
require 'json'

url = URI("https://api.everysk.com/v2/stress_test")
headers = {
    'Content-Type'=> 'application/json',
    'Authorization'=> 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities"=> [
      {"id"=> "id1", "symbol"=> "AAPL", "quantity"=> 1000.0},
      {"id"=> "id2", "symbol"=> "SIE:XETR", "quantity"=> 750.0},
      {"id"=> "id3", "symbol"=> "SPY 20180316 P280 4.82", "quantity"=> 50.0},
      {"id"=> "id4", "symbol"=> "SPY 20180316 P270 2.10", "quantity"=> -50.0},
      {"id"=> "id5", "symbol"=> "SPY 20180316 C285 2.08", "quantity"=> -50.0}
    ],
    "date"=> "20180118",
    "projection"=> ["SPY"],
    "shock"=> "IND:SPX",
    "magnitude"=> -0.1
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
req = Net::HTTP::Post.new(url.path, initheader=headers)
req.body = payload.to_json
response = http.request(req)

puts response.read_body
    
{
  "stress_test": {
    "results": [
      {
        "id": "id3",
        "ev": [
          {
            "projection": "SPY",
            "value": 0.19248009261768
          },
          {
            "projection": "residual",
            "value": -0.000214771327424
          }
        ],
        "cvar_neg": [
          {
            "projection": "SPY",
            "value": 0.182956175398105
          },
          {
            "projection": "residual",
            "value": -0.000316653378127
          }
        ],
        "cvar_pos": [
          {
            "projection": "SPY",
            "value": 0.198925193905857
          },
          {
            "projection": "residual",
            "value": 0.000347917197198
          }
        ]
      },
      {
        "id": "id5",
        "ev": [
          {
            "projection": "SPY",
            "value": 0.032954931973253
          },
          {
            "projection": "residual",
            "value": -3.331576995e-06
          }
        ],
        "cvar_neg": [
          {
            "projection": "SPY",
            "value": 0.031763574513232
          },
          {
            "projection": "residual",
            "value": 5.829558761e-06
          }
        ],
        "cvar_pos": [
          {
            "projection": "SPY",
            "value": 0.033761156903945
          },
          {
            "projection": "residual",
            "value": -0.000134414106236
          }
        ]
      },
      {
        "id": "id2",
        "ev": [
          {
            "projection": "SPY",
            "value": -0.044083444761319
          },
          {
            "projection": "residual",
            "value": -0.001678775304007
          }
        ],
        "cvar_neg": [
          {
            "projection": "SPY",
            "value": -0.042145674989584
          },
          {
            "projection": "residual",
            "value": -0.007702628227174
          }
        ],
        "cvar_pos": [
          {
            "projection": "SPY",
            "value": -0.04539478779004
          },
          {
            "projection": "residual",
            "value": 0.005539051861544
          }
        ]
      },
      {
        "id": "id1",
        "ev": [
          {
            "projection": "SPY",
            "value": -0.057306859627206
          },
          {
            "projection": "residual",
            "value": -0.00111887584763
          }
        ],
        "cvar_neg": [
          {
            "projection": "SPY",
            "value": -0.054795925402436
          },
          {
            "projection": "residual",
            "value": -0.022103209066903
          }
        ],
        "cvar_pos": [
          {
            "projection": "SPY",
            "value": -0.05900607908003
          },
          {
            "projection": "residual",
            "value": 0.021277501099807
          }
        ]
      },
      {
        "id": "id4",
        "ev": [
          {
            "projection": "SPY",
            "value": -0.09483474460531
          },
          {
            "projection": "residual",
            "value": 0.000275809837853
          }
        ],
        "cvar_neg": [
          {
            "projection": "SPY",
            "value": -0.089998995494264
          },
          {
            "projection": "residual",
            "value": 0.000363704129649
          }
        ],
        "cvar_pos": [
          {
            "projection": "SPY",
            "value": -0.098107231346463
          },
          {
            "projection": "residual",
            "value": -0.000125465549635
          }
        ]
      }
    ],
    "extrapolated": true,
    "dynamic_range": [
      -0.012847654018806,
      0.013071391177579
    ],
    "unmapped_tickers": []
  }
}


RISK ATTRIBUTION

INSTANT CLARITY INTO HIDDEN PORTFOLIO RISK CONCENTRATIONS

curl -X POST \
     -H "Content-Type: application/json" \
     -u YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN \
     -d '{ \
      "securities": [ \
        {"id": "id1", "symbol": "AAPL", "quantity": 1000.0}, \
        {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0}, \
        {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0}, \
        {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0}, \
        {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0} \
      ], \
      "date": "20180118", \
      "projection": ["SPY"] \
     }' \
     https://api.everysk.com/v2/risk_attribution
    
import requests

url = 'https://api.everysk.com/v2/risk_attribution'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118",
    "projection": ["SPY"]
}

response = requests.request('POST', url, json=payload, headers=headers)

print(response.text)
    
var request = require("request");

var url = 'https://api.everysk.com/v2/risk_attribution';
var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
};
var payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118",
    "projection": ["SPY"]
};

var options = {
    method: 'POST',
    url: url,
    headers: headers,
    body: payload,
    json: true
};
request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
    
require 'uri'
require 'net/http'
require 'json'

url = URI("https://api.everysk.com/v2/risk_attribution")
headers = {
    'Content-Type'=> 'application/json',
    'Authorization'=> 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities"=> [
      {"id"=> "id1", "symbol"=> "AAPL", "quantity"=> 1000.0},
      {"id"=> "id2", "symbol"=> "SIE:XETR", "quantity"=> 750.0},
      {"id"=> "id3", "symbol"=> "SPY 20180316 P280 4.82", "quantity"=> 50.0},
      {"id"=> "id4", "symbol"=> "SPY 20180316 P270 2.10", "quantity"=> -50.0},
      {"id"=> "id5", "symbol"=> "SPY 20180316 C285 2.08", "quantity"=> -50.0}
    ],
    "date"=> "20180118",
    "projection"=> ["SPY"]
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
req = Net::HTTP::Post.new(url.path, initheader=headers)
req.body = payload.to_json
response = http.request(req)

puts response.read_body
    
{
  "risk_attribution": {
    "results": [
      {
        "id": "id3",
        "mctr": [
          {
            "projection": "SPY",
            "value": 0.096956913445985
          },
          {
            "projection": "residual",
            "value": -0.001587145732826
          }
        ]
      },
      {
        "id": "id5",
        "mctr": [
          {
            "projection": "SPY",
            "value": 0.067216469014247
          },
          {
            "projection": "residual",
            "value": 0.001866791196407
          }
        ]
      },
      {
        "id": "id1",
        "mctr": [
          {
            "projection": "SPY",
            "value": -0.030214670480493
          },
          {
            "projection": "residual",
            "value": 0.061500104578984
          }
        ]
      },
      {
        "id": "id2",
        "mctr": [
          {
            "projection": "SPY",
            "value": -0.022257840090924
          },
          {
            "projection": "residual",
            "value": 0.017627694218011
          }
        ]
      },
      {
        "id": "id4",
        "mctr": [
          {
            "projection": "SPY",
            "value": -0.047619053005682
          },
          {
            "projection": "residual",
            "value": 0.001029368761176
          }
        ]
      }
    ],
    "unmapped_tickers": []
  }
}
  • Marginal contribution to total risk from: positions, sectors, countries, market capitalization, liquidity, implied rating, duration and user-defined labels.
  • Marginal contribution to total risk from factor models which are defined on-the-fly with any security or index in our database.
  • Marginal contribution to total risk from longs, shorts, domestic and foreign securities, options and other customized buckets.


EXPOSURE

QUICKLY IDENTIFY YOUR DELTA ADJUSTED EXPOSURES

  • Exposures are automatically delta adjusted and converted to the base currency of the portfolio.
  • Exposures can be broken down by: position, sector, country, liquidity, market capitalization, implied rating, duration and user-defined labels.
curl -X POST \
     -H "Content-Type: application/json" \
     -u YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN \
     -d '{ \
      "securities": [ \
        {"id": "id1", "symbol": "AAPL", "quantity": 1000.0}, \
        {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0}, \
        {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0}, \
        {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0}, \
        {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0} \
      ], \
      "date": "20180118" \
     }' \
     https://api.everysk.com/v2/exposure
    
import requests

url = 'https://api.everysk.com/v2/exposure'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118"
}

response = requests.request('POST', url, json=payload, headers=headers)

print(response.text)
    
var request = require("request");

var url = 'https://api.everysk.com/v2/exposure';
var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
};
var payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118"
};

var options = {
    method: 'POST',
    url: url,
    headers: headers,
    body: payload,
    json: true
};
request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
    
require 'uri'
require 'net/http'
require 'json'

url = URI("https://api.everysk.com/v2/exposure")
headers = {
    'Content-Type'=> 'application/json',
    'Authorization'=> 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities"=> [
      {"id"=> "id1", "symbol"=> "AAPL", "quantity"=> 1000.0},
      {"id"=> "id2", "symbol"=> "SIE:XETR", "quantity"=> 750.0},
      {"id"=> "id3", "symbol"=> "SPY 20180316 P280 4.82", "quantity"=> 50.0},
      {"id"=> "id4", "symbol"=> "SPY 20180316 P270 2.10", "quantity"=> -50.0},
      {"id"=> "id5", "symbol"=> "SPY 20180316 C285 2.08", "quantity"=> -50.0}
    ],
    "date"=> "20180118"
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
req = Net::HTTP::Post.new(url.path, initheader=headers)
req.body = payload.to_json
response = http.request(req)

puts response.read_body
    
{
  "exposure": {
    "results": [
      {
        "id": "id4",
        "gross": 327562.3495692536,
        "net": 327562.3495692536
      },
      {
        "id": "id1",
        "gross": 179260.0,
        "net": 179260.0
      },
      {
        "id": "id2",
        "gross": 112254.4125,
        "net": 112254.4125
      },
      {
        "id": "id5",
        "gross": 453419.07855536445,
        "net": -453419.07855536445
      },
      {
        "id": "id3",
        "gross": 675281.5948164026,
        "net": -675281.5948164026
      }
    ],
    "nlv": 315614.4125,
    "unmapped_tickers": []
  }
}


PROPERTIES

LEVERAGE, LIQUIDITY AND MORE AT YOUR FINGERTIPS

curl -X POST \
     -H "Content-Type: application/json" \
     -u YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN \
     -d '{ \
      "securities": [ \
        {"id": "id1", "symbol": "AAPL", "quantity": 1000.0}, \
        {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0}, \
        {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0}, \
        {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0}, \
        {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0} \
      ], \
      "date": "20180118" \
     }' \
     https://api.everysk.com/v2/properties
    
import requests

url = 'https://api.everysk.com/v2/properties'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118"
}

response = requests.request('POST', url, json=payload, headers=headers)

print(response.text)
    
var request = require("request");

var url = 'https://api.everysk.com/v2/properties';
var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
};
var payload = {
    "securities": [
      {"id": "id1", "symbol": "AAPL", "quantity": 1000.0},
      {"id": "id2", "symbol": "SIE:XETR", "quantity": 750.0},
      {"id": "id3", "symbol": "SPY 20180316 P280 4.82", "quantity": 50.0},
      {"id": "id4", "symbol": "SPY 20180316 P270 2.10", "quantity": -50.0},
      {"id": "id5", "symbol": "SPY 20180316 C285 2.08", "quantity": -50.0}
    ],
    "date": "20180118"
};

var options = {
    method: 'POST',
    url: url,
    headers: headers,
    body: payload,
    json: true
};
request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
    
require 'uri'
require 'net/http'
require 'json'

url = URI("https://api.everysk.com/v2/properties")
headers = {
    'Content-Type'=> 'application/json',
    'Authorization'=> 'Bearer YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN'
}
payload = {
    "securities"=> [
      {"id"=> "id1", "symbol"=> "AAPL", "quantity"=> 1000.0},
      {"id"=> "id2", "symbol"=> "SIE:XETR", "quantity"=> 750.0},
      {"id"=> "id3", "symbol"=> "SPY 20180316 P280 4.82", "quantity"=> 50.0},
      {"id"=> "id4", "symbol"=> "SPY 20180316 P270 2.10", "quantity"=> -50.0},
      {"id"=> "id5", "symbol"=> "SPY 20180316 C285 2.08", "quantity"=> -50.0}
    ],
    "date"=> "20180118"
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
req = Net::HTTP::Post.new(url.path, initheader=headers)
req.body = payload.to_json
response = http.request(req)

puts response.read_body
    
{
    "properties": {
        "results": [
          {"property": "var", "value": -0.035158326333446},
          {"property": "cvar", "value": -0.044845337238832},
          {"property": "liquidity", "value": 0.000753567602616},
          {"property": "net_exposure", "value": -1.614704180540277},
          {"property": "gross_exposure", "value": 5.53769842637025},
          {"property": "expected_return", "value": -0.054870904971009},
          {"property": "expected_volatility", "value": 0.14314354343333},
          {"property": "delta", "value": -801138.3238025135},
          {"property": "vega", "value": -1773.3535916940648},
          {"property": "gamma", "value": -1.221585162864691},
          {"property": "theta", "value": 196.84008207267567}
        ],
        "unmapped_tickers": []
    }
}
  • Retrieve all relevant portfolio properties, in one API call: gross and net exposure, liquidity (days to unwind - DTU), forward looking volatility, value at risk (VaR), conditional VaR (CVaR).
  • Compute delta, vega, gamma and theta for any type of option in the portfolio, such as: FX, futures, index and/or equity options.

ASSET COVERAGE


90

Exchanges

200K

Global Equities

+ETFs

+Mutual Funds

+Equity Options

40

Currencies

+Crypto Currencies

+FX Forwards

+FX Options

Corporate Bonds

+Term Loan

+Convertible Bonds

+Convertible Preferred Bonds

+Exchangeable Bonds

+Credit Default Swaps

+Warrants

Indices

+Index Options

Government Bonds

+Interest Rate Swaps

+Muni Bonds

Futures

+Future Options

Hedge Funds

+Hedge Fund Indices

SUBSCRIPTION PLANS

API Plan

API Plus Plan

  • REST API
  • Request quotas:
    • 100,000 per month
    • 60 per minute
  • Stress Test
  • Risk Attribution
  • Exposure
  • Properties
  • Long/Short portfolios
  • Multi-asset portfolios
  • Multi-currency portfolios
  • Flexible portfolio base currency
  • Portfolios up to 250 securities
  • Simulate historical portfolios
  • User-defined aggregation
  • Service regions: US Only
  • Coverage:
    • Securities: US equities, Foreign equities, ETFs, Mutual Funds, Currencies and Indices
  • REST API
  • Request quotas:
    • 100,000 per month
    • 60 per minute
  • Stress Test
  • Risk Attribution
  • Exposure
  • Properties
  • Long/Short portfolios
  • Multi-asset portfolios
  • Multi-currency portfolios
  • Flexible portfolio base currency
  • Portfolios up to 250 securities
  • Simulate historical portfolios
  • User-defined aggregation
  • Custom volatility surface
  • Custom analyst forecasts
  • IP whitelist
  • Email TLS compliance
  • Service regions: US, Europe, Asia
  • Coverage:
    • Securities: US Equities, Foreign Equities, ETFs, Mutual Funds, Currencies, Crypto Currencies, Indices, Corporate Bonds, Government Bonds, Muni Bonds, Convertible Bonds, Convertible Preferred Bonds, Exchangeable Bonds, Term Loans, Hedge Funds and Hedge Fund Indexes
    • Derivatives: Equity options, FX Forwards, Futures, Future Options, Index Options, Interest Rate Swaps, Credit Default Swaps and Warrants

PORTENGINE API BROCHURE

* These fields are required.
Everysk PortEngine API Brochure