API Reference
Complete reference for all portfolio-lib modules, classes, and functions.
Core Modules
- Money Flow Index (MFI)
- Ichimoku Cloud
- Parabolic SAR
- Commodity Channel Index (CCI)
- On Balance Volume (OBV)
- Money Flow Index (MFI)
- Average True Range (ATR)
- Average Directional Index (ADX)
- Commodity Channel Index (CCI)
- Momentum Indicator
- Rate of Change (ROC)
- Average True Range (ATR)
- Stochastic Oscillator
- Williams %R
- Momentum Indicator
- MACD (Moving Average Convergence Divergence)
- Bollinger Bands
- Stochastic Oscillator
- Exponential Moving Average (EMA)
- Relative Strength Index (RSI)
- MACD (Moving Average Convergence Divergence)
- Simple Moving Average (SMA)
- Exponential Moving Average (EMA)
- VWAP (Volume Weighted Average Price)
- SuperTrend Indicator
- Keltner Channels
- BaseIndicator, SMA, EMA, and RSI Classes
- Portfolio Class
- DataFeed and YFinanceDataFeed Classes
- Trade Class
- Portfolio Class
- Position Class
- Trade Class
- portfolio_lib.portfolio module
Module Overview
portfolio_lib.indicators
Technical analysis indicators and oscillators.
Key classes and functions:
TechnicalIndicators- Main indicators classsma()- Simple Moving Averageema()- Exponential Moving Averagersi()- Relative Strength Indexmacd()- MACD Indicatorbollinger_bands()- Bollinger Bands
portfolio_lib.core
Core portfolio management classes.
Key classes:
portfolio_lib.portfolio
Advanced portfolio analytics and risk management.
Key classes:
RiskMetrics- Basic risk calculationsAdvancedPortfolioAnalytics- Advanced analyticsPositionSizing- Position sizing algorithmsPerformanceAttribution- Performance analysis
Function Categories
Technical Indicators
Trend Following - Simple Moving Average (SMA) - Exponential Moving Average (EMA) - MACD (Moving Average Convergence Divergence)
Momentum Oscillators - Relative Strength Index (RSI) - Stochastic Oscillator - Williams %R - Commodity Channel Index (CCI)
Volatility Indicators - Bollinger Bands - Average True Range (ATR) - Average Directional Index (ADX)
Volume Indicators - On Balance Volume (OBV) - Money Flow Index (MFI)
Specialized Indicators - Ichimoku Cloud - Parabolic SAR - Momentum
Risk Metrics
Basic Risk Measures - Value at Risk (VaR) - Conditional Value at Risk (CVaR) - Maximum Drawdown - Volatility
Advanced Risk Measures - Sharpe Ratio - Sortino Ratio - Calmar Ratio - Burke Ratio - Ulcer Index
Market Risk - Beta (Systematic Risk) - Alpha (Risk-adjusted Return) - Tracking Error - Information Ratio
Position Sizing
Risk-Based Sizing - Fixed Fractional - Kelly Criterion - Volatility-based Sizing
Portfolio Construction - Risk Parity - Equal Weight - Market Cap Weighted
Performance Analytics
Return Analysis - Total Return - Annualized Return - Risk-adjusted Returns
Attribution Analysis - Sector Attribution - Factor Attribution - Security Selection vs Allocation
Quick Reference
Common Usage Patterns
Calculate Technical Indicators
from portfolio_lib.indicators import TechnicalIndicators
# Moving averages
sma = TechnicalIndicators.sma(prices, 20)
ema = TechnicalIndicators.ema(prices, 20)
# Oscillators
rsi = TechnicalIndicators.rsi(prices, 14)
macd_line, signal, histogram = TechnicalIndicators.macd(prices)
Risk Analysis
from portfolio_lib.portfolio import RiskMetrics
metrics = RiskMetrics(returns)
var_95 = metrics.var_95(returns)
max_dd = metrics.maximum_drawdown(equity_curve)
Portfolio Management
from portfolio_lib.core import Portfolio, Position
portfolio = Portfolio(initial_cash=100000)
position = Position("AAPL", 100, 150.0, datetime.now())
portfolio.add_position(position)
Data Types and Formats
Input Data Formats
All functions accept:
- Python lists: [100, 101, 102, ...]
- NumPy arrays: np.array([100, 101, 102, ...])
- Pandas Series: pd.Series([100, 101, 102, ...])
Return Types
Single values:
floatArrays:
np.ndarrayTuples:
(upper, middle, lower)for Bollinger BandsObjects: Custom classes for complex results
Date/Time Handling
Use
pandas.Timestampordatetime.datetimeSupport for time zones and business day calendars
Automatic alignment of time series data
Error Handling
Common Exceptions
ValueError: Invalid parameters or insufficient dataTypeError: Wrong data types passed to functionsIndexError: Array index out of boundsZeroDivisionError: Division by zero in calculations
Best Practices
Always validate input data lengths
Check for NaN values in results
Handle insufficient data gracefully
Use appropriate error handling in production code
Version Compatibility
Supported Python Versions - Python 3.8+ - Python 3.9+ (recommended) - Python 3.10+ - Python 3.11+
Dependencies - NumPy >= 1.20.0 - Pandas >= 1.3.0 - Matplotlib >= 3.4.0 - SciPy >= 1.7.0
Breaking Changes - v1.0.0: Initial stable release - See CHANGELOG.md for version-specific changes