Skip to content

Commit c07d7d6

Browse files
committed
Add Ratios TTM
1 parent 608fbb4 commit c07d7d6

File tree

4 files changed

+211
-0
lines changed

4 files changed

+211
-0
lines changed

FinancialModelingPrepApi/Abstractions/CompanyValuation/ICompanyValuationProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public interface ICompanyValuationProvider
1515
public Task<ApiResponse<List<TickerSearchResponse>>> SearchByTickerAsync(string query, Exchange exchange, int? limit = null);
1616

1717
public Task<ApiResponse<CompanyProfileResponse>> GetCompanyProfileAsync(string symbol);
18+
public Task<ApiResponse<RatiosTTMResponse>> GetRatiosTTMAsync(string symbol);
1819
public Task<ApiResponse<KeyMetricsTTMResponse>> GetCompanyKeyMetricsTTMAsync(string symbol);
1920
public Task<ApiResponse<List<KeyMetricsResponse>>> GetCompanyKeyMetricsAsync(string symbol, Period period = Period.Annual, int? limit = 130);
2021

FinancialModelingPrepApi/Core/CompanyValuation/CompanyValuationProvider.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,26 @@ public Task<ApiResponse<List<HistoricalDailyDCFResponse>>> GetHistoricalDiscount
335335
return client.GetJsonAsync<List<HistoricalDailyDCFResponse>>(url, pathParams, queryString);
336336
}
337337

338+
public async Task<ApiResponse<RatiosTTMResponse>> GetRatiosTTMAsync(string symbol)
339+
{
340+
const string url = "[version]/ratios-ttm/[symbol]";
341+
342+
var pathParams = new NameValueCollection()
343+
{
344+
{ "version", ApiVersion.v3.ToString() },
345+
{ "symbol", symbol }
346+
};
347+
348+
var result = await client.GetJsonAsync<List<RatiosTTMResponse>>(url, pathParams, null);
349+
350+
if (result.HasError)
351+
{
352+
return ApiResponse.FromError<RatiosTTMResponse>(result.Error);
353+
}
354+
355+
return ApiResponse.FromSucces(result.Data.First());
356+
}
357+
338358
public async Task<ApiResponse<KeyMetricsTTMResponse>> GetCompanyKeyMetricsTTMAsync(string symbol)
339359
{
340360
const string url = "[version]/key-metrics-ttm/[symbol]";
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace MatthiWare.FinancialModelingPrep.Model.CompanyValuation
4+
{
5+
public class RatiosTTMResponse
6+
{
7+
[JsonPropertyName("dividendYielTTM")]
8+
public double? DividendYielTTM { get; set; }
9+
10+
[JsonPropertyName("dividendYielPercentageTTM")]
11+
public double? DividendYielPercentageTTM { get; set; }
12+
13+
[JsonPropertyName("peRatioTTM")]
14+
public double? PeRatioTTM { get; set; }
15+
16+
[JsonPropertyName("pegRatioTTM")]
17+
public double? PegRatioTTM { get; set; }
18+
19+
[JsonPropertyName("payoutRatioTTM")]
20+
public double? PayoutRatioTTM { get; set; }
21+
22+
[JsonPropertyName("currentRatioTTM")]
23+
public double? CurrentRatioTTM { get; set; }
24+
25+
[JsonPropertyName("quickRatioTTM")]
26+
public double? QuickRatioTTM { get; set; }
27+
28+
[JsonPropertyName("cashRatioTTM")]
29+
public double? CashRatioTTM { get; set; }
30+
31+
[JsonPropertyName("daysOfSalesOutstandingTTM")]
32+
public double? DaysOfSalesOutstandingTTM { get; set; }
33+
34+
[JsonPropertyName("daysOfInventoryOutstandingTTM")]
35+
public double? DaysOfInventoryOutstandingTTM { get; set; }
36+
37+
[JsonPropertyName("operatingCycleTTM")]
38+
public double? OperatingCycleTTM { get; set; }
39+
40+
[JsonPropertyName("daysOfPayablesOutstandingTTM")]
41+
public double? DaysOfPayablesOutstandingTTM { get; set; }
42+
43+
[JsonPropertyName("cashConversionCycleTTM")]
44+
public double? CashConversionCycleTTM { get; set; }
45+
46+
[JsonPropertyName("grossProfitMarginTTM")]
47+
public double? GrossProfitMarginTTM { get; set; }
48+
49+
[JsonPropertyName("operatingProfitMarginTTM")]
50+
public double? OperatingProfitMarginTTM { get; set; }
51+
52+
[JsonPropertyName("pretaxProfitMarginTTM")]
53+
public double? PretaxProfitMarginTTM { get; set; }
54+
55+
[JsonPropertyName("netProfitMarginTTM")]
56+
public double? NetProfitMarginTTM { get; set; }
57+
58+
[JsonPropertyName("effectiveTaxRateTTM")]
59+
public double? EffectiveTaxRateTTM { get; set; }
60+
61+
[JsonPropertyName("returnOnAssetsTTM")]
62+
public double? ReturnOnAssetsTTM { get; set; }
63+
64+
[JsonPropertyName("returnOnEquityTTM")]
65+
public double? ReturnOnEquityTTM { get; set; }
66+
67+
[JsonPropertyName("returnOnCapitalEmployedTTM")]
68+
public double? ReturnOnCapitalEmployedTTM { get; set; }
69+
70+
[JsonPropertyName("netIncomePerEBTTTM")]
71+
public double? NetIncomePerEBTTTM { get; set; }
72+
73+
[JsonPropertyName("ebtPerEbitTTM")]
74+
public double? EbtPerEbitTTM { get; set; }
75+
76+
[JsonPropertyName("ebitPerRevenueTTM")]
77+
public double? EbitPerRevenueTTM { get; set; }
78+
79+
[JsonPropertyName("debtRatioTTM")]
80+
public double? DebtRatioTTM { get; set; }
81+
82+
[JsonPropertyName("debtEquityRatioTTM")]
83+
public double? DebtEquityRatioTTM { get; set; }
84+
85+
[JsonPropertyName("longTermDebtToCapitalizationTTM")]
86+
public double? LongTermDebtToCapitalizationTTM { get; set; }
87+
88+
[JsonPropertyName("totalDebtToCapitalizationTTM")]
89+
public double? TotalDebtToCapitalizationTTM { get; set; }
90+
91+
[JsonPropertyName("interestCoverageTTM")]
92+
public double? InterestCoverageTTM { get; set; }
93+
94+
[JsonPropertyName("cashFlowToDebtRatioTTM")]
95+
public double? CashFlowToDebtRatioTTM { get; set; }
96+
97+
[JsonPropertyName("companyEquityMultiplierTTM")]
98+
public double? CompanyEquityMultiplierTTM { get; set; }
99+
100+
[JsonPropertyName("receivablesTurnoverTTM")]
101+
public double? ReceivablesTurnoverTTM { get; set; }
102+
103+
[JsonPropertyName("payablesTurnoverTTM")]
104+
public double? PayablesTurnoverTTM { get; set; }
105+
106+
[JsonPropertyName("inventoryTurnoverTTM")]
107+
public double? InventoryTurnoverTTM { get; set; }
108+
109+
[JsonPropertyName("fixedAssetTurnoverTTM")]
110+
public double? FixedAssetTurnoverTTM { get; set; }
111+
112+
[JsonPropertyName("assetTurnoverTTM")]
113+
public double? AssetTurnoverTTM { get; set; }
114+
115+
[JsonPropertyName("operatingCashFlowPerShareTTM")]
116+
public double? OperatingCashFlowPerShareTTM { get; set; }
117+
118+
[JsonPropertyName("freeCashFlowPerShareTTM")]
119+
public double? FreeCashFlowPerShareTTM { get; set; }
120+
121+
[JsonPropertyName("cashPerShareTTM")]
122+
public double? CashPerShareTTM { get; set; }
123+
124+
[JsonPropertyName("operatingCashFlowSalesRatioTTM")]
125+
public double? OperatingCashFlowSalesRatioTTM { get; set; }
126+
127+
[JsonPropertyName("freeCashFlowOperatingCashFlowRatioTTM")]
128+
public double? FreeCashFlowOperatingCashFlowRatioTTM { get; set; }
129+
130+
[JsonPropertyName("cashFlowCoverageRatiosTTM")]
131+
public double? CashFlowCoverageRatiosTTM { get; set; }
132+
133+
[JsonPropertyName("shortTermCoverageRatiosTTM")]
134+
public double? ShortTermCoverageRatiosTTM { get; set; }
135+
136+
[JsonPropertyName("capitalExpenditureCoverageRatioTTM")]
137+
public double? CapitalExpenditureCoverageRatioTTM { get; set; }
138+
139+
[JsonPropertyName("dividendPaidAndCapexCoverageRatioTTM")]
140+
public double? DividendPaidAndCapexCoverageRatioTTM { get; set; }
141+
142+
[JsonPropertyName("priceBookValueRatioTTM")]
143+
public double? PriceBookValueRatioTTM { get; set; }
144+
145+
[JsonPropertyName("priceToBookRatioTTM")]
146+
public double? PriceToBookRatioTTM { get; set; }
147+
148+
[JsonPropertyName("priceToSalesRatioTTM")]
149+
public double? PriceToSalesRatioTTM { get; set; }
150+
151+
[JsonPropertyName("priceEarningsRatioTTM")]
152+
public double? PriceEarningsRatioTTM { get; set; }
153+
154+
[JsonPropertyName("priceToFreeCashFlowsRatioTTM")]
155+
public double? PriceToFreeCashFlowsRatioTTM { get; set; }
156+
157+
[JsonPropertyName("priceToOperatingCashFlowsRatioTTM")]
158+
public double? PriceToOperatingCashFlowsRatioTTM { get; set; }
159+
160+
[JsonPropertyName("priceCashFlowRatioTTM")]
161+
public double? PriceCashFlowRatioTTM { get; set; }
162+
163+
[JsonPropertyName("priceEarningsToGrowthRatioTTM")]
164+
public double? PriceEarningsToGrowthRatioTTM { get; set; }
165+
166+
[JsonPropertyName("priceSalesRatioTTM")]
167+
public double? PriceSalesRatioTTM { get; set; }
168+
169+
[JsonPropertyName("dividendYieldTTM")]
170+
public double? DividendYieldTTM { get; set; }
171+
172+
[JsonPropertyName("enterpriseValueMultipleTTM")]
173+
public double? EnterpriseValueMultipleTTM { get; set; }
174+
175+
[JsonPropertyName("priceFairValueTTM")]
176+
public double? PriceFairValueTTM { get; set; }
177+
178+
[JsonPropertyName("dividendPerShareTTM")]
179+
public double? DividendPerShareTTM { get; set; }
180+
}
181+
}

Tests/CompanyValuation/CompanyValuationTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,15 @@ public async Task GetHistoricalDiscountedCashFlowDailyAsync()
240240
Assert.All(result.Data, data => Assert.Equal("AAPL", data.Symbol));
241241
}
242242

243+
[Theory]
244+
[InlineData("AAPL")]
245+
public async Task GetRatiosTTMAsync(string symbol)
246+
{
247+
var result = await api.GetRatiosTTMAsync(symbol);
248+
249+
result.AssertNoErrors();
250+
}
251+
243252
[Theory]
244253
[InlineData("AAPL")]
245254
[InlineData("JNJ")]

0 commit comments

Comments
 (0)