Find an API

Search public APIs with auth details & Postman guides

← All APIs

Portfolio Optimizer

portfoliooptimizer · Finance

Finance No Auth Free & Open financial

Portfolio Optimizer is a [Web API](https://en.wikipedia.org/wiki/Web_API) to analyze and optimize investment portfolios (collection of financial assets such as stocks, bonds, ETFs, crypto-currencies) using modern portfolio theory algorithms (mean-variance, VaR, etc.). # API General Information Portfolio Optimizer is based on [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) for easy integration, uses [JSON](https://en.wikipedia.org/wiki/JSON) for the exchange of data and

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

POST Kurtosis

Compute the kurtosis of one or several asset(s), from the asset returns. References * [Wikipedia, Kurtosis](https://en.wikipedia.org/wiki/Kurtosis)

https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis

Hover any highlighted part to learn what it does

curl -X POST "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis"
import requests
response = requests.post(
    "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis';

const response = await fetch(url, {
  method: 'POST',
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis"
	req, _ := http.NewRequest("POST", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/kurtosis";
$opts = ["http" => [
    "method" => "POST",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST Arithmetic Returns

Compute the arithmetic return(s) of one or several asset(s) for one or several time period(s). References * [Wikipedia, Rate of Return](https://en.wikipedia.org/wiki/Rate_of_return#Return)

https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns

Hover any highlighted part to learn what it does

curl -X POST "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns"
import requests
response = requests.post(
    "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns';

const response = await fetch(url, {
  method: 'POST',
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns"
	req, _ := http.NewRequest("POST", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/returns";
$opts = ["http" => [
    "method" => "POST",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST Skewness

Compute the skewness of one or several asset(s), from the asset returns. References * [Wikipedia, Skewness](https://en.wikipedia.org/wiki/Skewness)

https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness

Hover any highlighted part to learn what it does

curl -X POST "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness"
import requests
response = requests.post(
    "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness';

const response = await fetch(url, {
  method: 'POST',
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness"
	req, _ := http.NewRequest("POST", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/portfoliooptimizer.io/1.0.9/assets/skewness";
$opts = ["http" => [
    "method" => "POST",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Portfolio Optimizer?

Portfolio Optimizer is a Finance API. Developers commonly use finance APIs for:

  • processing payments and handling transactions
  • building subscription and billing systems
  • automating invoicing and financial reporting
  • fraud detection and risk scoring
  • connecting to banking and accounting software

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Portfolio Optimizer is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗