Nonlinear Least Squares Fitting
curl --request POST \
--url https://api.fincept.in/quantlib/numerical/least-squares/fit \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"model": "exponential_fit",
"x_data": [
0,
1,
2,
3,
4
],
"y_data": [
5.1,
3.8,
2.9,
2.3,
2
],
"x0": [
5,
-0.5,
1.5
]
}
'import requests
url = "https://api.fincept.in/quantlib/numerical/least-squares/fit"
payload = {
"model": "exponential_fit",
"x_data": [0, 1, 2, 3, 4],
"y_data": [5.1, 3.8, 2.9, 2.3, 2],
"x0": [5, -0.5, 1.5]
}
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({
model: 'exponential_fit',
x_data: [0, 1, 2, 3, 4],
y_data: [5.1, 3.8, 2.9, 2.3, 2],
x0: [5, -0.5, 1.5]
})
};
fetch('https://api.fincept.in/quantlib/numerical/least-squares/fit', 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/numerical/least-squares/fit",
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([
'model' => 'exponential_fit',
'x_data' => [
0,
1,
2,
3,
4
],
'y_data' => [
5.1,
3.8,
2.9,
2.3,
2
],
'x0' => [
5,
-0.5,
1.5
]
]),
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/numerical/least-squares/fit"
payload := strings.NewReader("{\n \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\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/numerical/least-squares/fit")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/numerical/least-squares/fit")
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 \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"parameters": [
3.52,
-0.48,
1.62
],
"cost": 0.0234,
"iterations": 12,
"converged": true
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}quantlib-numerical
Nonlinear Least Squares Fitting
Fit a nonlinear parametric model to data by minimizing the sum of squared residuals. Supports exponential_fit (y = a·e^(bx) + c, useful for decay processes and yield curves) and polynomial_fit (y = p0 + p1·x + p2·x^2 + …, general curve fitting). Uses iterative optimization to find parameters that best fit the observed data. Essential for curve calibration, term structure fitting, volatility smile modeling, and empirical model estimation. [Tier: BASIC, Credits: 1]
POST
/
quantlib
/
numerical
/
least-squares
/
fit
Nonlinear Least Squares Fitting
curl --request POST \
--url https://api.fincept.in/quantlib/numerical/least-squares/fit \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"model": "exponential_fit",
"x_data": [
0,
1,
2,
3,
4
],
"y_data": [
5.1,
3.8,
2.9,
2.3,
2
],
"x0": [
5,
-0.5,
1.5
]
}
'import requests
url = "https://api.fincept.in/quantlib/numerical/least-squares/fit"
payload = {
"model": "exponential_fit",
"x_data": [0, 1, 2, 3, 4],
"y_data": [5.1, 3.8, 2.9, 2.3, 2],
"x0": [5, -0.5, 1.5]
}
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({
model: 'exponential_fit',
x_data: [0, 1, 2, 3, 4],
y_data: [5.1, 3.8, 2.9, 2.3, 2],
x0: [5, -0.5, 1.5]
})
};
fetch('https://api.fincept.in/quantlib/numerical/least-squares/fit', 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/numerical/least-squares/fit",
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([
'model' => 'exponential_fit',
'x_data' => [
0,
1,
2,
3,
4
],
'y_data' => [
5.1,
3.8,
2.9,
2.3,
2
],
'x0' => [
5,
-0.5,
1.5
]
]),
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/numerical/least-squares/fit"
payload := strings.NewReader("{\n \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\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/numerical/least-squares/fit")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/numerical/least-squares/fit")
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 \"model\": \"exponential_fit\",\n \"x_data\": [\n 0,\n 1,\n 2,\n 3,\n 4\n ],\n \"y_data\": [\n 5.1,\n 3.8,\n 2.9,\n 2.3,\n 2\n ],\n \"x0\": [\n 5,\n -0.5,\n 1.5\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"parameters": [
3.52,
-0.48,
1.62
],
"cost": 0.0234,
"iterations": 12,
"converged": true
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Model type to fit
Available options:
exponential_fit, polynomial_fit Example:
"exponential_fit"
X coordinates of data points
Example:
[0, 1, 2, 3, 4]
Y coordinates of data points (observations to fit)
Example:
[5.1, 3.8, 2.9, 2.3, 2]
Initial guess for model parameters (exponential: [a,b,c], polynomial: [p0,p1,p2,...])
Example:
[5, -0.5, 1.5]
⌘I
