Skip to main content

kestrel_chartkit/
lib.rs

1//! Streaming technical-analysis primitives, regime classification, composite scoring, and SVG
2//! chart exports.
3//!
4//! Most consumers should start with the root re-exports. Concrete indicator and engine modules
5//! remain public for advanced composition; the crate is pre-1.0 and does not yet promise API
6//! stability for those lower-level modules.
7
8/// Version dieser Rechenbibliothek, zur Laufzeit lesbar.
9///
10/// Eine Auswertung ist nur dann wiederholbar, wenn festgehalten ist, womit
11/// gerechnet wurde. Zwei Ergebnisse mit gleichen Parametern, aber
12/// verschiedener Version sind nicht vergleichbar — und ohne diese Konstante
13/// kann ein Konsument die Version nicht mitschreiben, weil Cargo sie zur
14/// Laufzeit nicht herausgibt.
15pub const VERSION: &str = env!("CARGO_PKG_VERSION");
16
17/// Provider-neutral data-feed and notification integration contracts (traits), plus
18/// dependency-free reference implementations.
19pub mod adapters;
20/// Plausibility check between an indicator's data requirements and a series' capabilities.
21pub mod applicability;
22/// Shared, typed result/artifact models (pivots, zones, profiles, scenarios).
23pub mod artifact;
24/// IANA-timezone, DST-aware exchange calendars. Requires the `calendar` feature.
25#[cfg(feature = "calendar")]
26pub mod calendar;
27/// Versioned state snapshots for long-running engines.
28pub mod checkpoint;
29/// Deterministic clustering and robust adaptive-threshold primitives.
30pub mod clustering;
31/// Contract specifications, currencies, and linear contract valuation models.
32pub mod contract;
33/// Market-context and execution-support calculations.
34pub mod engine;
35/// Evaluation records and aggregate trade statistics.
36pub mod evaluation;
37/// Event/alert enrichment: timestamps, instrument/timeframe context, stable IDs, deduplication.
38pub mod event;
39/// Provider-neutral order/fill simulator: orders, partial fills, pyramiding, costs, position state.
40pub mod execution;
41/// Financial day-count conventions, cashflow discounting, and bond valuation.
42pub mod finance;
43/// Generic composition graph: typed indicator dependencies, shared intermediate outputs, and
44/// centralized warmup/execution ordering.
45pub mod graph;
46/// Streaming indicators and the validated indicator registry.
47pub mod indicator;
48/// Lower-timeframe (intrabar) child-bar grouping under a higher-timeframe parent bucket.
49pub mod intrabar;
50/// Bar lifecycle events and rollback-safe, idempotent recomputation.
51pub mod lifecycle;
52/// Shared OHLCV and market-domain types.
53pub mod model;
54/// European vanilla option pricing, analytical Greeks, and implied volatility solver.
55pub mod option;
56/// Reference-parity fixture harness: standardized reference-value comparison with timestamp
57/// alignment, warmup handling, tolerances, MTF boundaries, and explicit missing values.
58pub mod parity;
59/// Provider-neutral portfolio exposure, cashflow-adjusted equity returns, and risk analytics.
60pub mod portfolio;
61/// Market-regime classification.
62pub mod regime;
63/// Advanced regime-model building blocks: Markov transitions, persistence, predictability,
64/// hysteretic transitions, and adaptive cycle-length tracking.
65pub mod regime_advanced;
66/// Provider-neutral risk and position-sizing: account risk, leverage/notional limits,
67/// scale-in/out plans, break-even/time-stop rules.
68pub mod risk;
69/// Batch and replay execution over a full bar history.
70pub mod runner;
71/// Generic composite scenario state machine: multi-stage progressions with per-stage expiry and
72/// explicit invalidation.
73pub mod scenario;
74/// Indicator scoring and composite aggregation.
75pub mod scoring;
76/// Historical series sliding lookback and event helpers.
77pub mod series;
78/// Trading session and Opening Range Breakout (ORB) tracking.
79pub mod session;
80/// Composite signal data types.
81pub mod signal;
82/// Rolling statistical primitives, linear regression, and sample statistics (Wilson interval,
83/// longest run).
84pub mod stats;
85/// Stress testing, multi-asset block bootstrapping, path simulation, and execution uncertainty.
86pub mod stress;
87/// Support and resistance discovery and zone lifecycle.
88pub mod structure;
89/// Deterministic synthetic price series and market pattern generators.
90pub mod synthetic;
91/// Custom timeframe types and OHLCV bar resampling.
92pub mod timeframe;
93/// Bar-series transformations that derive alternative candles from observed ones.
94pub mod transform;
95/// Shared valuation context: valuation date, market-data stamp, curves and FX.
96pub mod valuation;
97/// Chart DTOs and static SVG rendering.
98pub mod viz;
99
100pub use adapters::{
101    DataFeedAdapter, InMemoryDataFeed, LoggingNotificationSink, NotificationEvent,
102    NotificationSeverity, NotificationSink, WebhookNotificationSink,
103};
104pub use applicability::{
105    check_applicability, data_requirements, rule_catalog, Applicability, ApplicabilityNote,
106    ApplicabilityReason, ApplicabilityTier, DataRequirements, RuleDescription,
107};
108pub use artifact::{
109    Artifact, PivotArtifact, ProfileArtifact, ProfileBin, ScenarioArtifact, ZoneArtifact,
110};
111#[cfg(feature = "calendar")]
112pub use calendar::{ExchangeCalendar, SessionSegment};
113pub use checkpoint::{Checkpoint, CheckpointStore};
114pub use clustering::{kmeans_1d, KMeansResult, RobustBand, RollingRobustThreshold};
115pub use contract::{
116    contract_pnl, contract_tick_value, notional_value, stop_risk_amount, ContractSpec,
117    ContractSpecError, Currency, FxConversionError, FxRate, InstrumentType, ValuationError,
118};
119pub use event::{AlertDeduplicator, AlertEvent, EventPhase};
120pub use execution::{
121    submit_bracket, ExecutionCosts, Fill, FillSimulator, FillSimulatorConfig, Order, OrderKind,
122    OrderSide, OrderStatus, Position,
123};
124pub use finance::{
125    discount_factor, price_bond, year_fraction, yield_to_maturity, BondPricingResult, BondSpec,
126    BusinessCalendar, BusinessDayConvention, Cashflow, Compounding, CouponSchedule, Date,
127    DayCountConvention, FinanceError, FixedRateBond, ScheduleStub, Weekday,
128};
129pub use graph::{ComposedNode, CompositionGraph, GraphError, GraphIndicator, Leaf};
130pub use indicator::cvd_intrabar::{
131    DeltaAnchor, DeltaProvenance, IntrabarCvd, IntrabarDelta, UnchangedIntrabarPolicy,
132};
133pub use indicator::registry::{
134    build, build_checked, build_typed, catalog, ParamValue, RegistryError, TypedParams,
135};
136pub use indicator::{Indicator, IndicatorAlert, IndicatorOutput};
137pub use intrabar::{IntrabarGroup, IntrabarGrouper};
138pub use lifecycle::{BarLifecycle, LifecycleError, LifecycleRunner};
139pub use model::{
140    Bar, BarQuality, BarValidationError, ContinuityKind, InstrumentMeta, InstrumentMetaError,
141    LiquidityTier, MarketRegime, PriceAdjustment, Provenance, QualifiedBar, Resolution, RiskPlan,
142    SeriesCapabilities, SeriesIdentity, SessionKind, Source, SupportResistanceZone, VolumeKind,
143    ZoneKind,
144};
145pub use option::{
146    black_76, black_scholes_merton, implied_volatility, normal_cdf, normal_pdf,
147    verify_put_call_parity, BlackScholesInputs, OptionError, OptionGreeks, OptionPricingResult,
148    OptionStyle, OptionType,
149};
150pub use parity::{
151    ParityFixture, ParityFixtureError, ParityFixtureRow, ParityOutcome, ParityReport,
152};
153pub use portfolio::{
154    calculate_return_metrics, cashflow_adjusted_return, compute_drawdown, evaluate_portfolio,
155    historical_var_and_es, volatility_targeting_scale, CashLedger, DrawdownStats,
156    HistoricalRiskStats, PortfolioError, PortfolioSnapshot, PositionEvaluation, PositionSide,
157    PositionSnapshot, ReturnMetrics,
158};
159pub use regime::classify_regime;
160pub use regime_advanced::{
161    AdaptiveCycleOutput, AdaptiveCycleTracker, HysteresisBand, HysteresisLevel,
162    PredictabilityTracker, RegimeMarkovModel, RegimePersistenceOutput, RegimePersistenceTracker,
163};
164pub use risk::{
165    position_size, position_size_contract, AccountRisk, PositionSizeResult, ScaleInStep,
166    ScaleOutStep, ScalePlan, StopDecision, StopManager,
167};
168pub use runner::{
169    run_batch, run_batch_checked, run_batch_with_applicability, BatchResult, TimestampedOutput,
170};
171pub use scenario::{ScenarioStateMachine, ScenarioStatus, StageConfig};
172pub use scoring::{
173    aggregate_subscores, aggregate_subscores_with_instrument, score_indicator, WeightPreset,
174};
175pub use series::{CumulativeSum, Series, SeriesEvents};
176pub use session::{SessionConfig, SessionConfigError, SessionTracker};
177pub use signal::{CompositeSignal, PermissionGrade, SignalDirection, SubScore};
178pub use stats::{correlation, linear_regression, longest_run, wilson_interval, ProportionInterval};
179pub use stress::{
180    apply_portfolio_stress, multi_asset_block_bootstrap, simulate_equity_paths,
181    simulate_stop_gap_execution, PathSimulationSummary, StressError, StressScenario,
182    StressedPortfolioResult,
183};
184pub use structure::{find_sr_zones, ManagedZone, ZoneRegistry, ZoneState};
185pub use synthetic::{
186    bos_choch_swing_bars, random_walk_bars, trending_bars, wyckoff_schematic_bars, SimpleRng,
187    SwingDirection, WyckoffGeneratorConfig,
188};
189pub use timeframe::{BarResampler, ConfirmedResampler, Timeframe, TimeframeError};
190pub use valuation::bootstrap::CalibrationInstrument;
191pub use valuation::portfolio::{
192    MarketScenario, PortfolioReport, PortfolioScenarioResult, PortfolioSensitivities,
193    PortfolioValuation, PositionValuation, SensitivityKind, ValuationModel, ValuationPosition,
194    ValuedInstrument,
195};
196pub use valuation::volatility::{SurfaceValidity, VolatilitySurface};
197pub use valuation::{
198    BondCurveValuation, DiscountCurve, ForwardCurve, ValuationContext, ValuationContextError,
199    ValuationStamp, Valued, YieldCurve,
200};
201
202/// Cross-instrument return analysis over aligned close samples.
203pub mod cross_asset;
204pub use cross_asset::{
205    compute_market_breadth, compute_pair_spread, compute_rolling_beta,
206    compute_signal_correlation_matrix, correlation_matrix,
207    relative_strength as relative_strength_ranking, CloseSample, MarketBreadthSnapshot,
208    PairSpreadResult, RollingBetaResult, SignalCorrelationCell, UniverseMemberObservation,
209};
210pub use scoring::agreement::{
211    aggregate_agreement, Agreement, AgreementStrategy, DirectionalStatement,
212};
213
214pub use evaluation::price::{
215    ForwardPriceOutcome, PriceDirection, PriceObservation, PriceOutcomeSample, PriceOutcomeStats,
216    PriceStats,
217};
218pub use evaluation::probability::{
219    block_bootstrap_brier, compute_calibration_metrics, CalibratedProbability, CalibrationMetrics,
220    IsotonicCalibrator, ValidationExperimentManifest,
221};
222pub use evaluation::split::{
223    split_trades_purged, PurgedSplitConfig, PurgedTrainTestSplit, SplitError, TradeSpan,
224};
225
226/// Pure on-demand market-state and price-level snapshots.
227pub mod analytics;