UNPKG

@railpath/finance-toolkit

Version:

Production-ready finance library for portfolio construction, risk analytics, quantitative metrics, and ML-based regime detection

178 lines (177 loc) 23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vectorSubtract = exports.vectorAdd = exports.vectorNorm = exports.solveQuadraticProgram = exports.inverseErf = exports.getZScore = exports.calculateTrackingError = exports.calculateInformationRatio = exports.calculateRiskMetrics = exports.calculateReturns = exports.calculateEqualWeightPortfolio = exports.calculatePortfolioRebalancing = exports.calculatePortfolioOptimization = exports.calculatePerformanceAttribution = exports.calculatePortfolioMetrics = exports.calculateMoneyWeightedReturn = exports.calculateTimeWeightedReturn = exports.calculateVolatility = exports.calculateVaR99 = exports.calculateVaR95 = exports.calculateVaR = exports.calculateStandardDeviation = exports.calculateSortinoRatio = exports.calculateSkewness = exports.calculateSharpeRatio = exports.calculateSemideviation = exports.calculatePortfolioVolatility = exports.calculateParkinsonVolatility = exports.calculateParametricVaR = exports.calculateParametricExpectedShortfall = exports.calculateMonteCarloVaR = exports.calculateMaxDrawdown = exports.calculateKurtosis = exports.calculateHistoricalVaR = exports.calculateHistoricalExpectedShortfall = exports.calculateGarmanKlassVolatility = exports.calculateEWMAVolatility = exports.calculateCovarianceMatrix = exports.calculateCorrelationMatrix = exports.calculateCalmarRatio = exports.calculateBeta = exports.calculateAlpha = exports.calculateATR = exports.calculateBollingerBands = exports.calculateWilliamsR = exports.calculateStochastic = exports.calculateRSI = exports.calculateMACD = exports.calculateEMA = exports.calculateSMA = void 0; exports.standardize = exports.calculateVariance = exports.calculateMean = exports.logGaussianPDF = exports.gaussianPDF = exports.addNoise = exports.normalizeArray = exports.normalizeRows = exports.logSumExp = exports.baumWelch = exports.viterbi = exports.backward = exports.forward = exports.initializeHMM = exports.extractFeatures = exports.trainHMM = exports.detectRegime = exports.isSolutionFeasible = exports.calculateInequalityConstraintViolation = exports.calculateEqualityConstraintViolation = exports.projectGradientOntoNonNegativityConstraints = exports.projectGradientOntoEqualityConstraints = exports.projectOntoSimplex = exports.projectOntoBoxConstraints = exports.projectOntoNonNegativityConstraints = exports.projectOntoEqualityConstraints = exports.matrixConditionNumber = exports.isMatrixInvertible = exports.luDecomposition = exports.matrixDeterminant = exports.solveMultipleLinearSystems = exports.solveLinearSystem = exports.matrixFrobeniusNorm = exports.matrixDiagonal = exports.createZeroMatrix = exports.createIdentityMatrix = exports.isMatrixPositiveDefinite = exports.isMatrixSymmetric = exports.matrixTrace = exports.matrixMatrixMultiply = exports.matrixTranspose = exports.matrixVectorMultiply = exports.createConstantVector = exports.createZeroVector = exports.vectorEquals = exports.vectorDistance = exports.vectorNormalize = exports.vectorCross = exports.vectorDot = exports.vectorScale = void 0; exports.validateNumStates = exports.validateHMMParameters = exports.validateFeatureMatrix = exports.validatePriceArray = exports.logMultivariateGaussianPDF = exports.multivariateGaussianPDF = void 0; // Technical Indicators - Trend var calculateSMA_1 = require("./indicators/trend/calculateSMA"); Object.defineProperty(exports, "calculateSMA", { enumerable: true, get: function () { return calculateSMA_1.calculateSMA; } }); var calculateEMA_1 = require("./indicators/trend/calculateEMA"); Object.defineProperty(exports, "calculateEMA", { enumerable: true, get: function () { return calculateEMA_1.calculateEMA; } }); var calculateMACD_1 = require("./indicators/trend/calculateMACD"); Object.defineProperty(exports, "calculateMACD", { enumerable: true, get: function () { return calculateMACD_1.calculateMACD; } }); // Technical Indicators - Momentum var calculateRSI_1 = require("./indicators/momentum/calculateRSI"); Object.defineProperty(exports, "calculateRSI", { enumerable: true, get: function () { return calculateRSI_1.calculateRSI; } }); var calculateStochastic_1 = require("./indicators/momentum/calculateStochastic"); Object.defineProperty(exports, "calculateStochastic", { enumerable: true, get: function () { return calculateStochastic_1.calculateStochastic; } }); var calculateWilliamsR_1 = require("./indicators/momentum/calculateWilliamsR"); Object.defineProperty(exports, "calculateWilliamsR", { enumerable: true, get: function () { return calculateWilliamsR_1.calculateWilliamsR; } }); // Technical Indicators - Volatility var calculateBollingerBands_1 = require("./indicators/volatility/calculateBollingerBands"); Object.defineProperty(exports, "calculateBollingerBands", { enumerable: true, get: function () { return calculateBollingerBands_1.calculateBollingerBands; } }); var calculateATR_1 = require("./indicators/volatility/calculateATR"); Object.defineProperty(exports, "calculateATR", { enumerable: true, get: function () { return calculateATR_1.calculateATR; } }); // Risk Metrics var calculateAlpha_1 = require("./risk/calculateAlpha"); Object.defineProperty(exports, "calculateAlpha", { enumerable: true, get: function () { return calculateAlpha_1.calculateAlpha; } }); var calculateBeta_1 = require("./risk/calculateBeta"); Object.defineProperty(exports, "calculateBeta", { enumerable: true, get: function () { return calculateBeta_1.calculateBeta; } }); var calculateCalmarRatio_1 = require("./risk/calculateCalmarRatio"); Object.defineProperty(exports, "calculateCalmarRatio", { enumerable: true, get: function () { return calculateCalmarRatio_1.calculateCalmarRatio; } }); var calculateCorrelationMatrix_1 = require("./risk/calculateCorrelationMatrix"); Object.defineProperty(exports, "calculateCorrelationMatrix", { enumerable: true, get: function () { return calculateCorrelationMatrix_1.calculateCorrelationMatrix; } }); var calculateCovarianceMatrix_1 = require("./risk/calculateCovarianceMatrix"); Object.defineProperty(exports, "calculateCovarianceMatrix", { enumerable: true, get: function () { return calculateCovarianceMatrix_1.calculateCovarianceMatrix; } }); var calculateEWMAVolatility_1 = require("./risk/calculateEWMAVolatility"); Object.defineProperty(exports, "calculateEWMAVolatility", { enumerable: true, get: function () { return calculateEWMAVolatility_1.calculateEWMAVolatility; } }); var calculateGarmanKlassVolatility_1 = require("./risk/calculateGarmanKlassVolatility"); Object.defineProperty(exports, "calculateGarmanKlassVolatility", { enumerable: true, get: function () { return calculateGarmanKlassVolatility_1.calculateGarmanKlassVolatility; } }); var calculateHistoricalExpectedShortfall_1 = require("./risk/calculateHistoricalExpectedShortfall"); Object.defineProperty(exports, "calculateHistoricalExpectedShortfall", { enumerable: true, get: function () { return calculateHistoricalExpectedShortfall_1.calculateHistoricalExpectedShortfall; } }); var calculateHistoricalVaR_1 = require("./risk/calculateHistoricalVaR"); Object.defineProperty(exports, "calculateHistoricalVaR", { enumerable: true, get: function () { return calculateHistoricalVaR_1.calculateHistoricalVaR; } }); var calculateKurtosis_1 = require("./risk/calculateKurtosis"); Object.defineProperty(exports, "calculateKurtosis", { enumerable: true, get: function () { return calculateKurtosis_1.calculateKurtosis; } }); var calculateMaxDrawdown_1 = require("./risk/calculateMaxDrawdown"); Object.defineProperty(exports, "calculateMaxDrawdown", { enumerable: true, get: function () { return calculateMaxDrawdown_1.calculateMaxDrawdown; } }); var calculateMonteCarloVaR_1 = require("./risk/calculateMonteCarloVaR"); Object.defineProperty(exports, "calculateMonteCarloVaR", { enumerable: true, get: function () { return calculateMonteCarloVaR_1.calculateMonteCarloVaR; } }); var calculateParametricExpectedShortfall_1 = require("./risk/calculateParametricExpectedShortfall"); Object.defineProperty(exports, "calculateParametricExpectedShortfall", { enumerable: true, get: function () { return calculateParametricExpectedShortfall_1.calculateParametricExpectedShortfall; } }); var calculateParametricVaR_1 = require("./risk/calculateParametricVaR"); Object.defineProperty(exports, "calculateParametricVaR", { enumerable: true, get: function () { return calculateParametricVaR_1.calculateParametricVaR; } }); var calculateParkinsonVolatility_1 = require("./risk/calculateParkinsonVolatility"); Object.defineProperty(exports, "calculateParkinsonVolatility", { enumerable: true, get: function () { return calculateParkinsonVolatility_1.calculateParkinsonVolatility; } }); var calculatePortfolioVolatility_1 = require("./risk/calculatePortfolioVolatility"); Object.defineProperty(exports, "calculatePortfolioVolatility", { enumerable: true, get: function () { return calculatePortfolioVolatility_1.calculatePortfolioVolatility; } }); var calculateSemideviation_1 = require("./risk/calculateSemideviation"); Object.defineProperty(exports, "calculateSemideviation", { enumerable: true, get: function () { return calculateSemideviation_1.calculateSemideviation; } }); var calculateSharpeRatio_1 = require("./risk/calculateSharpeRatio"); Object.defineProperty(exports, "calculateSharpeRatio", { enumerable: true, get: function () { return calculateSharpeRatio_1.calculateSharpeRatio; } }); var calculateSkewness_1 = require("./risk/calculateSkewness"); Object.defineProperty(exports, "calculateSkewness", { enumerable: true, get: function () { return calculateSkewness_1.calculateSkewness; } }); var calculateSortinoRatio_1 = require("./risk/calculateSortinoRatio"); Object.defineProperty(exports, "calculateSortinoRatio", { enumerable: true, get: function () { return calculateSortinoRatio_1.calculateSortinoRatio; } }); var calculateStandardDeviation_1 = require("./risk/calculateStandardDeviation"); Object.defineProperty(exports, "calculateStandardDeviation", { enumerable: true, get: function () { return calculateStandardDeviation_1.calculateStandardDeviation; } }); var calculateVaR_1 = require("./risk/calculateVaR"); Object.defineProperty(exports, "calculateVaR", { enumerable: true, get: function () { return calculateVaR_1.calculateVaR; } }); var calculateVaR95_1 = require("./risk/calculateVaR95"); Object.defineProperty(exports, "calculateVaR95", { enumerable: true, get: function () { return calculateVaR95_1.calculateVaR95; } }); var calculateVaR99_1 = require("./risk/calculateVaR99"); Object.defineProperty(exports, "calculateVaR99", { enumerable: true, get: function () { return calculateVaR99_1.calculateVaR99; } }); var calculateVolatility_1 = require("./risk/calculateVolatility"); Object.defineProperty(exports, "calculateVolatility", { enumerable: true, get: function () { return calculateVolatility_1.calculateVolatility; } }); // Portfolio Performance Metrics var calculateTimeWeightedReturn_1 = require("./portfolio/calculateTimeWeightedReturn"); Object.defineProperty(exports, "calculateTimeWeightedReturn", { enumerable: true, get: function () { return calculateTimeWeightedReturn_1.calculateTimeWeightedReturn; } }); var calculateMoneyWeightedReturn_1 = require("./portfolio/calculateMoneyWeightedReturn"); Object.defineProperty(exports, "calculateMoneyWeightedReturn", { enumerable: true, get: function () { return calculateMoneyWeightedReturn_1.calculateMoneyWeightedReturn; } }); var calculatePortfolioMetrics_1 = require("./portfolio/calculatePortfolioMetrics"); Object.defineProperty(exports, "calculatePortfolioMetrics", { enumerable: true, get: function () { return calculatePortfolioMetrics_1.calculatePortfolioMetrics; } }); var calculatePerformanceAttribution_1 = require("./portfolio/calculatePerformanceAttribution"); Object.defineProperty(exports, "calculatePerformanceAttribution", { enumerable: true, get: function () { return calculatePerformanceAttribution_1.calculatePerformanceAttribution; } }); var calculatePortfolioOptimization_1 = require("./portfolio/calculatePortfolioOptimization"); Object.defineProperty(exports, "calculatePortfolioOptimization", { enumerable: true, get: function () { return calculatePortfolioOptimization_1.calculatePortfolioOptimization; } }); var calculatePortfolioRebalancing_1 = require("./portfolio/calculatePortfolioRebalancing"); Object.defineProperty(exports, "calculatePortfolioRebalancing", { enumerable: true, get: function () { return calculatePortfolioRebalancing_1.calculatePortfolioRebalancing; } }); var calculateEqualWeightPortfolio_1 = require("./portfolio/calculateEqualWeightPortfolio"); Object.defineProperty(exports, "calculateEqualWeightPortfolio", { enumerable: true, get: function () { return calculateEqualWeightPortfolio_1.calculateEqualWeightPortfolio; } }); var calculateReturns_1 = require("./portfolio/calculateReturns"); Object.defineProperty(exports, "calculateReturns", { enumerable: true, get: function () { return calculateReturns_1.calculateReturns; } }); var calculateRiskMetrics_1 = require("./portfolio/calculateRiskMetrics"); Object.defineProperty(exports, "calculateRiskMetrics", { enumerable: true, get: function () { return calculateRiskMetrics_1.calculateRiskMetrics; } }); var calculateInformationRatio_1 = require("./portfolio/calculateInformationRatio"); Object.defineProperty(exports, "calculateInformationRatio", { enumerable: true, get: function () { return calculateInformationRatio_1.calculateInformationRatio; } }); var calculateTrackingError_1 = require("./portfolio/calculateTrackingError"); Object.defineProperty(exports, "calculateTrackingError", { enumerable: true, get: function () { return calculateTrackingError_1.calculateTrackingError; } }); // Utility Functions var getZScore_1 = require("./utils/getZScore"); Object.defineProperty(exports, "getZScore", { enumerable: true, get: function () { return getZScore_1.getZScore; } }); var inverseErf_1 = require("./utils/inverseErf"); Object.defineProperty(exports, "inverseErf", { enumerable: true, get: function () { return inverseErf_1.inverseErf; } }); var solveQuadraticProgram_1 = require("./utils/solveQuadraticProgram"); Object.defineProperty(exports, "solveQuadraticProgram", { enumerable: true, get: function () { return solveQuadraticProgram_1.solveQuadraticProgram; } }); // Vector Operations var vectorOperations_1 = require("./utils/vectorOperations"); Object.defineProperty(exports, "vectorNorm", { enumerable: true, get: function () { return vectorOperations_1.vectorNorm; } }); Object.defineProperty(exports, "vectorAdd", { enumerable: true, get: function () { return vectorOperations_1.vectorAdd; } }); Object.defineProperty(exports, "vectorSubtract", { enumerable: true, get: function () { return vectorOperations_1.vectorSubtract; } }); Object.defineProperty(exports, "vectorScale", { enumerable: true, get: function () { return vectorOperations_1.vectorScale; } }); Object.defineProperty(exports, "vectorDot", { enumerable: true, get: function () { return vectorOperations_1.vectorDot; } }); Object.defineProperty(exports, "vectorCross", { enumerable: true, get: function () { return vectorOperations_1.vectorCross; } }); Object.defineProperty(exports, "vectorNormalize", { enumerable: true, get: function () { return vectorOperations_1.vectorNormalize; } }); Object.defineProperty(exports, "vectorDistance", { enumerable: true, get: function () { return vectorOperations_1.vectorDistance; } }); Object.defineProperty(exports, "vectorEquals", { enumerable: true, get: function () { return vectorOperations_1.vectorEquals; } }); Object.defineProperty(exports, "createZeroVector", { enumerable: true, get: function () { return vectorOperations_1.createZeroVector; } }); Object.defineProperty(exports, "createConstantVector", { enumerable: true, get: function () { return vectorOperations_1.createConstantVector; } }); // Matrix Operations var matrixOperations_1 = require("./utils/matrixOperations"); Object.defineProperty(exports, "matrixVectorMultiply", { enumerable: true, get: function () { return matrixOperations_1.matrixVectorMultiply; } }); Object.defineProperty(exports, "matrixTranspose", { enumerable: true, get: function () { return matrixOperations_1.matrixTranspose; } }); Object.defineProperty(exports, "matrixMatrixMultiply", { enumerable: true, get: function () { return matrixOperations_1.matrixMatrixMultiply; } }); Object.defineProperty(exports, "matrixTrace", { enumerable: true, get: function () { return matrixOperations_1.matrixTrace; } }); Object.defineProperty(exports, "isMatrixSymmetric", { enumerable: true, get: function () { return matrixOperations_1.isMatrixSymmetric; } }); Object.defineProperty(exports, "isMatrixPositiveDefinite", { enumerable: true, get: function () { return matrixOperations_1.isMatrixPositiveDefinite; } }); Object.defineProperty(exports, "createIdentityMatrix", { enumerable: true, get: function () { return matrixOperations_1.createIdentityMatrix; } }); Object.defineProperty(exports, "createZeroMatrix", { enumerable: true, get: function () { return matrixOperations_1.createZeroMatrix; } }); Object.defineProperty(exports, "matrixDiagonal", { enumerable: true, get: function () { return matrixOperations_1.matrixDiagonal; } }); Object.defineProperty(exports, "matrixFrobeniusNorm", { enumerable: true, get: function () { return matrixOperations_1.matrixFrobeniusNorm; } }); // Linear System Solver var linearSystemSolver_1 = require("./utils/linearSystemSolver"); Object.defineProperty(exports, "solveLinearSystem", { enumerable: true, get: function () { return linearSystemSolver_1.solveLinearSystem; } }); Object.defineProperty(exports, "solveMultipleLinearSystems", { enumerable: true, get: function () { return linearSystemSolver_1.solveMultipleLinearSystems; } }); Object.defineProperty(exports, "matrixDeterminant", { enumerable: true, get: function () { return linearSystemSolver_1.matrixDeterminant; } }); Object.defineProperty(exports, "luDecomposition", { enumerable: true, get: function () { return linearSystemSolver_1.luDecomposition; } }); Object.defineProperty(exports, "isMatrixInvertible", { enumerable: true, get: function () { return linearSystemSolver_1.isMatrixInvertible; } }); Object.defineProperty(exports, "matrixConditionNumber", { enumerable: true, get: function () { return linearSystemSolver_1.matrixConditionNumber; } }); // Constraint Projection var constraintProjection_1 = require("./utils/constraintProjection"); Object.defineProperty(exports, "projectOntoEqualityConstraints", { enumerable: true, get: function () { return constraintProjection_1.projectOntoEqualityConstraints; } }); Object.defineProperty(exports, "projectOntoNonNegativityConstraints", { enumerable: true, get: function () { return constraintProjection_1.projectOntoNonNegativityConstraints; } }); Object.defineProperty(exports, "projectOntoBoxConstraints", { enumerable: true, get: function () { return constraintProjection_1.projectOntoBoxConstraints; } }); Object.defineProperty(exports, "projectOntoSimplex", { enumerable: true, get: function () { return constraintProjection_1.projectOntoSimplex; } }); Object.defineProperty(exports, "projectGradientOntoEqualityConstraints", { enumerable: true, get: function () { return constraintProjection_1.projectGradientOntoEqualityConstraints; } }); Object.defineProperty(exports, "projectGradientOntoNonNegativityConstraints", { enumerable: true, get: function () { return constraintProjection_1.projectGradientOntoNonNegativityConstraints; } }); Object.defineProperty(exports, "calculateEqualityConstraintViolation", { enumerable: true, get: function () { return constraintProjection_1.calculateEqualityConstraintViolation; } }); Object.defineProperty(exports, "calculateInequalityConstraintViolation", { enumerable: true, get: function () { return constraintProjection_1.calculateInequalityConstraintViolation; } }); Object.defineProperty(exports, "isSolutionFeasible", { enumerable: true, get: function () { return constraintProjection_1.isSolutionFeasible; } }); // Machine Learning - Regime Detection var detectRegime_1 = require("./ml/hmm/detectRegime"); Object.defineProperty(exports, "detectRegime", { enumerable: true, get: function () { return detectRegime_1.detectRegime; } }); var hmm_1 = require("./ml/hmm"); Object.defineProperty(exports, "trainHMM", { enumerable: true, get: function () { return hmm_1.trainHMM; } }); Object.defineProperty(exports, "extractFeatures", { enumerable: true, get: function () { return hmm_1.extractFeatures; } }); Object.defineProperty(exports, "initializeHMM", { enumerable: true, get: function () { return hmm_1.initializeHMM; } }); Object.defineProperty(exports, "forward", { enumerable: true, get: function () { return hmm_1.forward; } }); Object.defineProperty(exports, "backward", { enumerable: true, get: function () { return hmm_1.backward; } }); Object.defineProperty(exports, "viterbi", { enumerable: true, get: function () { return hmm_1.viterbi; } }); Object.defineProperty(exports, "baumWelch", { enumerable: true, get: function () { return hmm_1.baumWelch; } }); // Machine Learning - Utils (for Power Users) var utils_1 = require("./ml/utils"); Object.defineProperty(exports, "logSumExp", { enumerable: true, get: function () { return utils_1.logSumExp; } }); Object.defineProperty(exports, "normalizeRows", { enumerable: true, get: function () { return utils_1.normalizeRows; } }); Object.defineProperty(exports, "normalizeArray", { enumerable: true, get: function () { return utils_1.normalizeArray; } }); Object.defineProperty(exports, "addNoise", { enumerable: true, get: function () { return utils_1.addNoise; } }); Object.defineProperty(exports, "gaussianPDF", { enumerable: true, get: function () { return utils_1.gaussianPDF; } }); Object.defineProperty(exports, "logGaussianPDF", { enumerable: true, get: function () { return utils_1.logGaussianPDF; } }); Object.defineProperty(exports, "calculateMean", { enumerable: true, get: function () { return utils_1.calculateMean; } }); Object.defineProperty(exports, "calculateVariance", { enumerable: true, get: function () { return utils_1.calculateVariance; } }); Object.defineProperty(exports, "standardize", { enumerable: true, get: function () { return utils_1.standardize; } }); Object.defineProperty(exports, "multivariateGaussianPDF", { enumerable: true, get: function () { return utils_1.multivariateGaussianPDF; } }); Object.defineProperty(exports, "logMultivariateGaussianPDF", { enumerable: true, get: function () { return utils_1.logMultivariateGaussianPDF; } }); Object.defineProperty(exports, "validatePriceArray", { enumerable: true, get: function () { return utils_1.validatePriceArray; } }); Object.defineProperty(exports, "validateFeatureMatrix", { enumerable: true, get: function () { return utils_1.validateFeatureMatrix; } }); Object.defineProperty(exports, "validateHMMParameters", { enumerable: true, get: function () { return utils_1.validateHMMParameters; } }); Object.defineProperty(exports, "validateNumStates", { enumerable: true, get: function () { return utils_1.validateNumStates; } });