Coverage for src / jquantstats / __init__.py: 100%

8 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-26 18:44 +0000

1"""jQuantStats: Portfolio analytics for quants. 

2 

3Two entry points 

4---------------- 

5**Entry point 1 — prices + positions (recommended for active portfolios):** 

6 

7Use :class:`~jquantstats.portfolio.Portfolio` when you have price series and 

8position sizes. Portfolio compiles the NAV curve from raw inputs and exposes 

9the full analytics suite via ``.stats``, ``.plots``, and ``.report``. 

10 

11```python 

12from jquantstats import Portfolio 

13import polars as pl 

14 

15pf = Portfolio.from_cash_position( 

16 prices=prices_df, 

17 cash_position=positions_df, 

18 aum=1_000_000, 

19) 

20pf.stats.sharpe() 

21pf.plots.snapshot() 

22``` 

23 

24**Entry point 2 — returns series (for arbitrary return streams):** 

25 

26Use :class:`~jquantstats.data.Data` when you already have a returns series 

27(e.g. downloaded from a data vendor) and want benchmark comparison or 

28factor analytics. 

29 

30```python 

31from jquantstats import Data 

32import polars as pl 

33 

34data = Data.from_returns(returns=returns_df, benchmark=bench_df) 

35data.stats.sharpe() 

36data.plots.plot_snapshot(title="Performance") 

37``` 

38 

39The two APIs are layered: ``portfolio.data`` returns a :class:`~jquantstats.data.Data` 

40object so you can always drop into the returns-series API from a Portfolio. 

41 

42For more information, visit the `jQuantStats Documentation <https://tschm.github.io/jquantstats/book>`_. 

43""" 

44 

45import importlib.metadata 

46 

47from ._cost_model import CostModel as CostModel 

48from ._types import NativeFrame as NativeFrame 

49from ._types import NativeFrameOrScalar as NativeFrameOrScalar 

50from .data import Data as Data 

51from .portfolio import Portfolio as Portfolio 

52 

53__version__ = importlib.metadata.version("jquantstats") 

54 

55__all__ = [ 

56 "CostModel", 

57 "Data", 

58 "NativeFrame", 

59 "NativeFrameOrScalar", 

60 "Portfolio", 

61]