curl --request GET \
--url https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}', 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.quiverquant.com/beta/live/earningsdistortionscores/{ticker}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"ticker_current": "<string>",
"event_date": "2023-11-07T05:31:56Z",
"company_name_current": "<string>",
"cik_current": "<string>",
"stock_exchange_current": "<string>",
"market_identifier_code_current": "<string>",
"company_status_current": "<string>",
"ticker_on_event_date": "<string>",
"company_name_on_event_date": "<string>",
"cik_on_event_date": "<string>",
"stock_exchange_on_event_date": "<string>",
"market_identifier_code_on_event_date": "<string>",
"figi": "<string>",
"perm_id": "<string>",
"lei": "<string>",
"nc_publish_date_actual": "<string>",
"rating_overall": 123,
"rating_income_net_economic_profit": 123,
"rating_roic": 123,
"rating_fcf_yield": 123,
"rating_price_to_ebv_ratio": 123,
"rating_gap": 123,
"rating_portfolio": 123,
"rating_total_annual_cost": 123,
"rating_cash_allocation": 123,
"new_score_ind": 123,
"old_score": 123
}
]Earnings Distortion Scores
Access New Constructs’ detailed ratings for stocks, ETFs, and mutual funds.
Ratings are derived from proprietary analysis of SEC filings and cover Overall Risk/Reward, Economic vs. Reported EPS, ROIC, FCF Yield, Price-to-Economic Book Value, Growth Appreciation Period (GAP), Portfolio quality, Total Annual Costs, and Cash Allocation.
Data is updated daily.
curl --request GET \
--url https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}', 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.quiverquant.com/beta/live/earningsdistortionscores/{ticker}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.quiverquant.com/beta/live/earningsdistortionscores/{ticker}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"ticker_current": "<string>",
"event_date": "2023-11-07T05:31:56Z",
"company_name_current": "<string>",
"cik_current": "<string>",
"stock_exchange_current": "<string>",
"market_identifier_code_current": "<string>",
"company_status_current": "<string>",
"ticker_on_event_date": "<string>",
"company_name_on_event_date": "<string>",
"cik_on_event_date": "<string>",
"stock_exchange_on_event_date": "<string>",
"market_identifier_code_on_event_date": "<string>",
"figi": "<string>",
"perm_id": "<string>",
"lei": "<string>",
"nc_publish_date_actual": "<string>",
"rating_overall": 123,
"rating_income_net_economic_profit": 123,
"rating_roic": 123,
"rating_fcf_yield": 123,
"rating_price_to_ebv_ratio": 123,
"rating_gap": 123,
"rating_portfolio": 123,
"rating_total_annual_cost": 123,
"rating_cash_allocation": 123,
"new_score_ind": 123,
"old_score": 123
}
]Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Ticker for any given stock, ETF, or mutual fund
Response
The ticker for the security on the dataset generation date.
The date of the event that created new or revised data.
The name of the company on the dataset generation date.
Central Index Key on the dataset generation date.
The exchange on which a ticker trades on the dataset generation date.
The market identifier code (MIC) for the exchange on which a ticker trades on the dataset generation date.
The trading status of the security on the dataset generation date.
The ticker for the security on the event_date.
The name of the company on the event_date.
Central Index Key on the event_date.
The exchange on which a ticker traded on the event_date.
The market identifier code (MIC) for the exchange on which a ticker traded on event_date.
Financial Instrument Global Identifier
Refinitiv Permanent Identifier
Legal Entity Identifier
The date we published the data in this row to clients.
Our Overall rating for stocks is based on 5 component ratings: Economic vs Reported EPS, ROIC (Return on Invested Capital), FCF Yield, Price-to-Economic Book Value, and GAP (Growth Appreciation Period). Our Overall rating for ETFs also considers Total Annual Costs. Our Overall rating for mutual fund ratings also considers Total Annual Costs & Cash Allocation. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Economic vs Reported EPS rating compares reported accounting income to the economic earnings of the company. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Return on Invested Capital (ROIC) rating is based on the aggregate cash on cash returns of the company. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
2-Year Average FCF (excl cash) Yield Rating measures the amount of cash available for distribution to all stakeholders relative to the total value of the enterprise. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Price-to-Economic Book Value rating is based on the growth expectations embedded in the stock price. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our GAP (Growth Appreciation Period) rating is based on the number of years of future profit growth required to justify the current valuation of the stock. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Portfolio rating for ETFs and mutual funds is based on the aggregated stock ratings of the securities the fund holds as well as its allocation to cash. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Total Annual Costs rating for ETFs and mutual funds is based on the all-in cost of a minimum investment in each fund assuming a 3-year holding period, the average holding period for mutual funds. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).
Our Cash Allocation rating for mutual funds is based on the percent of the fund's assets allocated to cash. We assign ratings as follows: Most Attractive (1 - best rating), Attractive (2), Neutral (3), Unattractive (4), Very Unattractive (5 - worst rating).

