UNPKG

@gabriel3615/ta_analysis

Version:

stock ta analysis

87 lines (86 loc) 2.44 kB
export const volatilityConfig = { periods: { atr: 14, smaShort: 20, smaLong: 200, defaultLookback: 20, }, sharpe: { annualFactor: 252, riskFreeRateAnnual: 0.04, }, regime: { low: { atrPercentMax: 1.2, bbWidthMax: 3.0 }, medium: { atrPercentMax: 2.5, bbWidthMax: 6.0 }, high: { atrPercentMax: 4.0, bbWidthMax: 10.0 }, }, trend: { fiveDayIncreaseFast: 15, fiveDayIncrease: 5, fiveDayDecreaseFast: -15, fiveDayDecrease: -5, bbSqueezeWidth: 3, }, transition: { prevWindow: 60, currWindow: 30, lookback: 10, atrChangeToStrengthFactor: 5, }, pricePosition: { yearDays: 250, }, bottomSignal: { nearYearLowPercent: 80, bbSqueezeForBottom: 3.5, recentSlice: 10, previousSlice: 10, volumeIncreaseFactor: 1.3, previousTrendThreshold: -0.05, recentTrendThreshold: -0.01, weights: { nearLow: 20, highVolFalling: 15, bbSqueeze: 10, stabilize: 20, volumeIncrease: 15, }, bottomStrongThreshold: 50, }, }; export function updateVolatilityConfig(partial) { if (partial.periods) volatilityConfig.periods = { ...volatilityConfig.periods, ...partial.periods, }; if (partial.sharpe) volatilityConfig.sharpe = { ...volatilityConfig.sharpe, ...partial.sharpe }; if (partial.regime) volatilityConfig.regime = { ...volatilityConfig.regime, ...partial.regime, }; if (partial.trend) volatilityConfig.trend = { ...volatilityConfig.trend, ...partial.trend }; if (partial.transition) volatilityConfig.transition = { ...volatilityConfig.transition, ...partial.transition, }; if (partial.pricePosition) volatilityConfig.pricePosition = { ...volatilityConfig.pricePosition, ...partial.pricePosition, }; if (partial.bottomSignal) { volatilityConfig.bottomSignal = { ...volatilityConfig.bottomSignal, ...partial.bottomSignal, weights: { ...volatilityConfig.bottomSignal.weights, ...partial.bottomSignal.weights, }, }; } }