#quote #company #stock

fin_model

金融操作的中立模型

3 个版本

0.1.2 2019年7月23日
0.1.1 2019年7月21日
0.1.0 2019年7月19日

财务 类别中排名 176

每月下载 25
2 crates 中使用

MIT 许可证

47KB
666

Crate fin_model

此 API 的目的是以一致和惯用的方式构建公司和市场财务信息的全面数据模型,而不是特定服务提供商的 API。

然后可以使用描述了特性和由特定服务提供商实现的请求来填充此模型。因此,客户端可以使用通用的数据模型与 Rust 本地类型和惯用语法一起使用,但对于不同数据类型、市场或服务质量,可以切换到不同的服务提供商。

此库仅提供由执行金融数据请求(如价格报价、分析师数据或公司信息)的 Provider 实现的类型和特性。在我们使用的模型中,我们使用术语 请求特性 来指代包含用于请求数据的函数并使用通用 RequestResult 响应的特性行为。

注意:在我们使用的模型中,我们使用术语 请求特性 来指代包含用于请求数据的函数并使用通用 RequestResult 响应的特性行为。

模块

  • ::analysis 核心分析师建议,RatingsPriceTargetEPSConsensus
  • ::classification 用于建模分类方案的类型,Code<T>,和特性,ClassificationScheme<T>
  • ::company 公司信息,收入和资产负债表。
  • ::market 用于建模市场/交易所信息的类型,Market,和特性,MarketRegistry
  • ::provider 实现请求特性的提供者的核心特性
  • ::quote 市场报价,QuoteQuotePricePriceRangePriceRangeSeries
  • ::reporting 报告函数的核心类型,FinancialPeriodFiscalPeriod
  • ::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