finmagic
v1.0.4
Published
A TypeScript library for essential financial, technical, and statistical calculations.
Downloads
507
Maintainers
Readme
💰 finmagic
A TypeScript library for essential financial, technical, and statistical calculations. Designed for Node.js and browser environments, finmagic provides fast and reliable methods for traders, analysts, and developers.
Features
- Price calculations:
percentChange(current: number, previous: number): numberdailyReturn(current: number, previous: number): numbercumulativeReturn(returns: number[]): number
- Moving averages:
SMA(values: number[], period: number): numberEMA(values: number[], period: number): number
- Financial calculations:
PV(futureValue: number, rate: number, periods: number): numberFV(presentValue: number, rate: number, periods: number): numberNPV(rate: number, cashFlows: number[]): numberIRR(cashFlows: number[], guess?: number): number
- Financial ratios:
PE(price: number, earnings: number): numberPB(price: number, bookValue: number): numberDividendYield(dividend: number, price: number): numberBeta(portfolioReturn: number, marketReturn: number): numberAlpha(expectedReturn: number, actualReturn: number): numberSharpe(returns: number[]): number
- Risk management:
volatility(returns: number[]): numberpositionSizing(capital: number, risk: number, stopLossPoints: number): numberstopLoss(entryPrice: number, percent: number): numbertakeProfit(entryPrice: number, percent: number): number
- Volume indicators:
VWAP(prices: number[], volumes: number[]): numberaccumulationDistribution(close: number[], open: number[], volume: number[]): number
- Statistical functions:
covariance(a: number[], b: number[]): numbercorrelation(a: number[], b: number[]): number
Installation
npm install finmagicUsage
import { SMA, PV, Sharpe } from 'finmagic';
const prices = [10, 12, 11, 13, 15];
const average = SMA(prices, 5);
const presentValue = PV(1000, 0.05, 3);
const returns = [0.01, 0.02, 0.03];
const sharpeRatio = Sharpe(returns);Contributing
Contributions, bug reports, and feature requests are welcome. Please submit via GitHub issues or pull requests.
