@gabriel3615/ta_analysis
Version:
stock ta analysis
87 lines (86 loc) • 2.44 kB
JavaScript
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,
},
};
}
}