3 个版本
0.1.2 | 2019年7月23日 |
---|---|
0.1.1 | 2019年7月21日 |
0.1.0 | 2019年7月19日 |
在 财务 类别中排名 176
每月下载 25 次
在 2 crates 中使用
47KB
666 行
Crate fin_model
此 API 的目的是以一致和惯用的方式构建公司和市场财务信息的全面数据模型,而不是特定服务提供商的 API。
然后可以使用描述了特性和由特定服务提供商实现的请求来填充此模型。因此,客户端可以使用通用的数据模型与 Rust 本地类型和惯用语法一起使用,但对于不同数据类型、市场或服务质量,可以切换到不同的服务提供商。
此库仅提供由执行金融数据请求(如价格报价、分析师数据或公司信息)的 Provider
实现的类型和特性。在我们使用的模型中,我们使用术语 请求特性 来指代包含用于请求数据的函数并使用通用 RequestResult
响应的特性行为。
注意:在我们使用的模型中,我们使用术语 请求特性 来指代包含用于请求数据的函数并使用通用
RequestResult
响应的特性行为。
模块
::analysis
核心分析师建议,Ratings
,PriceTarget
和EPSConsensus
。::classification
用于建模分类方案的类型,Code<T>
,和特性,ClassificationScheme<T>
。::company
公司信息,收入和资产负债表。::market
用于建模市场/交易所信息的类型,Market
,和特性,MarketRegistry
。::provider
实现请求特性的提供者的核心特性::quote
市场报价,Quote
,QuotePrice
,PriceRange
和PriceRangeSeries
。::reporting
报告函数的核心类型,FinancialPeriod
和FiscalPeriod
。::request
请求的结果和错误类型。::symbol
市场和安全符号的类型。
以上模块中声明的类型的一个常见子集可以从 ::prelude
模块导入。
示例
以下使用由提供者实现的 FetchPriceRangeSeries
特性来检索给定股票符号过去三个月的价格信息。
fn get_stock_price_data(provider: Provider, stock_symbol: Symbol) {
match provider.last(stock_symbol, SeriesInterval::ThreeMonths) {
Err(e) => {
println!("Call failed: {:?}", e);
}
Ok(series) => {
let mut table = Table::new();
table.add_row(row!["Date", "Open", "Low", "High", "Close", "Volume"]);
for range in series.series {
table.add_row(row![
range.date.date(),
range.data.open,
range.data.low,
range.data.high,
range.data.close,
match range.data.volume {
None => "N/A".to_string(),
Some(v) => v.to_formatted_string(&locale),
}
]);
}
table.printstd();
}
}
}
依赖项
~3–4.5MB
~76K SLoC