Download Latest Version ta4j-core-0.25.0-javadoc.jar (6.3 MB) Google Add to Preferred Sources
Home / 0.24.0
Name Modified Size InfoDownloads / Week
Parent folder
ta4j-core-0.24.0-javadoc.jar 2026-08-08 5.7 MB
ta4j-core-0.24.0-sources.jar 2026-08-08 1.1 MB
ta4j-core-0.24.0-tests.jar 2026-08-08 2.7 MB
ta4j-core-0.24.0.jar 2026-08-08 2.1 MB
ta4j-examples-0.24.0-javadoc.jar 2026-08-08 943.8 kB
ta4j-examples-0.24.0-sources.jar 2026-08-08 2.9 MB
ta4j-examples-0.24.0.jar 2026-08-08 3.4 MB
0.24.0 source code.tar.gz 2026-08-08 6.0 MB
0.24.0 source code.zip 2026-08-08 7.1 MB
README.md 2026-08-08 15.6 kB
Totals: 10 Items   32.0 MB 5

0.24.0 (2026-08-08)

Added

  • Dynamic and forecast-ready Kalman indicators: KalmanFilterIndicator now accepts causal per-bar process and measurement noise through KalmanNoiseIndicator while preserving its same-bar smoothing API and legacy serialized descriptors. New constant-velocity KinematicKalmanFilterIndicator state can be projected through forecast() or forecast(horizon) into analytic Gaussian price distributions that compose with forecast point adapters and rolling conformal calibration. KinematicKalmanForecastExample demonstrates ATR- and CHOP-derived dynamic noise, shared multi-horizon forecasts, and conformal evaluation over an ossified S&P 500 weekly series.
  • Reusable rolling Hurst estimation: Added HurstExponentIndicator for close prices or any numeric indicator, with a default bounded ten-lag log-variogram regression, explicit maximum-lag tuning, causal full-window warm-up, and dimensionless [0, 1] output. RoughVolatilityForecastStateIndicator now composes this first-class statistic while retaining its stricter rough-volatility bounds.
  • Unified recent highs/lows with a canonical default: Added RecentSwingIndicators paired factories for fractal, ATR ZigZag, adaptive ZigZag, slope-change, prominence, and consensus methods. The canonical default is an OHLC-aware ATR(14) ZigZag, while a separate status-aware point view exposes forming terminal extremes without changing confirmed-only indicator semantics. New bounded prominence indicators and detector support identify structurally salient peaks/troughs, swing detectors/configuration records live under org.ta4j.core.analysis.elliott.swing instead of the first-class indicator namespace, and ossified Coinbase ETH/USD fixtures compare every method from five-minute through daily bars.
  • Concise strategy JSON authoring with Strategy.fromJson(...) (CF-113): You can now hand ta4j an opt-in version: 2 strategy envelope instead of writing the full descriptor tree, which makes quick SMA/EMA crossover setups, RSI threshold rules, stop-gain/stop-loss exits, and short-starting strategies much easier to generate or edit. The bounded shorthand accepts entryRule / exitRule, AndRule / OrRule, shorthand indicators like ClosePrice, SMA(...), EMA(...), and RSI(...), then validates inputs strictly and normalizes everything back to canonical descriptor JSON internally.
  • Unified named-asset shorthand for v2 serialization: Added immutable NamedAssetRegistry / NamedAssetProvider APIs and compact function-call shorthand for indicators, rules, strategies, and analysis criteria. Existing canonical toJson() output remains unchanged, while opt-in helpers such as Strategy#toCompactJson(), Strategy#fromExpression(...), Rule#fromExpression(...), Indicator#fromExpression(...), and AnalysisCriterion#fromExpression(...) support compact authoring and CLI-friendly criterion names like NetProfit and SharpeRatio.
  • Lossless analysis criterion descriptors: AnalysisCriterion#toJson() now preserves supported constructor state such as return representation and boolean flags, and rejects unsupported stateful criteria instead of silently serializing them as default instances.
  • Bayesian online change-point return state: Added OnlineChangePointForecastStateIndicator with constructor-first defaults, canonical constant-hazard run-length inference, Normal-Inverse-Gamma/Student-t updates in log space, deterministic typed posterior summaries, reset-aware warm-up, and window-qualified feature schemas for analog composition. Its operator-facing recentChangeProbability carries the configured recent run-length window instead of mislabeling the constant reset hazard as a responsive signal.
  • Trade-sampled risk ratios and borrowing-cost side selection: SamplingFrequency.TRADE now lets SharpeRatioCriterion and SortinoRatioCriterion sample one return per included position interval, and LinearBorrowingCostModel can apply borrowing costs to short positions, long positions, or both sides while keeping its existing short-only default.
  • Rough-volatility return state: Added RoughVolatilityForecastStateIndicator with constructor-first defaults, shared EWMA return moments, bounded log-variogram Hurst estimation, log-volatility vol-of-vol, deterministic cumulative horizon variances, and a fixed representation-aware feature schema for analog composition. The accompanying BTC daily example compares default EWMA and rough state without making performance claims.
  • State-conditioned analog and rolling conformal forecasts: Added AnalogReturnProjectionIndicator with matured-neighbor guards, training-only feature standardization, deterministic weighted empirical summaries, and RollingConformalForecastProjectionIndicator for finite-sample tail calibration over generic realized values or semantically typed cumulative log returns. Calibration refuses tail-less base forecasts rather than reporting a stable no-op, and a runnable ossified BTC daily example demonstrates the paired workflow.
  • Causal LPPL residuals expose a regular numeric indicator and rich fit diagnostics: Added LPPLResidualIndicator for normalized one-step log-price residuals and LPPLFitIndicator for inspecting and reusing the underlying LPPLS calibration. Fits end before the evaluated bar to avoid look-ahead, invalid or unqualified models return NaN, finite high-precision prices remain supported, and immutable LPPLCalibrationProfile tuning keeps advanced construction readable.
  • Forecast distributions now carry explicit support provenance: Added ForecastSupport for unavailable, empirical, and named analytic distributions, a validated summary builder, safe affine transforms, and representation-aware feature schemas with allocation-free extraction.
  • Return estimators share one validated moment component: Added minimal ForecastState lifecycle, composable ReturnMomentState and ReturnMoments, canonical variance-derived volatility, and typed ReturnForecastStateIndicator<S> composition for EWMA and richer state models.
  • Summary-only price conversion is explicit: Added LognormalApproximationPriceForecastIndicator for operators who intentionally want one coherent moment-matched analytic price distribution.

Removed

  • 0.24.0 deprecation cleanup: Removed the scheduled compatibility shims for the moved drawdown criteria, MACDVIndicator, and legacy Gson JSON serialization types. Use org.ta4j.core.criteria.drawdown.*, org.ta4j.core.indicators.macd.MACDVIndicator, and JsonFileBarSeriesDataSource instead.

Changed

  • Snapshot verification bypasses stale CDN metadata: The isolated Maven consumer now fetches cache-busted timestamped coordinates directly from the snapshot repository before resolving artifacts, so post-deploy verification compares the newly published build instead of a cached older -SNAPSHOT mapping.
  • AI release scheduling now uses direct OpenAI Responses API inference: release-scheduler.yml no longer depends on the retired GitHub Models service; it preflights the exact gpt-5.6-luna model, sends the existing SemVer dossier with reasoning effort high, disables provider-side response storage, omits reasoning output from audit artifacts, and records provider-aware request and failure diagnostics while preserving probe/full/skip and dry-run safety. Manual dispatches now default to aiMode=full after the validated probe rollout.
  • Test runtime guidance now protects the contributor feedback loop: Maintainers are directed to track the Surefire top five, iterate with focused module tests without repeated clean, keep BarSeries and fold fixtures minimal, reuse immutable parsed data, and retain only one exhaustive sweep per behavior.
  • CHOP uses explicit output representation without breaking legacy scales: ChopIndicator now defaults to conventional percentage output, accepts ReturnRepresentation.DECIMAL or PERCENTAGE, uses composed rolling ATR totals and native Num logarithms, and returns unavailable values for incomplete or undefined windows. Its integer-scale constructor remains as a deprecated compatibility adapter, including arbitrary custom scales and lossless descriptor/JSON reconstruction.
  • Intraday Elliott trading now requires empirical precedent: Added a causal nearest-analog Elliott phase forecast for one-minute and five-minute bars that remains unstable until prior bullish impulse structures exist. The HighRewardElliottWaveStrategy example now enters only at confirmed wave 1/2/4 turns, exits at wave 1/3/5 peaks or through a fixed/target/trailing/ATR/timeout protection stack, and removes its unused legacy serialized-label, direction, oscillator, and risk/reward interfaces.
  • Elliott Wave analysis now supports live intraday swing counts: ElliottLogicProfile.INTRADAY_LIVE uses causal ATR-scaled ZigZag detection without macro percentage-of-history or percentage-of-price gates, and ElliottAnalysisResult.WaveCount separates confirmed waves from the optional forming terminal wave. ElliottWaveAnalysisRunner.Builder#includeProvisionalTerminalSwing(false) provides confirmed-only scenario generation for trading rules, while result helpers identify scenarios that use the compatible forming-wave projection. The high-reward Elliott example now reuses the core scenario indicator, accepts SUB_MINUETTE strategy configuration, and no longer discards minute-bar swings behind its former 10%-of-price threshold.
  • Forecast API corrected before further state-estimation phases: Forecast is now Num-only, map(...) and positional ofSummary(...) were replaced by safe affine operations and Forecast.builder(...), missing quantiles return NaN.NaN, ForecastProjectionIndicator declares its horizon, ReturnForecastState composes ReturnMoments, and feature extractors publish durable names, units, versions, and return representation. This deliberately breaks the forecast API first released in 0.23.0; see the README and wiki migration guide for exact replacements.
  • New snapshots are externally consumable before publication reports green: Every master push still starts snapshot publication immediately, concurrent snapshot runs now queue instead of cancelling an active deploy, and release-PR publishing no longer dispatches a duplicate run. The snapshot workflow uses an isolated Maven consumer to resolve the exact timestamped parent/core/examples artifacts and checksum-match the newly deployed core/examples JARs, while release health retrieves the exact version-level core POM/JAR instead of treating lag-prone top-level metadata or Portal browsing as proof.
  • Shared local and hosted quality gates: scripts/run-full-build-quiet.sh and its PowerShell counterpart now run repository script fixtures, actionlint validation, and the all-non-demo test scope used by pull-request CI. The local default repairs license headers and formatting before verification, while hosted workflows reuse the entrypoint with --validate-only to reject omitted repairs without modifying the checkout. Workflow, script-contract, integration-test, SpotBugs, and JaCoCo findings now use the same underlying gate before and after push.
  • Quiet quality gates complete faster without losing checks: Repository script fixtures now run in parallel under the quiet build preflight, metadata validation fixtures fake Maven effective-model lookups instead of launching Maven repeatedly, and structural backtest-result tests avoid duplicate numeric-factory parameterization while execution-sensitive coverage remains cross-factory. The shell quiet build now keeps successful fixture chatter and Maven INFO banners out of stdout, passing through only WARN/ERROR-level log lines before a compact elapsed-time, test, coverage, and log-path footer.

Fixed

  • Recent swing results remain causal and recover under live revisions: Confirmation indexes now prevent later-discovered pivots from leaking into historical queries, terminal-bar replacement rewinds swing tracking, and dynamic ZigZag candidates formed during ATR warm-up pin the first finite threshold instead of remaining permanently unconfirmable.
  • Recent swing detector adapters preserve detector prices: Custom detector-backed recent swing indicators now report the detector's SwingPivot.price() for confirmed pivot values, and prominence swing unstable bars now reflect the causal partial-baseline confirmation boundary instead of requiring the full prominence lookback.
  • Quiet full-build watchdog respects active Maven progress: The Bash quiet build keeps the default 180-second watchdog as the earliest timeout boundary, but now lets a resource-constrained Maven reactor continue when output is still progressing and reports no-output stall evidence when it terminates a genuinely stalled build.
  • Release-freeze PR checks retry transient GitHub API outages: The Release Merge Freeze workflow now retries temporary GitHub API failures while listing open master PRs, so a short 503 from GitHub does not incorrectly fail otherwise healthy pull requests.
  • Quiet full-build skip and coverage summaries are now clean by default: ATR/volatility stop rules now preserve constructor inputs for rule serialization round trips, benchmark and display-dependent checks use explicit opt-in tags, headless-safe chart assertions run in the normal build, and the quiet build footer reports only the active checkout's module JaCoCo CSV files instead of stale nested worktree reports.
  • Indicator serialization round-trips now preserve constructor state across the CF-232 / CF-277-CF-286 inventory: Oscillator, composite, channel, trend, volume, VWAP, Ichimoku, SuperTrend, ADX, and candlestick indicators now serialize durable constructor inputs instead of rebuilt helper graphs, while stricter descriptor reconstruction rejects unconsumed child components or parameters.
  • Quiet build works under system Bash with no extra Maven args: The default scripts/run-full-build-quiet.sh path now preserves the hosted non-demo test tag without expanding an empty pass-through argument array under macOS /bin/bash, so maintainers can run the local gate directly without an early EXTRA_MAVEN_ARGS[@]: unbound variable exit.
  • Serialization validation now fails at the authored boundary: Malformed descriptor JSON now reports JSON syntax errors instead of becoming a label-only descriptor, canonical indicator/rule/criterion numeric constructor arguments use finite JSON-number validation with exact integer conversion, and strategy v2 rejects custom indicator aliases that produce non-numeric indicator values inside numeric comparison rules.
  • Rolling variance stays coherent at low Decimal precision: VarianceIndicator now uses an anchored one-pass recurrence, so constant transcendental values retain zero dispersion without doubling source reads for every rolling window.
  • Monte Carlo price summaries describe the simulated paths exactly: MonteCarloPriceForecastIndicator now transforms every terminal cumulative-return path to price before calculating mean, median, standard deviation, quantiles, and empirical support. Nonlinear summary-only conversion no longer creates hybrid distributions.
  • Forecast numeric boundaries preserve factory configuration: State, summary, adapter, and sample boundaries now coerce through the owning NumFactory, including differing DecimalNum precision contexts and factory-correct zero dispersion.
Source: README.md, updated 2026-08-08