nautilus_analysis/python/statistics/
returns_avg.rs1use std::collections::BTreeMap;
17
18use pyo3::prelude::*;
19
20use super::transform_returns;
21use crate::{statistic::PortfolioStatistic, statistics::returns_avg::ReturnsAverage};
22
23#[pymethods]
24#[pyo3_stub_gen::derive::gen_stub_pymethods]
25impl ReturnsAverage {
26 #[new]
27 fn py_new() -> Self {
28 Self {}
29 }
30
31 fn __repr__(&self) -> String {
32 self.to_string()
33 }
34
35 #[getter]
36 #[pyo3(name = "name")]
37 fn py_name(&self) -> String {
38 self.name()
39 }
40
41 #[pyo3(name = "calculate_from_returns")]
42 #[expect(clippy::needless_pass_by_value)]
43 fn py_calculate_from_returns(&mut self, raw_returns: BTreeMap<u64, f64>) -> Option<f64> {
44 self.calculate_from_returns(&transform_returns(&raw_returns))
45 }
46
47 #[pyo3(name = "calculate_from_realized_pnls")]
48 fn py_calculate_from_realized_pnls(&mut self, _realized_pnls: Vec<f64>) -> Option<f64> {
49 None
50 }
51
52 #[pyo3(name = "calculate_from_positions")]
53 fn py_calculate_from_positions(&mut self, _positions: Vec<Py<PyAny>>) -> Option<f64> {
54 None
55 }
56}