feat(core): update DTOs, Trade Republic client, Yahoo scrapers, and dynamic settings
This commit is contained in:
@@ -5,277 +5,38 @@ using System.Text.Json.Serialization;
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// Data transfer object representing the complete fundamental analysis dataset of an asset.
|
||||
/// Haupt-DTO für die aggregierte Anzeige der Stammdaten, Fundamentaldaten und Events eines Assets.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record AssetFundamentalsDto
|
||||
{
|
||||
[JsonPropertyName("isin")]
|
||||
public string Isin { get; init; } = string.Empty;
|
||||
[JsonPropertyName("primaryTicker")]
|
||||
public string PrimaryTicker { get; init; } = string.Empty;
|
||||
[JsonPropertyName("ticker")]
|
||||
public string Ticker { get; init; } = string.Empty;
|
||||
[JsonPropertyName("companyName")]
|
||||
public string CompanyName { get; init; } = string.Empty;
|
||||
[JsonPropertyName("exchange")]
|
||||
public string? Exchange { get; init; }
|
||||
[JsonPropertyName("tradingCurrency")]
|
||||
public string? TradingCurrency { get; init; }
|
||||
[JsonPropertyName("businessSummary")]
|
||||
public string? BusinessSummary { get; init; }
|
||||
[JsonPropertyName("sector")]
|
||||
public string? Sector { get; init; }
|
||||
[JsonPropertyName("industry")]
|
||||
public string? Industry { get; init; }
|
||||
[JsonPropertyName("country")]
|
||||
public string? Country { get; init; }
|
||||
[JsonPropertyName("employees")]
|
||||
public int? Employees { get; init; }
|
||||
/// <summary>
|
||||
/// Grundlegende Unternehmens- und Stammdaten (Aus AssetDataEntity).
|
||||
/// </summary>
|
||||
[JsonPropertyName("asset")]
|
||||
public AssetHeaderDto Asset { get; init; } = new();
|
||||
|
||||
// Valuation Metrics (derived from Primary Ticker)
|
||||
[JsonPropertyName("currentPrice")]
|
||||
public decimal CurrentPrice { get; init; }
|
||||
[JsonPropertyName("dayChangeAbsolute")]
|
||||
public decimal DayChangeAbsolute { get; init; }
|
||||
[JsonPropertyName("dayChangePercent")]
|
||||
public decimal DayChangePercent { get; init; }
|
||||
[JsonPropertyName("fiftyTwoWeekHigh")]
|
||||
public decimal FiftyTwoWeekHigh { get; init; }
|
||||
[JsonPropertyName("fiftyTwoWeekLow")]
|
||||
public decimal FiftyTwoWeekLow { get; init; }
|
||||
[JsonPropertyName("marketCapitalization")]
|
||||
public decimal MarketCapitalization { get; init; }
|
||||
[JsonPropertyName("enterpriseValue")]
|
||||
public decimal EnterpriseValue { get; init; }
|
||||
[JsonPropertyName("peRatioTrailing")]
|
||||
public decimal? PeRatioTrailing { get; init; }
|
||||
[JsonPropertyName("peRatioForward")]
|
||||
public decimal? PeRatioForward { get; init; }
|
||||
[JsonPropertyName("pegRatio")]
|
||||
public decimal? PegRatio { get; init; }
|
||||
[JsonPropertyName("pbRatio")]
|
||||
public decimal? PbRatio { get; init; }
|
||||
[JsonPropertyName("psRatio")]
|
||||
public decimal? PsRatio { get; init; }
|
||||
[JsonPropertyName("evToEbitda")]
|
||||
public decimal? EvToEbitda { get; init; }
|
||||
[JsonPropertyName("evToRevenue")]
|
||||
public decimal? EvToRevenue { get; init; }
|
||||
/// <summary>
|
||||
/// Aktuellste Finanzeckdaten und Kennzahlen (Aus FundamentalDataEntity).
|
||||
/// </summary>
|
||||
[JsonPropertyName("fundamentals")]
|
||||
public FundamentalDataDto? Fundamentals { get; init; }
|
||||
|
||||
// Financial Health & Leverage
|
||||
[JsonPropertyName("grossMargin")]
|
||||
public decimal? GrossMargin { get; init; }
|
||||
[JsonPropertyName("operatingMargin")]
|
||||
public decimal? OperatingMargin { get; init; }
|
||||
[JsonPropertyName("netProfitMargin")]
|
||||
public decimal? NetProfitMargin { get; init; }
|
||||
[JsonPropertyName("returnOnEquity")]
|
||||
public decimal? ReturnOnEquity { get; init; }
|
||||
[JsonPropertyName("returnOnAssets")]
|
||||
public decimal? ReturnOnAssets { get; init; }
|
||||
[JsonPropertyName("returnOnInvestedCapital")]
|
||||
public decimal? ReturnOnInvestedCapital { get; init; }
|
||||
[JsonPropertyName("debtToEquity")]
|
||||
public decimal? DebtToEquity { get; init; }
|
||||
[JsonPropertyName("currentRatio")]
|
||||
public decimal? CurrentRatio { get; init; }
|
||||
[JsonPropertyName("quickRatio")]
|
||||
public decimal? QuickRatio { get; init; }
|
||||
[JsonPropertyName("interestCoverage")]
|
||||
public decimal? InterestCoverage { get; init; }
|
||||
|
||||
// Dividends & Ownership
|
||||
[JsonPropertyName("dividendYield")]
|
||||
public decimal? DividendYield { get; init; }
|
||||
[JsonPropertyName("payoutRatio")]
|
||||
public decimal? PayoutRatio { get; init; }
|
||||
[JsonPropertyName("exDividendDate")]
|
||||
public DateTime? ExDividendDate { get; init; }
|
||||
[JsonPropertyName("nextEarningsDate")]
|
||||
public DateTime? NextEarningsDate { get; init; }
|
||||
[JsonPropertyName("percentHeldByInstitutions")]
|
||||
public decimal? PercentHeldByInstitutions { get; init; }
|
||||
[JsonPropertyName("percentHeldByInsiders")]
|
||||
public decimal? PercentHeldByInsiders { get; init; }
|
||||
[JsonPropertyName("shortRatio")]
|
||||
public decimal? ShortRatio { get; init; }
|
||||
[JsonPropertyName("shortPercentOfFloat")]
|
||||
public decimal? ShortPercentOfFloat { get; init; }
|
||||
|
||||
// Forecasts
|
||||
[JsonPropertyName("consensusRating")]
|
||||
public string? ConsensusRating { get; init; }
|
||||
[JsonPropertyName("priceTargetLow")]
|
||||
public decimal? PriceTargetLow { get; init; }
|
||||
[JsonPropertyName("priceTargetHigh")]
|
||||
public decimal? PriceTargetHigh { get; init; }
|
||||
[JsonPropertyName("priceTargetMedian")]
|
||||
public decimal? PriceTargetMedian { get; init; }
|
||||
[JsonPropertyName("priceTargetMean")]
|
||||
public decimal? PriceTargetMean { get; init; }
|
||||
|
||||
// Timestamps
|
||||
[JsonPropertyName("lastUpdatedAt")]
|
||||
public DateTime LastUpdatedAt { get; init; }
|
||||
|
||||
// Relational Collections
|
||||
/// <summary>
|
||||
/// Liste der Führungskräfte/Vorstände (Aus KeyExecutiveEntity).
|
||||
/// </summary>
|
||||
[JsonPropertyName("executives")]
|
||||
public List<CompanyExecutiveDto> Executives { get; init; } = [];
|
||||
[JsonPropertyName("financialStatements")]
|
||||
public List<FinancialStatementDto> FinancialStatements { get; init; } = [];
|
||||
[JsonPropertyName("estimates")]
|
||||
public List<ForwardEstimateDto> Estimates { get; init; } = [];
|
||||
[JsonPropertyName("availableTickers")]
|
||||
public List<TickerDto> AvailableTickers { get; init; } = [];
|
||||
}
|
||||
public List<KeyExecutiveDto> Executives { get; init; } = [];
|
||||
|
||||
public record CompanyExecutiveDto
|
||||
{
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; init; } = string.Empty;
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; init; } = string.Empty;
|
||||
[JsonPropertyName("age")]
|
||||
public int? Age { get; init; }
|
||||
[JsonPropertyName("compensation")]
|
||||
public decimal? Compensation { get; init; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Bevorstehende oder vergangene Termine wie Earnings oder Dividenden (Aus AssetEventEntity).
|
||||
/// </summary>
|
||||
[JsonPropertyName("events")]
|
||||
public List<CorporateEventDto> Events { get; init; } = [];
|
||||
|
||||
public record FinancialStatementDto
|
||||
{
|
||||
[JsonPropertyName("periodType")]
|
||||
public string PeriodType { get; init; } = string.Empty; // "Annual" or "Quarterly"
|
||||
[JsonPropertyName("endDate")]
|
||||
public DateTime EndDate { get; init; }
|
||||
|
||||
// Income Statement
|
||||
[JsonPropertyName("totalRevenue")]
|
||||
public decimal? TotalRevenue { get; init; }
|
||||
[JsonPropertyName("costOfRevenue")]
|
||||
public decimal? CostOfRevenue { get; init; }
|
||||
[JsonPropertyName("grossProfit")]
|
||||
public decimal? GrossProfit { get; init; }
|
||||
[JsonPropertyName("operatingExpenses")]
|
||||
public decimal? OperatingExpenses { get; init; }
|
||||
[JsonPropertyName("operatingIncome")]
|
||||
public decimal? OperatingIncome { get; init; }
|
||||
[JsonPropertyName("ebitda")]
|
||||
public decimal? Ebitda { get; init; }
|
||||
[JsonPropertyName("netIncome")]
|
||||
public decimal? NetIncome { get; init; }
|
||||
[JsonPropertyName("epsBasic")]
|
||||
public decimal? EpsBasic { get; init; }
|
||||
[JsonPropertyName("epsDiluted")]
|
||||
public decimal? EpsDiluted { get; init; }
|
||||
|
||||
// Balance Sheet
|
||||
[JsonPropertyName("cashAndCashEquivalents")]
|
||||
public decimal? CashAndCashEquivalents { get; init; }
|
||||
[JsonPropertyName("accountsReceivable")]
|
||||
public decimal? AccountsReceivable { get; init; }
|
||||
[JsonPropertyName("inventory")]
|
||||
public decimal? Inventory { get; init; }
|
||||
[JsonPropertyName("totalCurrentAssets")]
|
||||
public decimal? TotalCurrentAssets { get; init; }
|
||||
[JsonPropertyName("totalNonCurrentAssets")]
|
||||
public decimal? TotalNonCurrentAssets { get; init; }
|
||||
[JsonPropertyName("currentLiabilities")]
|
||||
public decimal? CurrentLiabilities { get; init; }
|
||||
[JsonPropertyName("longTermDebt")]
|
||||
public decimal? LongTermDebt { get; init; }
|
||||
[JsonPropertyName("totalLiabilities")]
|
||||
public decimal? TotalLiabilities { get; init; }
|
||||
[JsonPropertyName("totalStockholdersEquity")]
|
||||
public decimal? TotalStockholdersEquity { get; init; }
|
||||
|
||||
// Cash Flow Statement
|
||||
[JsonPropertyName("operatingCashFlow")]
|
||||
public decimal? OperatingCashFlow { get; init; }
|
||||
[JsonPropertyName("investingCashFlow")]
|
||||
public decimal? InvestingCashFlow { get; init; }
|
||||
[JsonPropertyName("capitalExpenditures")]
|
||||
public decimal? CapitalExpenditures { get; init; }
|
||||
[JsonPropertyName("financingCashFlow")]
|
||||
public decimal? FinancingCashFlow { get; init; }
|
||||
[JsonPropertyName("freeCashFlow")]
|
||||
public decimal? FreeCashFlow { get; init; } // OperatingCashFlow - CapEx
|
||||
}
|
||||
|
||||
public record ForwardEstimateDto
|
||||
{
|
||||
[JsonPropertyName("period")]
|
||||
public string Period { get; init; } = string.Empty; // "CurrentQuarter", "NextQuarter", "CurrentYear", "NextYear"
|
||||
[JsonPropertyName("expectedRevenue")]
|
||||
public decimal? ExpectedRevenue { get; init; }
|
||||
[JsonPropertyName("expectedEps")]
|
||||
public decimal? ExpectedEps { get; init; }
|
||||
[JsonPropertyName("expectedGrowthRate")]
|
||||
public decimal? ExpectedGrowthRate { get; init; }
|
||||
}
|
||||
|
||||
public record TickerDto
|
||||
{
|
||||
[JsonPropertyName("ticker")]
|
||||
public string Ticker { get; init; } = string.Empty;
|
||||
[JsonPropertyName("exchange")]
|
||||
public string? Exchange { get; init; }
|
||||
[JsonPropertyName("tradingCurrency")]
|
||||
public string? TradingCurrency { get; init; }
|
||||
[JsonPropertyName("currentPrice")]
|
||||
public decimal CurrentPrice { get; init; }
|
||||
[JsonPropertyName("dayChangeAbsolute")]
|
||||
public decimal DayChangeAbsolute { get; init; }
|
||||
[JsonPropertyName("dayChangePercent")]
|
||||
public decimal DayChangePercent { get; init; }
|
||||
[JsonPropertyName("fiftyTwoWeekHigh")]
|
||||
public decimal FiftyTwoWeekHigh { get; init; }
|
||||
[JsonPropertyName("fiftyTwoWeekLow")]
|
||||
public decimal FiftyTwoWeekLow { get; init; }
|
||||
[JsonPropertyName("marketCapitalization")]
|
||||
public decimal MarketCapitalization { get; init; }
|
||||
[JsonPropertyName("enterpriseValue")]
|
||||
public decimal EnterpriseValue { get; init; }
|
||||
|
||||
[JsonPropertyName("peRatioTrailing")]
|
||||
public decimal? PeRatioTrailing { get; init; }
|
||||
[JsonPropertyName("peRatioForward")]
|
||||
public decimal? PeRatioForward { get; init; }
|
||||
[JsonPropertyName("pegRatio")]
|
||||
public decimal? PegRatio { get; init; }
|
||||
[JsonPropertyName("pbRatio")]
|
||||
public decimal? PbRatio { get; init; }
|
||||
[JsonPropertyName("psRatio")]
|
||||
public decimal? PsRatio { get; init; }
|
||||
[JsonPropertyName("evToEbitda")]
|
||||
public decimal? EvToEbitda { get; init; }
|
||||
[JsonPropertyName("evToRevenue")]
|
||||
public decimal? EvToRevenue { get; init; }
|
||||
|
||||
[JsonPropertyName("grossMargin")]
|
||||
public decimal? GrossMargin { get; init; }
|
||||
[JsonPropertyName("operatingMargin")]
|
||||
public decimal? OperatingMargin { get; init; }
|
||||
[JsonPropertyName("netProfitMargin")]
|
||||
public decimal? NetProfitMargin { get; init; }
|
||||
[JsonPropertyName("returnOnEquity")]
|
||||
public decimal? ReturnOnEquity { get; init; }
|
||||
[JsonPropertyName("returnOnAssets")]
|
||||
public decimal? ReturnOnAssets { get; init; }
|
||||
[JsonPropertyName("returnOnInvestedCapital")]
|
||||
public decimal? ReturnOnInvestedCapital { get; init; }
|
||||
[JsonPropertyName("debtToEquity")]
|
||||
public decimal? DebtToEquity { get; init; }
|
||||
[JsonPropertyName("currentRatio")]
|
||||
public decimal? CurrentRatio { get; init; }
|
||||
[JsonPropertyName("quickRatio")]
|
||||
public decimal? QuickRatio { get; init; }
|
||||
[JsonPropertyName("interestCoverage")]
|
||||
public decimal? InterestCoverage { get; init; }
|
||||
|
||||
[JsonPropertyName("dividendYield")]
|
||||
public decimal? DividendYield { get; init; }
|
||||
[JsonPropertyName("payoutRatio")]
|
||||
public decimal? PayoutRatio { get; init; }
|
||||
[JsonPropertyName("exDividendDate")]
|
||||
public DateTime? ExDividendDate { get; init; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Zeitstempel der letzten Gesamt-Aktualisierung.
|
||||
/// </summary>
|
||||
[JsonPropertyName("lastUpdatedAt")]
|
||||
public DateTime LastUpdatedAt { get; init; } = DateTime.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// Enthält die Stammdaten eines Unternehmens/Assets.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record AssetHeaderDto
|
||||
{
|
||||
[JsonPropertyName("isin")]
|
||||
public string Isin { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("primaryTicker")]
|
||||
public TickerInfoDto PrimaryTicker { get; init; }
|
||||
|
||||
[JsonPropertyName("availableTickers")]
|
||||
public List<TickerInfoDto> AvailableTickers { get; init; } = [];
|
||||
}
|
||||
@@ -4,22 +4,29 @@ using System.Text.Json.Serialization;
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// DTO representing a scheduled corporate event (e.g. Earnings, Ex-Dividend, Dividend Payout).
|
||||
/// Repräsentiert ein Unternehmensereignis (z. B. Quartalszahlen, Dividendentag).
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record CorporateEventDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public Guid Id { get; init; }
|
||||
|
||||
[JsonPropertyName("isin")]
|
||||
public string Isin { get; init; } = string.Empty;
|
||||
|
||||
public string? Isin { get; init; }
|
||||
|
||||
[JsonPropertyName("ticker")]
|
||||
public string Ticker { get; init; } = string.Empty;
|
||||
|
||||
public TickerInfoDto Ticker { get; init; }
|
||||
|
||||
[JsonPropertyName("companyName")]
|
||||
public string CompanyName { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("eventType")]
|
||||
public string EventType { get; init; } = string.Empty; // "Quartalsergebnis", "Ex-Dividendentag", "Dividenden-Zahltag"
|
||||
|
||||
public string? CompanyName { get; init; }
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; init; } = string.Empty; // z.B. "Earnings", "Ex-Dividend"
|
||||
|
||||
[JsonIgnore]
|
||||
public string EventType => Type;
|
||||
|
||||
[JsonPropertyName("date")]
|
||||
public DateTime Date { get; init; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// Repräsentiert die finanziellen Kennzahlen und Valuation-Multiples eines Assets.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record FundamentalDataDto
|
||||
{
|
||||
[JsonPropertyName("ticker")]
|
||||
public TickerInfoDto Ticker { get; init; }
|
||||
|
||||
// --- Valuation & Multiples ---
|
||||
[JsonPropertyName("marketCap")]
|
||||
public decimal? MarketCap { get; init; }
|
||||
|
||||
[JsonPropertyName("enterpriseValue")]
|
||||
public decimal? EnterpriseValue { get; init; }
|
||||
|
||||
[JsonPropertyName("trailingPe")]
|
||||
public decimal? TrailingPe { get; init; }
|
||||
|
||||
[JsonPropertyName("forwardPe")]
|
||||
public decimal? ForwardPe { get; init; }
|
||||
|
||||
[JsonPropertyName("pegRatio")]
|
||||
public decimal? PegRatio { get; init; }
|
||||
|
||||
[JsonPropertyName("priceToSales")]
|
||||
public decimal? PriceToSales { get; init; }
|
||||
|
||||
[JsonPropertyName("priceToBook")]
|
||||
public decimal? PriceToBook { get; init; }
|
||||
|
||||
[JsonPropertyName("evToEbitda")]
|
||||
public decimal? EvToEbitda { get; init; }
|
||||
|
||||
// --- Income Statement (TTM) ---
|
||||
[JsonPropertyName("totalRevenue")]
|
||||
public decimal? TotalRevenue { get; init; }
|
||||
|
||||
[JsonPropertyName("revenueGrowthYoY")]
|
||||
public decimal? RevenueGrowthYoY { get; init; }
|
||||
|
||||
[JsonPropertyName("grossProfit")]
|
||||
public decimal? GrossProfit { get; init; }
|
||||
|
||||
[JsonPropertyName("operatingIncome")]
|
||||
public decimal? OperatingIncome { get; init; }
|
||||
|
||||
[JsonPropertyName("ebitda")]
|
||||
public decimal? Ebitda { get; init; }
|
||||
|
||||
[JsonPropertyName("netIncome")]
|
||||
public decimal? NetIncome { get; init; }
|
||||
|
||||
[JsonPropertyName("dilutedEps")]
|
||||
public decimal? DilutedEps { get; init; }
|
||||
|
||||
// --- Balance Sheet & Cash Flow ---
|
||||
[JsonPropertyName("totalCash")]
|
||||
public decimal? TotalCash { get; init; }
|
||||
|
||||
[JsonPropertyName("totalDebt")]
|
||||
public decimal? TotalDebt { get; init; }
|
||||
|
||||
[JsonPropertyName("debtToEquity")]
|
||||
public decimal? DebtToEquity { get; init; }
|
||||
|
||||
[JsonPropertyName("currentRatio")]
|
||||
public decimal? CurrentRatio { get; init; }
|
||||
|
||||
[JsonPropertyName("operatingCashFlow")]
|
||||
public decimal? OperatingCashFlow { get; init; }
|
||||
|
||||
[JsonPropertyName("freeCashFlow")]
|
||||
public decimal? FreeCashFlow { get; init; }
|
||||
|
||||
// --- Dividenden & Profitabilität ---
|
||||
[JsonPropertyName("returnOnEquity")]
|
||||
public decimal? ReturnOnEquity { get; init; }
|
||||
|
||||
[JsonPropertyName("returnOnAssets")]
|
||||
public decimal? ReturnOnAssets { get; init; }
|
||||
|
||||
[JsonPropertyName("forwardDividendYield")]
|
||||
public decimal? ForwardDividendYield { get; init; }
|
||||
|
||||
[JsonPropertyName("payoutRatio")]
|
||||
public decimal? PayoutRatio { get; init; }
|
||||
|
||||
// --- 52-Wochen-Spannbreite ---
|
||||
[JsonPropertyName("fiftyTwoWeekHigh")]
|
||||
public decimal? FiftyTwoWeekHigh { get; init; }
|
||||
|
||||
[JsonPropertyName("fiftyTwoWeekLow")]
|
||||
public decimal? FiftyTwoWeekLow { get; init; }
|
||||
|
||||
// --- Analysten-Ratings & Kursziele ---
|
||||
[JsonPropertyName("consensusRating")]
|
||||
public string? ConsensusRating { get; init; }
|
||||
|
||||
[JsonPropertyName("priceTargetLow")]
|
||||
public decimal? PriceTargetLow { get; init; }
|
||||
|
||||
[JsonPropertyName("priceTargetMean")]
|
||||
public decimal? PriceTargetMean { get; init; }
|
||||
|
||||
[JsonPropertyName("priceTargetHigh")]
|
||||
public decimal? PriceTargetHigh { get; init; }
|
||||
|
||||
// --- Aktionärsstruktur & Short-Interesse ---
|
||||
[JsonPropertyName("percentHeldByInstitutions")]
|
||||
public decimal? PercentHeldByInstitutions { get; init; }
|
||||
|
||||
[JsonPropertyName("percentHeldByInsiders")]
|
||||
public decimal? PercentHeldByInsiders { get; init; }
|
||||
|
||||
[JsonPropertyName("shortPercentOfFloat")]
|
||||
public decimal? ShortPercentOfFloat { get; init; }
|
||||
|
||||
[JsonPropertyName("shortRatio")]
|
||||
public decimal? ShortRatio { get; init; }
|
||||
|
||||
[JsonPropertyName("lastUpdatedUtc")]
|
||||
public DateTime LastUpdatedUtc { get; init; }
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// Repräsentiert eine Führungskraft/Vorstandsmitglied eines Unternehmens.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record KeyExecutiveDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public Guid Id { get; init; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("payment")]
|
||||
public string Payment { get; init; } = string.Empty;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FinlyticCore.Dtos.Fundamentals;
|
||||
|
||||
/// <summary>
|
||||
/// Enthält einen Ticker mit zugehörigem Börsenplatz.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public record TickerInfoDto
|
||||
{
|
||||
[JsonPropertyName("ticker")]
|
||||
public string Ticker { get; init; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("exchange")]
|
||||
public string? Exchange { get; init; }
|
||||
}
|
||||
Reference in New Issue
Block a user