Backtest a Tilt
curl --request GET \
--url https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest \
--header 'X-Api-Key: <api-key>'import requests
url = "https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest', 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://x.invalid/api/v1/tilts/{tilt_uuid}/backtest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tilt": {
"backtest_returns": {},
"backtest_values": {},
"since_inception_returns": "<string>",
"cumulative_backtest_returns": {}
},
"benchmark": {
"identifier": "<string>",
"backtest_returns": {}
},
"summary": {
"portfolio_return": 123,
"benchmark_return": 123,
"risk_metrics": {
"beta": 123,
"sharpe": 123,
"volatility": 123,
"max_drawdown": 123
},
"relative_return": 123,
"benchmark_coverage_note": "<string>"
},
"rebalance_events": [
{
"date": "2023-12-25",
"added": [
{
"symbol": "<string>",
"tilt_asset_id": "<string>"
}
],
"removed": [
{
"symbol": "<string>",
"tilt_asset_id": "<string>"
}
],
"constituent_count": 123
}
]
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}API
Backtest a Tilt
Backtest a saved Tilt methodology over a date range.
Backtest a Tilt
curl --request GET \
--url https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest \
--header 'X-Api-Key: <api-key>'import requests
url = "https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest', 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://x.invalid/api/v1/tilts/{tilt_uuid}/backtest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://x.invalid/api/v1/tilts/{tilt_uuid}/backtest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"tilt": {
"backtest_returns": {},
"backtest_values": {},
"since_inception_returns": "<string>",
"cumulative_backtest_returns": {}
},
"benchmark": {
"identifier": "<string>",
"backtest_returns": {}
},
"summary": {
"portfolio_return": 123,
"benchmark_return": 123,
"risk_metrics": {
"beta": 123,
"sharpe": 123,
"volatility": 123,
"max_drawdown": 123
},
"relative_return": 123,
"benchmark_coverage_note": "<string>"
},
"rebalance_events": [
{
"date": "2023-12-25",
"added": [
{
"symbol": "<string>",
"tilt_asset_id": "<string>"
}
],
"removed": [
{
"symbol": "<string>",
"tilt_asset_id": "<string>"
}
],
"constituent_count": 123
}
]
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}The backtest uses the Tilt’s saved methodology. Set
MONTHLY, QUARTERLY,
SEMI_ANNUALLY, or ANNUALLY in rules.rebalancing_period when you
apply construction.
The date parameters select the analysis window; they do not change the cadence.
Add benchmark for benchmark returns, relative performance, and risk
statistics. Omit it for a portfolio-only result.Authorizations
Path Parameters
Query Parameters
Start date. Defaults to 365 days before today.
End date. Defaults to today.
Optional benchmark ticker or supported canonical identifier, such
as SPY. When supplied, the response includes benchmark returns,
comparable period returns, and risk statistics. Omit for the
portfolio-only response.
Minimum string length:
1Response
Backtest levels, returns, scheduled membership changes, and optional benchmark analysis.
Show child attributes
Show child attributes
Present only when the request includes benchmark.
Show child attributes
Show child attributes
Present only when the request includes benchmark.
Show child attributes
Show child attributes
Scheduled membership changes, not a complete realized transaction history.
Show child attributes
Show child attributes