#[cfg(feature = "dataframe")]
mod soothfast_capture_body {
use finance_query::{Interval, Ticker, TimeRange};
use polars::prelude::*;
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
let ticker = Ticker::new("AAPL").await?;
let chart = ticker.chart(Interval::OneDay, TimeRange::OneYear).await?;
let df = chart.to_dataframe()?;
let monthly = df
.lazy()
.with_column((col("timestamp") / lit(86400i64 * 30i64)).alias("month"))
.group_by([col("month")])
.agg([
col("close").mean().alias("avg_close"),
col("volume").sum().alias("total_volume"),
col("high").max().alias("max_high"),
col("low").min().alias("min_low"),
])
.collect()?;
println!("{}", monthly);
Ok(())
}
}
#[cfg(feature = "dataframe")]
pub use soothfast_capture_body::main;
#[cfg(not(feature = "dataframe"))]
fn main() {}