// Import standardized types import type { OHLCV, OHLCVWithMetadata } from '@stock-bot/types'; // Import specific functions for convenience functions import { calculateStrategyMetrics } from './performance-metrics'; import { calculateRiskMetrics } from './risk-metrics'; import { atr, bollingerBands, cci, ema, macd, momentum, roc, rsi, sma, stochastic, williamsR, } from './technical-indicators'; /** * Comprehensive Financial Calculations Library * * This module provides a complete set of financial calculations for trading and investment analysis. * Organized into logical categories for easy use and maintenance. */ // Re-export all standardized types from @stock-bot/types export type { OHLCV, OHLCVWithMetadata, PortfolioPosition, PortfolioAnalysis, AssetAllocation, TradeExecution, TradePerformance, RiskMetrics, DrawdownAnalysis, ReturnAnalysis, OptionParameters, OptionPricing, GreeksCalculation, MarketData, LiquidityMetrics, MarketRegime, PositionSizeParams, KellyParams, BalanceSheet, IncomeStatement, CashFlowStatement, TechnicalIndicators, CorrelationResult, CorrelationMatrix, VolatilityEstimates, GARCHParameters, BacktestResults, HasClose, HasOHLC, HasVolume, HasTimestamp } from '@stock-bot/types'; // Export all calculation functions export * from './basic-calculations'; export * from './technical-indicators'; export * from './risk-metrics'; export * from './portfolio-analytics'; export * from './options-pricing'; export * from './position-sizing'; export * from './performance-metrics'; export * from './market-statistics'; export * from './volatility-models'; export * from './correlation-analysis'; // Convenience function to calculate all technical indicators at once export function calculateAllTechnicalIndicators( ohlcv: OHLCV[], periods: { sma?: number; ema?: number; rsi?: number; atr?: number } = {} ): TechnicalIndicators { const { sma: smaPeriod = 20, ema: emaPeriod = 20, rsi: rsiPeriod = 14, atr: atrPeriod = 14, } = periods; const closes = ohlcv.map(d => d.close); return { sma: sma(closes, smaPeriod), ema: ema(closes, emaPeriod), rsi: rsi(closes, rsiPeriod), macd: macd(closes), bollinger: bollingerBands(closes), atr: atr(ohlcv, atrPeriod), stochastic: stochastic(ohlcv), williams_r: williamsR(ohlcv), cci: cci(ohlcv), momentum: momentum(closes), roc: roc(closes), }; } // Convenience function for comprehensive portfolio analysis export function analyzePortfolio( returns: number[], equityCurve: Array<{ value: number; date: Date }>, benchmarkReturns?: number[], riskFreeRate: number = 0.02 ): { performance: PortfolioAnalysis; risk: RiskMetrics; trades?: any; drawdown?: any; } { const performance = calculateStrategyMetrics(equityCurve, benchmarkReturns, riskFreeRate); const equityValues = equityCurve.map(point => point.value); const risk = calculateRiskMetrics(returns, equityValues, benchmarkReturns, riskFreeRate); return { performance, risk, }; }