金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

indicator-series

indicator-series 是面向数据与分析的 Agent Skill,来自 DaveSkender/Stock.Indicators。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Implement Series-style batch indicators with mathematical precision. Use for new StaticSeries implementations or optimization. Series results are the canonical reference—all other styles must match exactly. Focus on cross-cutting requirements and performance optimization decisions.

SKILL.md

下载 MD ↓
nameindicator-series
descriptionImplement Series-style batch indicators with mathematical precision. Use for new StaticSeries implementations or optimization. Series results are the canonical reference—all other styles must match exactly. Focus on cross-cutting requirements and performance optimization decisions.

Series indicator development

File structure

  • Implementation: src/{category}/{Indicator}/{Indicator}.StaticSeries.cs
  • Test: tests/indicators/{category}/{Indicator}/{Indicator}.StaticSeries.Tests.cs
  • Catalog: src/{category}/{Indicator}/{Indicator}.Catalog.cs
  • Categories: a-d, e-k, m-r, s-z (alphabetical)

Performance optimization

Array allocation pattern (recommended for new implementations):

TResult[] results = new TResult[length];
// ... assign results[i] = new TResult(...);
return new List<TResult>(results);  // NOT results.ToList()

When to use: Indicators with predictable result counts show ~2x improvement (Issue #1259)

When NOT to use: Benchmark first. Some indicators (ADL) remain faster with List.Add()

Conversion strategy:

  1. Benchmark existing List-based implementation
  2. Convert to array pattern
  3. Benchmark again
  4. Revert if no improvement or regression

Required implementation

Beyond the .StaticSeries.cs file, ensure:

  • [ ] Catalog registration: Create src/**/{IndicatorName}.Catalog.cs and register in src/_common/Catalog/Catalog.Listings.cs
  • [ ] Unit tests: Create tests/indicators/**/{IndicatorName}.StaticSeries.Tests.cs
  • Inherit from StaticSeriesTestBase
  • Include [TestCategory("Regression")] for baseline validation
  • Verify against manually calculated reference values
  • [ ] Performance benchmark: Add to tools/performance/SeriesIndicators.cs
  • [ ] Public documentation: Update docs/_indicators/{IndicatorName}.md

Precision testing patterns

  • Store reference data separately: Create {Indicator}.Data.cs files with arrays of expected values at maximum precision
  • Excel manual calculations: Export at highest precision available (~14 decimal places for default.csv values ~200)
  • Baseline regression validation: Compare full dataset against reference arrays using Money10-Money12 precision
  • Spot check assertions: Use Money4 for individual sample value readability (sanity checks, not proofs)
  • Longer datasets: May require lower precision (e.g., Money10 for 15k quotes) due to accumulated floating-point error
  • Document degradation: When precision must be lowered, explain why in test comments

Examples

  • Simple single-value: src/s-z/Sma/Sma.StaticSeries.cs
  • Exponential smoothing: src/e-k/Ema/Ema.StaticSeries.cs
  • Complex multi-stage: src/a-d/Adx/Adx.StaticSeries.cs
  • Multi-line results: src/a-d/Alligator/Alligator.StaticSeries.cs

See references/decision-tree.md for result interface selection guidance.

Constitutional constraints

  • Series is truth: All other styles (BufferList, StreamHub) MUST match Series results exactly
  • Verify against authoritative sources: NEVER trust other libraries—use reference publications only
  • Algebraic stability: Prefer boundary detection over clamping
  • Real-world testing: Synthetic boundary data may miss precision edge cases
  • Fix formulas, not symptoms: When all styles fail identically, fix the core algorithm

NEVER modify formulas without verification against authoritative mathematical references. See src/AGENTS.md for formula protection rules.


Last updated: December 31, 2025

来源:DaveSkender/Stock.Indicators · Apache-2.0 许可 · 许可原文 · MD 为来源页保存的历史版本