@stvy/fund-indicators 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.github/workflows/publish.yml +79 -0
  2. package/AGENTS.md +322 -0
  3. package/dist/index.cjs +1615 -0
  4. package/dist/index.d.cts +779 -0
  5. package/dist/index.d.cts.map +1 -0
  6. package/dist/index.mjs +1518 -0
  7. package/package.json +10 -29
  8. package/pnpm-workspace.yaml +2 -0
  9. package/src/dca.ts +420 -0
  10. package/src/index.ts +133 -0
  11. package/src/jstat.d.ts +17 -0
  12. package/src/pattern.ts +447 -0
  13. package/src/risk.ts +516 -0
  14. package/src/statistics.ts +428 -0
  15. package/src/technical.ts +738 -0
  16. package/src/types.ts +369 -0
  17. package/test/index.test.ts +355 -0
  18. package/tsconfig.json +20 -0
  19. package/dist/browser/fund-indicators.esm.js +0 -7505
  20. package/dist/browser/fund-indicators.esm.min.js +0 -8
  21. package/dist/browser/fund-indicators.esm.min.js.map +0 -7
  22. package/dist/browser/fund-indicators.js +0 -7517
  23. package/dist/browser/fund-indicators.min.js +0 -8
  24. package/dist/browser/fund-indicators.min.js.map +0 -7
  25. package/dist/dca.d.ts +0 -91
  26. package/dist/dca.d.ts.map +0 -1
  27. package/dist/dca.js +0 -354
  28. package/dist/dca.js.map +0 -1
  29. package/dist/index.d.ts +0 -18
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/index.js +0 -141
  32. package/dist/index.js.map +0 -1
  33. package/dist/pattern.d.ts +0 -60
  34. package/dist/pattern.d.ts.map +0 -1
  35. package/dist/pattern.js +0 -386
  36. package/dist/pattern.js.map +0 -1
  37. package/dist/risk.d.ts +0 -115
  38. package/dist/risk.d.ts.map +0 -1
  39. package/dist/risk.js +0 -502
  40. package/dist/risk.js.map +0 -1
  41. package/dist/statistics.d.ts +0 -78
  42. package/dist/statistics.d.ts.map +0 -1
  43. package/dist/statistics.js +0 -402
  44. package/dist/statistics.js.map +0 -1
  45. package/dist/technical.d.ts +0 -105
  46. package/dist/technical.d.ts.map +0 -1
  47. package/dist/technical.js +0 -633
  48. package/dist/technical.js.map +0 -1
  49. package/dist/types.d.ts +0 -327
  50. package/dist/types.d.ts.map +0 -1
  51. package/dist/types.js +0 -7
  52. package/dist/types.js.map +0 -1
@@ -0,0 +1,779 @@
1
+ /**
2
+ * 基金自动化交易指标计算工具库 - 类型定义
3
+ * Fund Automated Trading Indicators Library - Type Definitions
4
+ */
5
+ /** 净值序列(按时间顺序排列的每日净值) */
6
+ type NavSeries = number[];
7
+ /** 收益率序列(百分比形式,如 0.02 表示 +2%) */
8
+ type ReturnSeries = number[];
9
+ /** 日期数组(与净值序列一一对应) */
10
+ type DateSeries = string[];
11
+ /** 均线结果 */
12
+ interface MAResult {
13
+ /** 均线数值数组(与输入等长,前 N-1 个为 null) */
14
+ values: (number | null)[];
15
+ /** 当前(最后一个)均线值 */
16
+ current: number | null;
17
+ /** 使用的周期 */
18
+ period: number;
19
+ /** 均线类型 */
20
+ type: 'SMA' | 'EMA' | 'WMA' | 'DEMA' | 'TEMA' | 'TRIMA' | 'KAMA';
21
+ }
22
+ /** MACD 结果 */
23
+ interface MACDResult {
24
+ /** DIF 线(快线) */
25
+ dif: (number | null)[];
26
+ /** DEA 线(慢线) */
27
+ dea: (number | null)[];
28
+ /** 柱状线(MACD柱 = DIF - DEA) */
29
+ histogram: (number | null)[];
30
+ /** 当前 DIF */
31
+ currentDIF: number | null;
32
+ /** 当前 DEA */
33
+ currentDEA: number | null;
34
+ /** 当前柱状值 */
35
+ currentHistogram: number | null;
36
+ }
37
+ /** 布林带结果 */
38
+ interface BollingerResult {
39
+ /** 中轨(移动均线) */
40
+ middle: (number | null)[];
41
+ /** 上轨 */
42
+ upper: (number | null)[];
43
+ /** 下轨 */
44
+ lower: (number | null)[];
45
+ /** 带宽百分比 */
46
+ bandwidth: (number | null)[];
47
+ /** %B 指标(价格在带中的位置,0=下轨,1=上轨) */
48
+ percentB: (number | null)[];
49
+ }
50
+ /** 通道结果(唐奇安、肯特纳) */
51
+ interface ChannelResult {
52
+ upper: (number | null)[];
53
+ lower: (number | null)[];
54
+ middle: (number | null)[];
55
+ }
56
+ /** RSI 结果 */
57
+ interface RSIResult {
58
+ values: (number | null)[];
59
+ current: number | null;
60
+ period: number;
61
+ }
62
+ /** KDJ 结果 */
63
+ interface KDJResult {
64
+ k: (number | null)[];
65
+ d: (number | null)[];
66
+ j: (number | null)[];
67
+ currentK: number | null;
68
+ currentD: number | null;
69
+ currentJ: number | null;
70
+ }
71
+ /** ADX 结果 */
72
+ interface ADXResult {
73
+ adx: (number | null)[];
74
+ plusDI: (number | null)[];
75
+ minusDI: (number | null)[];
76
+ currentADX: number | null;
77
+ }
78
+ /** SAR 结果 */
79
+ interface SARResult {
80
+ values: (number | null)[];
81
+ current: number | null;
82
+ }
83
+ /** 回撤分析结果 */
84
+ interface DrawdownResult {
85
+ /** 最大回撤(负数,如 -0.25 表示 -25%) */
86
+ maxDrawdown: number;
87
+ /** 最大回撤开始时的净值索引 */
88
+ peakIndex: number;
89
+ /** 最大回撤谷底时的净值索引 */
90
+ troughIndex: number;
91
+ /** 回撤开始日期(如有日期序列) */
92
+ peakDate: string | null;
93
+ /** 回撤谷底日期 */
94
+ troughDate: string | null;
95
+ /** 回撤恢复日期(如已恢复) */
96
+ recoveryDate: string | null;
97
+ /** 回撤持续天数 */
98
+ durationDays: number;
99
+ /** 恢复天数(从谷底到恢复前高) */
100
+ recoveryDays: number | null;
101
+ /** 完整回撤序列 */
102
+ drawdownSeries: number[];
103
+ }
104
+ /** 风险指标汇总 */
105
+ interface RiskMetrics {
106
+ /** 年化波动率 */
107
+ annualizedVolatility: number;
108
+ /** 下行波动率(年化) */
109
+ downsideVolatility: number;
110
+ /** 最大回撤 */
111
+ maxDrawdown: number;
112
+ /** 最大回撤持续天数 */
113
+ maxDrawdownDuration: number;
114
+ /** VaR(在险价值) */
115
+ var95: number;
116
+ var99: number;
117
+ /** CVaR(条件在险价值 / 预期亏损) */
118
+ cvar95: number;
119
+ cvar99: number;
120
+ }
121
+ /** 绩效指标汇总 */
122
+ interface PerformanceMetrics {
123
+ /** 累计收益率 */
124
+ totalReturn: number;
125
+ /** 年化收益率 */
126
+ annualizedReturn: number;
127
+ /** 夏普比率 */
128
+ sharpeRatio: number;
129
+ /** 索提诺比率 */
130
+ sortinoRatio: number;
131
+ /** 卡尔玛比率 */
132
+ calmarRatio: number;
133
+ /** 特雷诺比率(需要 Beta) */
134
+ treynorRatio: number | null;
135
+ /** Omega 比率 */
136
+ omegaRatio: number;
137
+ /** 胜率 */
138
+ winRate: number;
139
+ /** 盈亏比 */
140
+ profitLossRatio: number;
141
+ /** 利润因子 */
142
+ profitFactor: number;
143
+ /** 最大连续盈利天数 */
144
+ maxConsecutiveWins: number;
145
+ /** 最大连续亏损天数 */
146
+ maxConsecutiveLosses: number;
147
+ }
148
+ /** 相对基准指标 */
149
+ interface BenchmarkMetrics {
150
+ /** Alpha(超额收益) */
151
+ alpha: number;
152
+ /** Beta 系数 */
153
+ beta: number;
154
+ /** 跟踪误差 */
155
+ trackingError: number;
156
+ /** 信息比率 */
157
+ informationRatio: number;
158
+ /** 相关系数 */
159
+ correlation: number;
160
+ /** R 方(拟合优度) */
161
+ rSquared: number;
162
+ }
163
+ /** 定投计划配置 */
164
+ interface DCAConfig {
165
+ /** 每次定投金额 */
166
+ amount: number;
167
+ /** 定投周期(天数),默认 1(每个交易日) */
168
+ interval?: number;
169
+ /** 起始索引 */
170
+ startIndex?: number;
171
+ }
172
+ /** 定投分析结果 */
173
+ interface DCAResult {
174
+ /** 定投次数 */
175
+ totalInvestments: number;
176
+ /** 总投入金额 */
177
+ totalInvested: number;
178
+ /** 当前持仓市值 */
179
+ currentValue: number;
180
+ /** 持仓份额 */
181
+ totalShares: number;
182
+ /** 平均成本 */
183
+ averageCost: number;
184
+ /** 当前净值 */
185
+ currentNav: number;
186
+ /** 收益率 */
187
+ returnRate: number;
188
+ /** 盈亏金额 */
189
+ profitLoss: number;
190
+ /** 内部收益率 IRR(年化) */
191
+ irr: number | null;
192
+ /** 定投日收益率序列 */
193
+ investmentDates: number[];
194
+ /** 每期投入后的市值 */
195
+ valueHistory: number[];
196
+ }
197
+ /** 止盈止损信号 */
198
+ interface TakeProfitStopLossSignal {
199
+ /** 是否触发止盈 */
200
+ takeProfitTriggered: boolean;
201
+ /** 是否触发止损 */
202
+ stopLossTriggered: boolean;
203
+ /** 当前盈亏比例 */
204
+ currentPnL: number;
205
+ /** 距离止盈线的百分比 */
206
+ distanceToTakeProfit: number;
207
+ /** 距离止损线的百分比 */
208
+ distanceToStopLoss: number;
209
+ }
210
+ /** 统计特征汇总 */
211
+ interface StatisticalFeatures {
212
+ /** 均值 */
213
+ mean: number;
214
+ /** 中位数 */
215
+ median: number;
216
+ /** 标准差 */
217
+ stdDev: number;
218
+ /** 偏度 */
219
+ skewness: number;
220
+ /** 峰度 */
221
+ kurtosis: number;
222
+ /** 最小值 */
223
+ min: number;
224
+ /** 最大值 */
225
+ max: number;
226
+ /** 极差 */
227
+ range: number;
228
+ /** 变异系数 */
229
+ coefficientOfVariation: number;
230
+ /** Jarque-Bera 检验统计量 */
231
+ jarqueBera: number;
232
+ }
233
+ /** 赫斯特指数结果 */
234
+ interface HurstResult {
235
+ /** 赫斯特指数值(>0.5 趋势性,<0.5 均值回归,≈0.5 随机) */
236
+ hurstExponent: number;
237
+ /** 判断结果 */
238
+ interpretation: 'trending' | 'mean_reverting' | 'random_walk';
239
+ /** R/S 分析中的 log(n) 与 log(R/S) 数据点 */
240
+ dataPoints: {
241
+ logN: number;
242
+ logRS: number;
243
+ }[];
244
+ /** 线性回归 R² */
245
+ rSquared: number;
246
+ }
247
+ /** 自相关结果 */
248
+ interface AutocorrelationResult {
249
+ /** 各滞后期的自相关系数 */
250
+ coefficients: number[];
251
+ /** 最大滞后阶数 */
252
+ maxLag: number;
253
+ /** 趋势持续性判断 */
254
+ interpretation: 'persistent' | 'anti_persistent' | 'no_correlation';
255
+ }
256
+ /** 支撑/阻力位 */
257
+ interface SupportResistanceResult {
258
+ /** 支撑位(从强到弱排序) */
259
+ supports: {
260
+ level: number;
261
+ strength: number;
262
+ touches: number;
263
+ }[];
264
+ /** 阻力位(从强到弱排序) */
265
+ resistances: {
266
+ level: number;
267
+ strength: number;
268
+ touches: number;
269
+ }[];
270
+ }
271
+ /** 双底/双顶信号 */
272
+ interface DoubleBottomTopResult {
273
+ /** 信号类型 */
274
+ type: 'double_bottom' | 'double_top' | 'none';
275
+ /** 第一个底/顶的索引 */
276
+ firstPointIndex: number | null;
277
+ /** 第二个底/顶的索引 */
278
+ secondPointIndex: number | null;
279
+ /** 颈线位置索引 */
280
+ necklineIndex: number | null;
281
+ /** 颈线价格 */
282
+ necklinePrice: number | null;
283
+ /** 是否突破颈线 */
284
+ breakout: boolean;
285
+ /** 信号强度(0-1) */
286
+ confidence: number;
287
+ }
288
+ /** 缺口 */
289
+ interface GapResult {
290
+ /** 缺口类型 */
291
+ type: 'gap_up' | 'gap_down';
292
+ /** 缺口起始索引 */
293
+ startIndex: number;
294
+ /** 缺口结束索引 */
295
+ endIndex: number;
296
+ /** 缺口上沿 */
297
+ gapTop: number;
298
+ /** 缺口下沿 */
299
+ gapBottom: number;
300
+ /** 缺口大小(百分比) */
301
+ gapSize: number;
302
+ /** 是否已回补 */
303
+ filled: boolean;
304
+ /** 回补日期索引 */
305
+ filledIndex: number | null;
306
+ }
307
+ /** 均线交叉信号 */
308
+ interface MACrossSignal {
309
+ /** 信号类型 */
310
+ type: 'golden_cross' | 'death_cross' | 'none';
311
+ /** 发生位置索引 */
312
+ index: number;
313
+ /** 快线值 */
314
+ fastValue: number;
315
+ /** 慢线值 */
316
+ slowValue: number;
317
+ }
318
+ /** 均线排列状态 */
319
+ interface MAAlignmentResult {
320
+ /** 排列状态 */
321
+ alignment: 'bullish' | 'bearish' | 'neutral';
322
+ /** 均线值(从短期到长期) */
323
+ maValues: number[];
324
+ /** 发散度(标准差) */
325
+ divergence: number;
326
+ }
327
+
328
+ /**
329
+ * 技术指标模块 - 趋势、动量、震荡、通道类指标
330
+ * 基于 technicalindicators 库,所有函数接收净值序列作为输入
331
+ */
332
+
333
+ /** 简单移动平均线 (SMA) */
334
+ declare function sma(nav: NavSeries, period: number): MAResult;
335
+ /** 指数移动平均线 (EMA) */
336
+ declare function ema(nav: NavSeries, period: number): MAResult;
337
+ /** 加权移动平均线 (WMA) */
338
+ declare function wma(nav: NavSeries, period: number): MAResult;
339
+ /** 双重指数移动平均线 (DEMA) */
340
+ declare function dema(nav: NavSeries, period: number): MAResult;
341
+ /** 三重指数移动平均线 (TEMA) */
342
+ declare function tema(nav: NavSeries, period: number): MAResult;
343
+ /** 考夫曼自适应均线 (KAMA) - 手动实现 */
344
+ declare function kama(nav: NavSeries, period?: number, fast?: number, slow?: number): MAResult;
345
+ /**
346
+ * MACD 指标(DIF / DEA / 柱状线)
347
+ * @param nav 净值序列
348
+ * @param fastPeriod 快线周期(默认12)
349
+ * @param slowPeriod 慢线周期(默认26)
350
+ * @param signalPeriod 信号线周期(默认9)
351
+ */
352
+ declare function macd(nav: NavSeries, fastPeriod?: number, slowPeriod?: number, signalPeriod?: number): MACDResult;
353
+ /** RSI(相对强弱指标) */
354
+ declare function rsi(nav: NavSeries, period?: number): RSIResult;
355
+ /**
356
+ * KDJ 指标
357
+ * @param nav 净值序列
358
+ * @param kPeriod K 周期(默认9)
359
+ * @param kSmooth K 平滑因子(默认3)
360
+ * @param dPeriod D 周期(默认3)
361
+ */
362
+ declare function kdj(nav: NavSeries, kPeriod?: number, kSmooth?: number, dPeriod?: number): KDJResult;
363
+ /**
364
+ * 布林带 (Bollinger Bands)
365
+ * @param nav 净值序列
366
+ * @param period 均线周期(默认20)
367
+ * @param stdDev 标准差倍数(默认2)
368
+ */
369
+ declare function bollingerBands(nav: NavSeries, period?: number, stdDev?: number): BollingerResult;
370
+ /**
371
+ * 唐奇安通道
372
+ * @param nav 净值序列
373
+ * @param period 回看周期(默认20)
374
+ */
375
+ declare function donchianChannel(nav: NavSeries, period?: number): ChannelResult;
376
+ /**
377
+ * 肯特纳通道
378
+ * @param nav 净值序列
379
+ * @param emaPeriod EMA 周期(默认20)
380
+ * @param atrPeriod ATR 周期(默认10)
381
+ * @param multiplier ATR 倍数(默认2)
382
+ */
383
+ declare function keltnerChannel(nav: NavSeries, emaPeriod?: number, atrPeriod?: number, multiplier?: number): ChannelResult;
384
+ /** ADX + DI */
385
+ declare function adx(nav: NavSeries, period?: number): ADXResult;
386
+ /** ATR 近似值(基金净值无日内高低,用日涨跌幅绝对值近似) */
387
+ declare function atr(nav: NavSeries, period?: number): MAResult;
388
+ /** CCI */
389
+ declare function cci(nav: NavSeries, period?: number): MAResult;
390
+ /** ROC */
391
+ declare function roc(nav: NavSeries, period?: number): MAResult;
392
+ /** 动量指标 = 当前净值 - N日前净值 */
393
+ declare function momentum(nav: NavSeries, period?: number): MAResult;
394
+ /** Williams %R */
395
+ declare function williamsR(nav: NavSeries, period?: number): MAResult;
396
+ /** 随机 RSI */
397
+ declare function stochasticRSI(nav: NavSeries, rsiPeriod?: number, stochPeriod?: number, kPeriod?: number, dPeriod?: number): KDJResult;
398
+ /**
399
+ * SAR 抛物线转向
400
+ * @param nav 净值序列
401
+ * @param step 加速因子步长(默认0.02)
402
+ * @param max 最大加速因子(默认0.2)
403
+ */
404
+ declare function sar(nav: NavSeries, step?: number, max?: number): SARResult;
405
+ /** TRIX = 三重 EMA 的变化率 */
406
+ declare function trix(nav: NavSeries, period?: number): MAResult;
407
+ /** DPO = 净值 - N/2+1 日前的 SMA */
408
+ declare function dpo(nav: NavSeries, period?: number): MAResult;
409
+ /** 乖离率 = (净值 - MA) / MA * 100 */
410
+ declare function bias(nav: NavSeries, period?: number): MAResult;
411
+ /**
412
+ * 净值百分位 - 当前净值在历史区间中所处的百分位
413
+ * @param nav 净值序列
414
+ * @param lookback 回看窗口(默认全部历史)
415
+ * @returns 0-100 的百分位值
416
+ */
417
+ declare function navPercentile(nav: NavSeries, lookback?: number): number;
418
+ /** 检测短期均线与长期均线的交叉信号 */
419
+ declare function detectCrossSignal(fastMA: MAResult, slowMA: MAResult, lookback?: number): MACrossSignal;
420
+ /**
421
+ * 检测均线多空排列
422
+ * @param maList 从短期到长期排列的均线结果列表
423
+ */
424
+ declare function detectMAAlignment(maList: MAResult[]): MAAlignmentResult;
425
+ /**
426
+ * Mass Index - 基于 EMA 的波动范围比率累积,用于识别变盘点
427
+ * @param nav 净值序列
428
+ * @param emaPeriod EMA 周期(默认9)
429
+ * @param sumPeriod 累积周期(默认25)
430
+ */
431
+ declare function massIndex(nav: NavSeries, emaPeriod?: number, sumPeriod?: number): MAResult;
432
+
433
+ /**
434
+ * 风险与绩效指标模块
435
+ * 包含:波动率、最大回撤、VaR、CVaR、夏普比率、索提诺、卡尔玛、特雷诺、Omega 等
436
+ */
437
+
438
+ /** 净值序列 → 日收益率序列 */
439
+ declare function navToReturns(nav: NavSeries): ReturnSeries;
440
+ /** 日收益率 → 年化收益率(几何平均) */
441
+ declare function annualizeReturn(dailyReturns: ReturnSeries): number;
442
+ /** 累计收益率 */
443
+ declare function totalReturn(nav: NavSeries): number;
444
+ /** 年化波动率 */
445
+ declare function annualizedVolatility(returns: ReturnSeries): number;
446
+ /** 下行波动率(年化),只计算负收益 */
447
+ declare function downsideVolatility(returns: ReturnSeries, riskFreeRate?: number): number;
448
+ /**
449
+ * 滚动波动率
450
+ * @param returns 日收益率
451
+ * @param window 滚动窗口大小
452
+ */
453
+ declare function rollingVolatility(returns: ReturnSeries, window?: number): (number | null)[];
454
+ /**
455
+ * 波动率锥 - 不同时间窗口的波动率分位数分布
456
+ * @param returns 日收益率
457
+ * @param windows 要分析的时间窗口列表
458
+ * @param quantiles 要计算的分位数列表
459
+ */
460
+ declare function volatilityCone(returns: ReturnSeries, windows?: number[], quantiles?: number[]): Map<number, Map<number, number>>;
461
+ /**
462
+ * 最大回撤分析
463
+ * @param nav 净值序列
464
+ * @param dates 可选日期序列
465
+ */
466
+ declare function maxDrawdown(nav: NavSeries, dates?: DateSeries): DrawdownResult;
467
+ /**
468
+ * 最大回撤持续天数(从峰顶到下一次创新高)
469
+ */
470
+ declare function maxDrawdownDuration(nav: NavSeries): number;
471
+ /**
472
+ * VaR(在险价值)
473
+ * @param returns 日收益率
474
+ * @param confidence 置信度(默认 0.95)
475
+ * @param method 计算方法:'historical'(历史模拟)| 'parametric'(参数法/正态假设)
476
+ */
477
+ declare function calculateVaR(returns: ReturnSeries, confidence?: number, method?: 'historical' | 'parametric'): number;
478
+ /**
479
+ * CVaR / Expected Shortfall(条件在险价值 / 预期亏损)
480
+ * @param returns 日收益率
481
+ * @param confidence 置信度(默认 0.95)
482
+ */
483
+ declare function calculateCVaR(returns: ReturnSeries, confidence?: number): number;
484
+ /**
485
+ * 一次性计算所有风险指标
486
+ * @param nav 净值序列
487
+ * @param riskFreeRate 年化无风险利率(默认 0.025 = 2.5%)
488
+ */
489
+ declare function riskMetrics(nav: NavSeries, riskFreeRate?: number): RiskMetrics;
490
+ /**
491
+ * 夏普比率 = (年化收益 - 无风险利率) / 年化波动率
492
+ */
493
+ declare function sharpeRatio(nav: NavSeries, riskFreeRate?: number): number;
494
+ /**
495
+ * 索提诺比率 = (年化收益 - 无风险利率) / 下行波动率
496
+ */
497
+ declare function sortinoRatio(nav: NavSeries, riskFreeRate?: number): number;
498
+ /**
499
+ * 卡尔玛比率 = 年化收益 / |最大回撤|
500
+ */
501
+ declare function calmarRatio(nav: NavSeries): number;
502
+ /**
503
+ * 特雷诺比率 = (年化收益 - 无风险利率) / Beta
504
+ * @param nav 基金净值
505
+ * @param benchmarkNav 基准净值
506
+ * @param riskFreeRate 无风险利率
507
+ */
508
+ declare function treynorRatio(nav: NavSeries, benchmarkNav: NavSeries, riskFreeRate?: number): number | null;
509
+ /**
510
+ * Omega 比率 = 加权上行收益 / 加权下行亏损
511
+ * @param nav 净值序列
512
+ * @param threshold 阈值(默认 0)
513
+ */
514
+ declare function omegaRatio(nav: NavSeries, threshold?: number): number;
515
+ /** 胜率 = 正收益天数 / 总天数 */
516
+ declare function winRate(returns: ReturnSeries): number;
517
+ /** 盈亏比 = 平均盈利 / 平均亏损的绝对值 */
518
+ declare function profitLossRatio(returns: ReturnSeries): number;
519
+ /** 利润因子 = 总盈利 / 总亏损 */
520
+ declare function profitFactor(returns: ReturnSeries): number;
521
+ /** 最大连续盈利/亏损天数 */
522
+ declare function consecutiveWinLoss(returns: ReturnSeries): {
523
+ maxWins: number;
524
+ maxLosses: number;
525
+ };
526
+ /**
527
+ * 一次性计算所有绩效指标
528
+ * @param nav 净值序列
529
+ * @param riskFreeRate 年化无风险利率
530
+ */
531
+ declare function performanceMetrics(nav: NavSeries, riskFreeRate?: number): PerformanceMetrics;
532
+ /** Beta 系数 */
533
+ declare function calculateBeta(fundReturns: ReturnSeries, benchmarkReturns: ReturnSeries): number;
534
+ /** Alpha(年化超额收益) */
535
+ declare function calculateAlpha(fundReturns: ReturnSeries, benchmarkReturns: ReturnSeries, riskFreeRate?: number): number;
536
+ /** 跟踪误差(年化) */
537
+ declare function trackingError(fundReturns: ReturnSeries, benchmarkReturns: ReturnSeries): number;
538
+ /** 信息比率 = 超额收益 / 跟踪误差 */
539
+ declare function informationRatio(fundReturns: ReturnSeries, benchmarkReturns: ReturnSeries): number;
540
+ /**
541
+ * 一次性计算所有相对基准指标
542
+ * @param fundNav 基金净值序列
543
+ * @param benchmarkNav 基准净值序列(如沪深300净值)
544
+ * @param riskFreeRate 年化无风险利率
545
+ */
546
+ declare function benchmarkMetrics(fundNav: NavSeries, benchmarkNav: NavSeries, riskFreeRate?: number): BenchmarkMetrics;
547
+
548
+ /**
549
+ * 统计特征模块
550
+ * 包含:偏度、峰度、赫斯特指数、自相关、Jarque-Bera 检验等
551
+ */
552
+
553
+ /**
554
+ * 计算收益率的完整统计特征
555
+ * @param nav 净值序列(自动转换为收益率)
556
+ */
557
+ declare function statisticalFeatures(nav: NavSeries): StatisticalFeatures;
558
+ /**
559
+ * 计算净值序列(而非收益率)的统计特征
560
+ * @param nav 净值序列
561
+ */
562
+ declare function navStatisticalFeatures(nav: NavSeries): StatisticalFeatures;
563
+ /**
564
+ * 赫斯特指数 - 通过 R/S 分析(重极差分析)计算
565
+ *
566
+ * 结果解读:
567
+ * - H > 0.5:趋势性(persistent),过去涨未来大概率继续涨
568
+ * - H < 0.5:均值回归(anti-persistent),过去涨未来大概率回落
569
+ * - H ≈ 0.5:随机游走,无可预测性
570
+ *
571
+ * @param nav 净值序列
572
+ * @param minWindowSize 最小窗口大小(默认16)
573
+ * @param maxWindowSize 最大窗口大小(默认为序列长度的1/2)
574
+ * @param numPoints 采样点数(默认10)
575
+ */
576
+ declare function hurstExponent(nav: NavSeries, minWindowSize?: number, maxWindowSize?: number, numPoints?: number): HurstResult;
577
+ /**
578
+ * 计算收益率序列的自相关系数(ACF)
579
+ * @param nav 净值序列
580
+ * @param maxLag 最大滞后阶数(默认20)
581
+ */
582
+ declare function autocorrelation(nav: NavSeries, maxLag?: number): AutocorrelationResult;
583
+ /**
584
+ * Ljung-Box 检验 - 检测自相关的统计显著性
585
+ * @param returns 收益率序列
586
+ * @param maxLag 最大滞后阶数
587
+ * @returns Q 统计量和 p 值近似
588
+ */
589
+ declare function ljungBoxTest(returns: ReturnSeries, maxLag?: number): {
590
+ qStatistic: number;
591
+ approximatePValue: number;
592
+ };
593
+ /**
594
+ * 收益率分位数分析
595
+ * @param nav 净值序列
596
+ * @param quantiles 要计算的分位数列表
597
+ */
598
+ declare function returnQuantiles(nav: NavSeries, quantiles?: number[]): Map<number, number>;
599
+ /**
600
+ * 偏度的滚动计算
601
+ * @param returns 收益率序列
602
+ * @param window 滚动窗口
603
+ */
604
+ declare function rollingSkewness(returns: ReturnSeries, window?: number): (number | null)[];
605
+ /**
606
+ * 峰度的滚动计算
607
+ * @param returns 收益率序列
608
+ * @param window 滚动窗口
609
+ */
610
+ declare function rollingKurtosis(returns: ReturnSeries, window?: number): (number | null)[];
611
+ /**
612
+ * GARCH(1,1) 波动率预测 - 简化版
613
+ * 使用矩估计法近似参数,非最大似然估计
614
+ *
615
+ * @param returns 收益率序列
616
+ * @returns 条件方差序列和预测的下一期方差
617
+ */
618
+ declare function garch11(returns: ReturnSeries): {
619
+ conditionalVariance: number[];
620
+ nextPeriodForecast: number;
621
+ omega: number;
622
+ alpha: number;
623
+ beta: number;
624
+ };
625
+
626
+ /**
627
+ * 定投与盈亏分析模块
628
+ * 包含:定投模拟、平均成本、IRR 计算、止盈止损信号、安全边际等
629
+ */
630
+
631
+ /**
632
+ * 定投策略模拟
633
+ * @param nav 净值序列
634
+ * @param config 定投配置
635
+ * @param dates 可选日期序列
636
+ */
637
+ declare function simulateDCA(nav: NavSeries, config: DCAConfig, dates?: DateSeries): DCAResult;
638
+ /**
639
+ * 止盈止损信号检测
640
+ * @param nav 净值序列
641
+ * @param costPrice 持仓成本价
642
+ * @param takeProfitThreshold 止盈阈值(如 0.30 = 盈利 30% 止盈)
643
+ * @param stopLossThreshold 止损阈值(如 -0.15 = 亏损 15% 止损)
644
+ */
645
+ declare function takeProfitStopLoss(nav: NavSeries, costPrice: number, takeProfitThreshold?: number, stopLossThreshold?: number): TakeProfitStopLossSignal;
646
+ /**
647
+ * 动态止盈止损(跟踪止盈)
648
+ * 当净值创新高后回撤一定比例时触发止盈
649
+ * @param nav 净值序列
650
+ * @param trailPercent 跟踪止盈比例(如 0.10 = 从最高点回撤 10% 触发)
651
+ * @param costPrice 持仓成本价
652
+ */
653
+ declare function trailingStop(nav: NavSeries, trailPercent?: number, costPrice?: number): {
654
+ triggered: boolean;
655
+ peakNav: number;
656
+ currentNav: number;
657
+ drawdownFromPeak: number;
658
+ profitFromCost: number;
659
+ };
660
+ /**
661
+ * 安全边际 - 当前净值相对历史最高点的回撤幅度
662
+ * @param nav 净值序列
663
+ * @returns 回撤比例(0-1,如 0.25 = 回撤 25%)
664
+ */
665
+ declare function safetyMargin(nav: NavSeries): number;
666
+ /**
667
+ * 当前净值相对历史最高点和最低点的位置
668
+ * @param nav 净值序列
669
+ * @returns 0-1 之间的位置值(0 = 历史最低,1 = 历史最高)
670
+ */
671
+ declare function pricePosition(nav: NavSeries): number;
672
+ /**
673
+ * 智能定投调整系数
674
+ * 根据当前净值相对均线的位置,调整定投金额
675
+ * @param nav 净值序列
676
+ * @param maPeriod 参考均线周期(默认 250 日)
677
+ * @param maxMultiplier 最大倍数(默认 2.0)
678
+ * @param minMultiplier 最小倍数(默认 0.5)
679
+ * @returns 定投调整倍数(1.0 = 标准金额)
680
+ */
681
+ declare function smartDCAMultiplier(nav: NavSeries, maPeriod?: number, maxMultiplier?: number, minMultiplier?: number): number;
682
+ /**
683
+ * 分批建仓信号
684
+ * 当净值跌到历史分位以下时分批买入
685
+ * @param nav 净值序列
686
+ * @param levels 分批买入的分位阈值列表(如 [0.3, 0.2, 0.1] = 30%、20%、10%分位各买一次)
687
+ * @returns 当前触发的买入层级(0 = 不触发,1 = 第一层,2 = 第二层...)
688
+ */
689
+ declare function tieredBuySignal(nav: NavSeries, levels?: number[]): number;
690
+ /**
691
+ * 分批止盈信号
692
+ * 当净值涨到历史分位以上时分批卖出
693
+ * @param nav 净值序列
694
+ * @param levels 分批卖出的分位阈值列表(如 [0.7, 0.8, 0.9] = 70%、80%、90%分位各卖一次)
695
+ * @returns 当前触发的卖出层级
696
+ */
697
+ declare function tieredSellSignal(nav: NavSeries, levels?: number[]): number;
698
+ /**
699
+ * 计算一段持仓的收益明细
700
+ * @param nav 净值序列
701
+ * @param buyIndex 买入日索引
702
+ * @param sellIndex 卖出日索引(默认到最后一天)
703
+ * @param amount 投入金额
704
+ */
705
+ declare function positionPnL(nav: NavSeries, buyIndex: number, sellIndex?: number, amount?: number): {
706
+ buyNav: number;
707
+ sellNav: number;
708
+ shares: number;
709
+ cost: number;
710
+ value: number;
711
+ pnl: number;
712
+ returnRate: number;
713
+ holdDays: number;
714
+ annualizedReturn: number;
715
+ };
716
+
717
+ /**
718
+ * 形态识别模块
719
+ * 包含:支撑/阻力位、双底/双顶、缺口识别、趋势强度等
720
+ */
721
+
722
+ /**
723
+ * 基于净值密集区识别支撑位和阻力位
724
+ * 使用核密度估计(KDE)思想,找到净值频繁出现的价位
725
+ *
726
+ * @param nav 净值序列
727
+ * @param tolerance 价格容差比例(如 0.02 = 2%以内的视为同一价位)
728
+ * @param minTouches 最少触及次数(默认3)
729
+ */
730
+ declare function supportResistance(nav: NavSeries, tolerance?: number, minTouches?: number): SupportResistanceResult;
731
+ /**
732
+ * 双底/双顶形态识别
733
+ * @param nav 净值序列
734
+ * @param lookback 回看天数(默认60)
735
+ * @param tolerance 两底/顶之间的价格容差比例(默认0.03 = 3%)
736
+ * @param minDistance 两个底/顶之间的最小间隔天数(默认10)
737
+ */
738
+ declare function doubleBottomTop(nav: NavSeries, lookback?: number, tolerance?: number, minDistance?: number): DoubleBottomTopResult;
739
+ /**
740
+ * 净值缺口识别(分红、估值调整等导致的净值跳变)
741
+ * @param nav 净值序列
742
+ * @param threshold 缺口阈值百分比(默认0.02 = 2%)
743
+ */
744
+ declare function detectGaps(nav: NavSeries, threshold?: number): GapResult[];
745
+ /**
746
+ * 趋势强度评分(0-100)
747
+ * 综合多个维度评估当前趋势的强弱
748
+ *
749
+ * @param nav 净值序列
750
+ * @param period 评估周期(默认20天)
751
+ */
752
+ declare function trendStrength(nav: NavSeries, period?: number): number;
753
+ /**
754
+ * 头肩形态识别(简化版)
755
+ * @param nav 净值序列
756
+ * @param lookback 回看天数
757
+ * @returns 头肩顶/底形态信息
758
+ */
759
+ declare function headAndShoulders(nav: NavSeries, lookback?: number): {
760
+ type: 'head_and_shoulders_top' | 'head_and_shoulders_bottom' | 'none';
761
+ leftShoulder: {
762
+ index: number;
763
+ value: number;
764
+ } | null;
765
+ head: {
766
+ index: number;
767
+ value: number;
768
+ } | null;
769
+ rightShoulder: {
770
+ index: number;
771
+ value: number;
772
+ } | null;
773
+ neckline: number | null;
774
+ confidence: number;
775
+ };
776
+
777
+ export { adx, annualizeReturn, annualizedVolatility, atr, autocorrelation, benchmarkMetrics, bias, bollingerBands, calculateAlpha, calculateBeta, calculateCVaR, calculateVaR, calmarRatio, cci, consecutiveWinLoss, dema, detectCrossSignal, detectGaps, detectMAAlignment, donchianChannel, doubleBottomTop, downsideVolatility, dpo, ema, garch11, headAndShoulders, hurstExponent, informationRatio, kama, kdj, keltnerChannel, ljungBoxTest, macd, massIndex, maxDrawdown, maxDrawdownDuration, momentum, navPercentile, navStatisticalFeatures, navToReturns, omegaRatio, performanceMetrics, positionPnL, pricePosition, profitFactor, profitLossRatio, returnQuantiles, riskMetrics, roc, rollingKurtosis, rollingSkewness, rollingVolatility, rsi, safetyMargin, sar, sharpeRatio, simulateDCA, sma, smartDCAMultiplier, sortinoRatio, statisticalFeatures, stochasticRSI, supportResistance, takeProfitStopLoss, tema, tieredBuySignal, tieredSellSignal, totalReturn, trackingError, trailingStop, trendStrength, treynorRatio, trix, volatilityCone, williamsR, winRate, wma };
778
+ export type { ADXResult, AutocorrelationResult, BenchmarkMetrics, BollingerResult, ChannelResult, DCAConfig, DCAResult, DateSeries, DoubleBottomTopResult, DrawdownResult, GapResult, HurstResult, KDJResult, MAAlignmentResult, MACDResult, MACrossSignal, MAResult, NavSeries, PerformanceMetrics, RSIResult, ReturnSeries, RiskMetrics, SARResult, StatisticalFeatures, SupportResistanceResult, TakeProfitStopLossSignal };
779
+ //# sourceMappingURL=index.d.cts.map