Getting Started¶
Installation¶
Add finance-query to your Cargo.toml:
Optional Features¶
| Feature | Description |
|---|---|
dataframe |
Polars DataFrame integration for data analysis |
backtesting |
Strategy backtesting engine (includes indicators) |
indicators |
52+ technical indicators (auto-enabled with backtesting) |
Quick Example¶
use finance_query::{Ticker, Interval, TimeRange};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let ticker = Ticker::new("AAPL").await?;
// Get quote
let quote = ticker.quote(true).await?;
println!("{}: ${:.2}", quote.symbol, quote.regular_market_price.unwrap_or(0.0));
// Get chart
let chart = ticker.chart(Interval::OneDay, TimeRange::OneMonth).await?;
println!("Candles: {}", chart.candles.len());
Ok(())
}
Key Features¶
📊 Stock Data & Analysis¶
// Quotes, financials, options, news
let ticker = Ticker::new("MSFT").await?;
let quote = ticker.quote(true).await?; // fetch quote with logo if available
let financials = ticker.financial_data().await?;
let options = ticker.options(None).await?;
→ Ticker API for complete reference
📦 Batch Operations¶
// Fetch multiple symbols efficiently
let tickers = Tickers::new(vec!["AAPL", "MSFT", "GOOGL"]).await?;
let quotes = tickers.quotes(true).await?; // fetch quotes with logos if available
let sparks = tickers.spark(Interval::OneDay, TimeRange::FiveDays).await?;
→ Batch Tickers for multi-symbol operations
🔍 Market Discovery¶
use finance_query::{finance, ScreenerType};
// Search, screeners, trending stocks
let results = finance::search("Tesla", &SearchOptions::default()).await?;
let actives = finance::screener(ScreenerType::MostActives, None).await?;
let trending = finance::trending(None).await?;
→ Finance Module for market-wide data
📊 DataFrame Support¶
// Convert to Polars DataFrames
let chart = ticker.chart(Interval::OneDay, TimeRange::OneMonth).await?;
let df = chart.to_dataframe()?;
→ DataFrame Support for data analysis
📈 Technical Indicators¶
// 52+ indicators: RSI, MACD, Bollinger Bands, etc.
let indicators = ticker.indicators(Interval::OneDay, TimeRange::ThreeMonths).await?;
if let Some(rsi) = indicators.rsi_14 {
println!("RSI: {:.2}", rsi);
}
→ Technical Indicators for all available indicators
🔬 Backtesting¶
use finance_query::backtesting::SmaCrossover;
// Test strategies against historical data
let result = ticker.backtest(
SmaCrossover::new(10, 20),
Interval::OneDay,
TimeRange::OneYear,
None,
).await?;
println!("Return: {:.2}%", result.metrics.total_return_pct);
→ Backtesting for strategy building
Next Steps¶
Start Here:
- Ticker API - Single symbol operations
- Technical Indicators - RSI, MACD, Bollinger Bands, and more
- Backtesting - Test trading strategies
Advanced:
- Batch Tickers - Multi-symbol efficiency
- Finance Module - Market-wide searches
- DataFrame Support - Data analysis with Polars
- Configuration - Regional settings and customization
- Models Reference - Response type documentation