124 lines
3 KiB
TypeScript
124 lines
3 KiB
TypeScript
// 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,
|
|
};
|
|
}
|