Efficient Frontier
curl --request POST \
--url https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_returns": [
0.08,
0.12,
0.1,
0.15
],
"covariance_matrix": [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
"n_points": 50
}
'import requests
url = "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier"
payload = {
"expected_returns": [0.08, 0.12, 0.1, 0.15],
"covariance_matrix": [[0.04, 0.006, 0.008, 0.01], [0.006, 0.09, 0.012, 0.015], [0.008, 0.012, 0.0625, 0.018], [0.01, 0.015, 0.018, 0.16]],
"n_points": 50
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expected_returns: [0.08, 0.12, 0.1, 0.15],
covariance_matrix: [
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
],
n_points: 50
})
};
fetch('https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expected_returns' => [
0.08,
0.12,
0.1,
0.15
],
'covariance_matrix' => [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
'n_points' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier"
payload := strings.NewReader("{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"frontier": [
{
"expected_return": 0.1,
"volatility": 0.1856,
"sharpe_ratio": 0.3772,
"weights": [
0.4,
0.25,
0.25,
0.1
]
}
],
"n_points": 50
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"body",
"expected_returns"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}quantlib-portfolio
Efficient Frontier
Traces the complete efficient frontier by computing portfolios at different return levels. The frontier represents the set of portfolios offering the maximum expected return for each level of risk.
Use Cases:
- Visualizing the risk-return tradeoff
- Identifying the tangency (maximum Sharpe) portfolio
- Asset allocation across multiple risk profiles
- Communicating investment opportunities to clients
Mathematical Background: Computes the efficient frontier by solving the minimum variance problem for multiple target return levels, from the minimum variance portfolio to the maximum return portfolio.
Credits: 5 per request [Tier: PRO, Credits: 5]
POST
/
quantlib
/
portfolio
/
optimize
/
efficient-frontier
Efficient Frontier
curl --request POST \
--url https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_returns": [
0.08,
0.12,
0.1,
0.15
],
"covariance_matrix": [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
"n_points": 50
}
'import requests
url = "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier"
payload = {
"expected_returns": [0.08, 0.12, 0.1, 0.15],
"covariance_matrix": [[0.04, 0.006, 0.008, 0.01], [0.006, 0.09, 0.012, 0.015], [0.008, 0.012, 0.0625, 0.018], [0.01, 0.015, 0.018, 0.16]],
"n_points": 50
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expected_returns: [0.08, 0.12, 0.1, 0.15],
covariance_matrix: [
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
],
n_points: 50
})
};
fetch('https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expected_returns' => [
0.08,
0.12,
0.1,
0.15
],
'covariance_matrix' => [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
'n_points' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier"
payload := strings.NewReader("{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/portfolio/optimize/efficient-frontier")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expected_returns\": [\n 0.08,\n 0.12,\n 0.1,\n 0.15\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"n_points\": 50\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"frontier": [
{
"expected_return": 0.1,
"volatility": 0.1856,
"sharpe_ratio": 0.3772,
"weights": [
0.4,
0.25,
0.25,
0.1
]
}
],
"n_points": 50
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"body",
"expected_returns"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Expected returns for each asset (annualized)
Example:
[0.08, 0.12, 0.1, 0.15]
Asset covariance matrix (annualized)
Example:
[
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
]
Number of portfolios to compute along the frontier. Higher values give smoother curves.
Required range:
10 <= x <= 200Example:
50
⌘I
