rangebar 11.5.0__tar.gz → 11.6.0__tar.gz
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.
- {rangebar-11.5.0 → rangebar-11.6.0}/CHANGELOG.md +8 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/Cargo.lock +9 -9
- {rangebar-11.5.0 → rangebar-11.6.0}/Cargo.toml +2 -2
- {rangebar-11.5.0 → rangebar-11.6.0}/PKG-INFO +1 -1
- {rangebar-11.5.0 → rangebar-11.6.0}/RESUME.md +48 -50
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/CLAUDE.md +43 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/arrow_export.rs +17 -0
- rangebar-11.6.0/crates/rangebar-core/src/interbar.rs +1098 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/lib.rs +2 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/processor.rs +122 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/test_utils/mod.rs +17 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/types.rs +119 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/stats.rs +17 -0
- rangebar-11.6.0/docs/plans/issue-59-inter-bar-features.md +1633 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/__init__.py +2 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/__init__.pyi +47 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/schema.sql +49 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/constants.py +33 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/helpers.py +16 -1
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/range_bars.py +10 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/processors/core.py +13 -1
- {rangebar-11.5.0 → rangebar-11.6.0}/src/lib.rs +82 -10
- {rangebar-11.5.0 → rangebar-11.6.0}/.gitignore +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/.mcp.json +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/.mise.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/.pre-commit-config.yaml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/.releaserc.yml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/CLAUDE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/LICENSE +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/STATISTICAL_VALIDITY_AUDIT.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/benches/rangebar_bench.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/build.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/CHANGELOG.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/Cargo.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/checkpoint.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/fixed_point.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/test_data_loader.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/test_utils/generators.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/src/timestamp.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/tests/cross_boundary_validation.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/tests/cross_date_real_data_validation.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/tests/cross_year_boundary_test.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-core/tests/incomplete_bar_continuation_proof.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/CHANGELOG.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/Cargo.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/binance/checksum.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/binance/historical.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/binance/mod.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/binance/symbols.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/binance/websocket.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/exness/builder.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/exness/client.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/exness/conversion.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/exness/mod.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/exness/types.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-providers/src/lib.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/CHANGELOG.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/Cargo.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/indicators.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/lib.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/processor.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/replay_buffer.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/crates/rangebar-streaming/src/universal.rs +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/deny.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/ARCHITECTURE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/CONTEXT.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/MEMORY_REMEDIATION_PLAN.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/adr/2026-01-31-realtime-streaming-api.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/analysis/2025-10-10-flash-crash.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/api.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/development/PERFORMANCE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/development/RELEASE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/migration-v8.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/rangebar_core_api.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/2026-02-02-intrabar-microstructure-claude-opus.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/2026-02-02-intrabar-microstructure-gemini-3-pro.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/INDEX.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/adversarial-audit-methodology.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/external/time-to-convergence-stationarity-gap.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/labeling-for-ml.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/market-regime-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/multi-threshold-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/multifactor-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/pattern-research-summary.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/price-action-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/tda-parameter-sensitivity-audit.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/tda-regime-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/docs/research/volatility-regime-patterns.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/backtesting_integration.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/basic_usage.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/binance_csv_example.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/get_range_bars_example.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/validate_output.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/examples/with_clickhouse_cache.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/package-lock.json +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/package.json +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/pyproject.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/CLAUDE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/checkpoint.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/cli.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/CLAUDE.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/bulk_operations.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/cache.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/client.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/config.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/mixin.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/preflight.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/query_operations.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/clickhouse/tunnel.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/conversion.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/exceptions.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/exness.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/hooks.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/logging.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/notify/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/notify/pushover.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/notify/telegram.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/count_bounded.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/models.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/precompute.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/orchestration/tick_fetcher.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/ouroboros.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/processors/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/processors/api.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/resource_guard.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/storage/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/storage/checksum_registry.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/storage/parquet.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/streaming.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/__init__.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/cache_staleness.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/continuity.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/gap_classification.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/post_storage.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/tier1.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/python/rangebar/validation/tier2.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/rust-toolchain.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/rustfmt.toml +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/adwin_regime_detection_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/analyze_flash_crash.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/bootstrap_permutation_validation_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/build-release.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/cache_clear.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/cache_status.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/check-release-config.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/coarse_to_fine_cascade.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/combined_pattern_audit_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/combined_regime_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/combined_rv_alignment_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/cross_asset_correlation_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/cross_regime_correlation_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/cross_threshold_alignment.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/dependency_monitor.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/direction_patterns_reaudit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/download_exness_eurusd.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/download_exness_forex.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/duration_autocorrelation.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/duration_autocorrelation_audit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/duration_volatility_prediction.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/fdr_corrected_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/fill_all_symbols.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/fill_gaps_2025_2026.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/fill_gaps_littleblack.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/fill_gaps_retry.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/historical_formation_patterns_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/historical_formation_regime_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/hurst_adjusted_kelly_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/hurst_adjusted_psr_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/hurst_exponent_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/hurst_multi_estimator_audit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/microstructure_clickhouse.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/microstructure_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/microstructure_simple.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/monitor_population.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multi_threshold_pattern_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multibar_continuation.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multibar_forward_returns_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multifactor_multigranularity_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multifactor_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multifactor_patterns_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multithreshold_combinations_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/multithreshold_regime_combinations_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/oos_validation_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/parameter_sensitivity_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/pattern_correlation_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/pattern_return_profiles_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/pattern_return_stats.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/populate_1000dbps.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/populate_250dbps.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/populate_250dbps_extended.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/populate_safe.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/position_sizing_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/process_exness_eurusd_to_cache.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/profiling_tools.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/psr_mintrl_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/publish-to-pypi.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/publish-wheels.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/regenerate_cache.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/regime_analysis.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/regime_analysis_50dbps_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/regime_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/regime_transition_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/run_large_scale_benchmark.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/run_length_momentum_analysis.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/run_length_momentum_multi_symbol.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/run_length_momentum_wfo.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/rv_return_profile_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/semantic-release.sh +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_break_event_alignment_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_conditioned_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_cupy_accelerated.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_gpu_analysis.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_hurst_by_regime_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_parameter_sweep_audit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_regime_hurst_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_regime_pattern_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_ripser_plusplus.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_rolling_threshold.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_solusdt_250_audit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_solusdt_250_littleblack.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_structural_break_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_volatility_forecast.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_wfo_3way.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_wfo_abstain.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/tda_wfo_audit.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/temporal_safe_patterns_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/three_bar_alignment_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/three_bar_pattern_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/three_bar_pattern_audit_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/three_factor_hurst_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/three_factor_pattern_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/transaction_cost_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/trend_filter_analysis.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/upload_eurusd_to_clickhouse.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/validate_clickhouse.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/validate_memory_efficiency.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/validate_microstructure_features.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/validate_n_range_bars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/volatility_regime_analysis_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/volatility_regime_audit_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/volume_conditioned_patterns.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/scripts/volume_conditioned_patterns_polars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/test_data/BTCUSDT/BTCUSDT_aggTrades_20250901.csv +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/test_data/ETHUSDT/ETHUSDT_aggTrades_20250901.csv +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/test_data/README.md +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/conftest.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/fixtures/.gitignore +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/fixtures/BTCUSDT-aggTrades-2024-01-01.zip +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_cache_schema_evolution.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_clickhouse.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_clickhouse_integration.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_e2e_optimized.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_edge_cases.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_examples.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_get_n_range_bars.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_get_range_bars_e2e.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_issue_5_reproduction.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_issues_7_8.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_microstructure_features.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_ouroboros.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_polars_only_downstream.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_preflight.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_python_api.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_real_data.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_rust_bindings.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_storage.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_streaming.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/tests/test_validation_presets.py +0 -0
- {rangebar-11.5.0 → rangebar-11.6.0}/uv.lock +0 -0
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# [11.6.0](https://github.com/terrylica/rangebar-py/compare/v11.5.0...v11.6.0) (2026-02-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **core:** add inter-bar microstructure features (Issue [#59](https://github.com/terrylica/rangebar-py/issues/59) Phase 1) ([dd27556](https://github.com/terrylica/rangebar-py/commit/dd275565fbd093b6d5647e51c72548ef4be1e715))
|
|
7
|
+
* **inter-bar:** add inter-bar feature computation (Issue [#59](https://github.com/terrylica/rangebar-py/issues/59)) ([94dbf64](https://github.com/terrylica/rangebar-py/commit/94dbf647f3ba524fb818b4927080afc2fc9b7ea5))
|
|
8
|
+
|
|
1
9
|
# [11.5.0](https://github.com/terrylica/rangebar-py/compare/v11.4.0...v11.5.0) (2026-02-02)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -3430,7 +3430,7 @@ dependencies = [
|
|
|
3430
3430
|
|
|
3431
3431
|
[[package]]
|
|
3432
3432
|
name = "rangebar"
|
|
3433
|
-
version = "11.
|
|
3433
|
+
version = "11.6.0"
|
|
3434
3434
|
dependencies = [
|
|
3435
3435
|
"chrono",
|
|
3436
3436
|
"insta",
|
|
@@ -3452,7 +3452,7 @@ dependencies = [
|
|
|
3452
3452
|
|
|
3453
3453
|
[[package]]
|
|
3454
3454
|
name = "rangebar-batch"
|
|
3455
|
-
version = "11.
|
|
3455
|
+
version = "11.6.0"
|
|
3456
3456
|
dependencies = [
|
|
3457
3457
|
"polars",
|
|
3458
3458
|
"rangebar-core",
|
|
@@ -3464,7 +3464,7 @@ dependencies = [
|
|
|
3464
3464
|
|
|
3465
3465
|
[[package]]
|
|
3466
3466
|
name = "rangebar-cli"
|
|
3467
|
-
version = "11.
|
|
3467
|
+
version = "11.6.0"
|
|
3468
3468
|
dependencies = [
|
|
3469
3469
|
"chrono",
|
|
3470
3470
|
"clap",
|
|
@@ -3489,7 +3489,7 @@ dependencies = [
|
|
|
3489
3489
|
|
|
3490
3490
|
[[package]]
|
|
3491
3491
|
name = "rangebar-config"
|
|
3492
|
-
version = "11.
|
|
3492
|
+
version = "11.6.0"
|
|
3493
3493
|
dependencies = [
|
|
3494
3494
|
"chrono",
|
|
3495
3495
|
"config",
|
|
@@ -3501,7 +3501,7 @@ dependencies = [
|
|
|
3501
3501
|
|
|
3502
3502
|
[[package]]
|
|
3503
3503
|
name = "rangebar-core"
|
|
3504
|
-
version = "11.
|
|
3504
|
+
version = "11.6.0"
|
|
3505
3505
|
dependencies = [
|
|
3506
3506
|
"ahash",
|
|
3507
3507
|
"arrow",
|
|
@@ -3518,7 +3518,7 @@ dependencies = [
|
|
|
3518
3518
|
|
|
3519
3519
|
[[package]]
|
|
3520
3520
|
name = "rangebar-io"
|
|
3521
|
-
version = "11.
|
|
3521
|
+
version = "11.6.0"
|
|
3522
3522
|
dependencies = [
|
|
3523
3523
|
"polars",
|
|
3524
3524
|
"rangebar-core",
|
|
@@ -3528,7 +3528,7 @@ dependencies = [
|
|
|
3528
3528
|
|
|
3529
3529
|
[[package]]
|
|
3530
3530
|
name = "rangebar-providers"
|
|
3531
|
-
version = "11.
|
|
3531
|
+
version = "11.6.0"
|
|
3532
3532
|
dependencies = [
|
|
3533
3533
|
"chrono",
|
|
3534
3534
|
"csv",
|
|
@@ -3548,7 +3548,7 @@ dependencies = [
|
|
|
3548
3548
|
|
|
3549
3549
|
[[package]]
|
|
3550
3550
|
name = "rangebar-py"
|
|
3551
|
-
version = "11.
|
|
3551
|
+
version = "11.6.0"
|
|
3552
3552
|
dependencies = [
|
|
3553
3553
|
"arrow",
|
|
3554
3554
|
"arrow-array",
|
|
@@ -3567,7 +3567,7 @@ dependencies = [
|
|
|
3567
3567
|
|
|
3568
3568
|
[[package]]
|
|
3569
3569
|
name = "rangebar-streaming"
|
|
3570
|
-
version = "11.
|
|
3570
|
+
version = "11.6.0"
|
|
3571
3571
|
dependencies = [
|
|
3572
3572
|
"async-trait",
|
|
3573
3573
|
"chrono",
|
|
@@ -10,7 +10,7 @@ resolver = "2"
|
|
|
10
10
|
[workspace.package]
|
|
11
11
|
# CRITICAL: Prevent crates.io publishing - this is a PyPI-only project
|
|
12
12
|
publish = false
|
|
13
|
-
version = "11.
|
|
13
|
+
version = "11.6.0"
|
|
14
14
|
authors = ["Terry Li <terry@eonlabs.com>"]
|
|
15
15
|
categories = ["algorithms", "data-structures", "finance"]
|
|
16
16
|
documentation = "https://docs.rs/rangebar"
|
|
@@ -97,7 +97,7 @@ criterion = { version = "0.5", features = ["html_reports"] }
|
|
|
97
97
|
|
|
98
98
|
[package]
|
|
99
99
|
name = "rangebar-py"
|
|
100
|
-
version = "11.
|
|
100
|
+
version = "11.6.0"
|
|
101
101
|
edition = "2021"
|
|
102
102
|
authors = ["Terry Li"]
|
|
103
103
|
license = "MIT"
|
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
# RESUME.md - Session Context
|
|
2
2
|
|
|
3
|
-
**Last Updated**: 2026-02-
|
|
3
|
+
**Last Updated**: 2026-02-02
|
|
4
4
|
**Purpose**: Quick context for continuing work in future sessions
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
## Current
|
|
8
|
+
## Current Work: Issue #59 Inter-Bar Features
|
|
9
9
|
|
|
10
|
-
###
|
|
10
|
+
### Status: Phase 1 COMPLETE (Rust Core)
|
|
11
|
+
|
|
12
|
+
**Objective**: Enrich 1000 dbps bars with microstructure features computed from raw aggTrades in a lookback window BEFORE each bar opens.
|
|
13
|
+
|
|
14
|
+
**Plan**: [docs/plans/issue-59-inter-bar-features.md](/docs/plans/issue-59-inter-bar-features.md)
|
|
15
|
+
|
|
16
|
+
### Completed (Phase 1)
|
|
17
|
+
|
|
18
|
+
- Created `crates/rangebar-core/src/interbar.rs` - 16 inter-bar features
|
|
19
|
+
- Added 16 `Option<T>` fields to `RangeBar` struct
|
|
20
|
+
- All 222 workspace tests pass
|
|
21
|
+
- Academic validation: Kyle (1985), Goh-Barabási (2008), Garman-Klass (1980), Bandt-Pompe (2002)
|
|
22
|
+
|
|
23
|
+
### Remaining Phases
|
|
24
|
+
|
|
25
|
+
| Phase | Task | Status |
|
|
26
|
+
| ----- | ------------------------------------------------------ | ------ |
|
|
27
|
+
| 2 | Integrate `TradeHistory` into `RangeBarProcessor` | TODO |
|
|
28
|
+
| 3 | Update PyO3 bindings to expose features to Python | TODO |
|
|
29
|
+
| 4 | Update Python type hints, constants, ClickHouse schema | TODO |
|
|
30
|
+
|
|
31
|
+
### Key Files
|
|
32
|
+
|
|
33
|
+
| File | Purpose |
|
|
34
|
+
| --------------------------------------- | ---------------------------------- |
|
|
35
|
+
| `crates/rangebar-core/src/interbar.rs` | Core feature computation (NEW) |
|
|
36
|
+
| `crates/rangebar-core/src/types.rs` | RangeBar struct with 16 new fields |
|
|
37
|
+
| `crates/rangebar-core/src/processor.rs` | Needs TradeHistory integration |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Pattern Research: COMPLETE
|
|
11
42
|
|
|
12
43
|
**Finding**: ZERO ODD robust predictive patterns exist in range bar data.
|
|
13
44
|
|
|
@@ -51,32 +82,12 @@ After exhaustive testing across **10 research approaches**, all were invalidated
|
|
|
51
82
|
|
|
52
83
|
### Documentation
|
|
53
84
|
|
|
54
|
-
| Document |
|
|
55
|
-
| ------------------------------------------------ |
|
|
56
|
-
| `docs/research/INDEX.md` |
|
|
57
|
-
| `docs/research/pattern-research-summary.md` |
|
|
58
|
-
| `docs/research/adversarial-audit-methodology.md` |
|
|
59
|
-
|
|
60
|
-
### Scripts
|
|
61
|
-
|
|
62
|
-
42+ research scripts in `scripts/`:
|
|
63
|
-
|
|
64
|
-
- Pattern analysis: `*_patterns*.py` (INVALIDATED)
|
|
65
|
-
- TDA research: `tda_*.py` (INVALIDATED)
|
|
66
|
-
- Audit scripts: `*_audit*.py` (methodology reference)
|
|
67
|
-
- Cache population: `fill_gaps_*.py`
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## GitHub Issues
|
|
72
|
-
|
|
73
|
-
| Issue | Title | Status |
|
|
74
|
-
| ----- | ------------------------------------------- | ------ |
|
|
75
|
-
| #57 | Research Complete: ZERO ODD Robust Patterns | CLOSED |
|
|
76
|
-
| #56 | TDA Structural Break Detection | CLOSED |
|
|
77
|
-
| #52 | Market Regime Filter | CLOSED |
|
|
78
|
-
| #54 | Volatility Regime Filter | CLOSED |
|
|
79
|
-
| #55 | Multi-Threshold Pattern Confirmation | CLOSED |
|
|
85
|
+
| Document | Purpose |
|
|
86
|
+
| ------------------------------------------------ | ------------------------ |
|
|
87
|
+
| `docs/research/INDEX.md` | Navigation index |
|
|
88
|
+
| `docs/research/pattern-research-summary.md` | Master findings |
|
|
89
|
+
| `docs/research/adversarial-audit-methodology.md` | Reusable audit framework |
|
|
90
|
+
| `docs/plans/issue-59-inter-bar-features.md` | Inter-bar features plan |
|
|
80
91
|
|
|
81
92
|
---
|
|
82
93
|
|
|
@@ -92,19 +103,6 @@ These approaches have been definitively invalidated:
|
|
|
92
103
|
|
|
93
104
|
---
|
|
94
105
|
|
|
95
|
-
## Unexplored Directions
|
|
96
|
-
|
|
97
|
-
These remain unexplored but are **operational** (not predictive):
|
|
98
|
-
|
|
99
|
-
| Direction | Rationale | Status |
|
|
100
|
-
| ----------------- | ---------------------------------------------- | ---------- |
|
|
101
|
-
| Execution quality | Bar timing for optimal order placement | UNEXPLORED |
|
|
102
|
-
| Market making | Microstructure for spread/inventory management | UNEXPLORED |
|
|
103
|
-
|
|
104
|
-
**Note**: These are not "ODD robust MULTI-FACTOR patterns" as per the encouraged guidance. They are operational use cases that don't require directional prediction.
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
106
|
## Technical Stack
|
|
109
107
|
|
|
110
108
|
- **Python**: 3.13 (REQUIRED, never downgrade)
|
|
@@ -118,23 +116,23 @@ These remain unexplored but are **operational** (not predictive):
|
|
|
118
116
|
|
|
119
117
|
## Session Handoff Notes
|
|
120
118
|
|
|
119
|
+
If continuing Issue #59:
|
|
120
|
+
|
|
121
|
+
1. Phase 1 (Rust core) is complete - 73 tests in interbar.rs pass
|
|
122
|
+
2. Next: Integrate `TradeHistory` into `RangeBarProcessor::process_trade()`
|
|
123
|
+
3. Plan file has detailed pseudocode for Phase 2-4
|
|
124
|
+
|
|
121
125
|
If continuing pattern research:
|
|
122
126
|
|
|
123
127
|
1. **DO NOT** retry invalidated approaches
|
|
124
128
|
2. The methodology is sound - the finding is genuinely negative
|
|
125
129
|
3. 10 approaches exhausted = research is complete
|
|
126
|
-
4. Focus on operational use cases if any research continues
|
|
127
|
-
|
|
128
|
-
If working on other features:
|
|
129
|
-
|
|
130
|
-
1. Range bar generation is production-ready
|
|
131
|
-
2. Microstructure features work correctly
|
|
132
|
-
3. ClickHouse caching is fully operational
|
|
133
130
|
|
|
134
131
|
---
|
|
135
132
|
|
|
136
133
|
## References
|
|
137
134
|
|
|
138
135
|
- Root hub: [CLAUDE.md](/CLAUDE.md)
|
|
136
|
+
- Crates: [crates/CLAUDE.md](/crates/CLAUDE.md)
|
|
139
137
|
- Research index: [docs/research/INDEX.md](/docs/research/INDEX.md)
|
|
140
|
-
-
|
|
138
|
+
- Inter-bar plan: [docs/plans/issue-59-inter-bar-features.md](/docs/plans/issue-59-inter-bar-features.md)
|
|
@@ -68,6 +68,49 @@ rangebar-cli rangebar-batch rangebar-streaming
|
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
|
+
## Inter-Bar Features (Issue #59)
|
|
72
|
+
|
|
73
|
+
**Location**: `rangebar-core/src/interbar.rs`
|
|
74
|
+
|
|
75
|
+
16 features computed from a lookback window of trades BEFORE each bar opens. All fields are `Option<T>` (None when lookback disabled or insufficient data).
|
|
76
|
+
|
|
77
|
+
### Tier 1: Core (7 features)
|
|
78
|
+
|
|
79
|
+
| Feature | Formula | Range |
|
|
80
|
+
| -------------------------- | -------------------------------- | ---------- |
|
|
81
|
+
| `lookback_trade_count` | COUNT(trades) | [0, ∞) |
|
|
82
|
+
| `lookback_ofi` | (buy_vol - sell_vol) / total | [-1, 1] |
|
|
83
|
+
| `lookback_duration_us` | last_ts - first_ts | [0, ∞) |
|
|
84
|
+
| `lookback_intensity` | trade_count / duration_sec | [0, ∞) |
|
|
85
|
+
| `lookback_vwap_raw` | Σ(price×vol) / Σ(vol) | FixedPoint |
|
|
86
|
+
| `lookback_vwap_position` | (vwap - low) / (high - low) | [0, 1] |
|
|
87
|
+
| `lookback_count_imbalance` | (buy_count - sell_count) / total | [-1, 1] |
|
|
88
|
+
|
|
89
|
+
### Tier 2: Statistical (5 features)
|
|
90
|
+
|
|
91
|
+
| Feature | Formula | Range |
|
|
92
|
+
| ---------------------- | -------------------------- | ------- |
|
|
93
|
+
| `lookback_kyle_lambda` | (Δp/p) / (imbalance/vol) | (-∞, ∞) |
|
|
94
|
+
| `lookback_burstiness` | (σ*τ - μ*τ) / (σ*τ + μ*τ) | [-1, 1] |
|
|
95
|
+
| `lookback_volume_skew` | E[(V-μ)³] / σ³ | (-∞, ∞) |
|
|
96
|
+
| `lookback_volume_kurt` | E[(V-μ)⁴] / σ⁴ - 3 | [-2, ∞) |
|
|
97
|
+
| `lookback_price_range` | (high - low) / first_price | [0, ∞) |
|
|
98
|
+
|
|
99
|
+
### Tier 3: Advanced (4 features)
|
|
100
|
+
|
|
101
|
+
| Feature | Formula | Range | Min Trades |
|
|
102
|
+
| ------------------------------ | ---------------------------- | ------ | ---------- |
|
|
103
|
+
| `lookback_kaufman_er` | \|net\| / Σ\|changes\| | [0, 1] | 2 |
|
|
104
|
+
| `lookback_garman_klass_vol` | OHLC volatility | [0, ∞) | 1 |
|
|
105
|
+
| `lookback_hurst` | DFA estimator (soft-clamped) | [0, 1] | 64 |
|
|
106
|
+
| `lookback_permutation_entropy` | Bandt-Pompe m=3 | [0, 1] | 60 |
|
|
107
|
+
|
|
108
|
+
**Academic backing**: Kyle (1985), Goh-Barabási (2008), Garman-Klass (1980), Bandt-Pompe (2002), Peng (1994).
|
|
109
|
+
|
|
110
|
+
**Plan**: [/docs/plans/issue-59-inter-bar-features.md](/docs/plans/issue-59-inter-bar-features.md)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
71
114
|
## Crate Details
|
|
72
115
|
|
|
73
116
|
### Layer 0: Foundation
|
|
@@ -270,6 +270,23 @@ mod tests {
|
|
|
270
270
|
aggression_ratio: 1.5,
|
|
271
271
|
aggregation_density_f64: 10.0,
|
|
272
272
|
turnover_imbalance: 0.142857,
|
|
273
|
+
// Inter-bar features (Issue #59) - test defaults
|
|
274
|
+
lookback_trade_count: None,
|
|
275
|
+
lookback_ofi: None,
|
|
276
|
+
lookback_duration_us: None,
|
|
277
|
+
lookback_intensity: None,
|
|
278
|
+
lookback_vwap_raw: None,
|
|
279
|
+
lookback_vwap_position: None,
|
|
280
|
+
lookback_count_imbalance: None,
|
|
281
|
+
lookback_kyle_lambda: None,
|
|
282
|
+
lookback_burstiness: None,
|
|
283
|
+
lookback_volume_skew: None,
|
|
284
|
+
lookback_volume_kurt: None,
|
|
285
|
+
lookback_price_range: None,
|
|
286
|
+
lookback_kaufman_er: None,
|
|
287
|
+
lookback_garman_klass_vol: None,
|
|
288
|
+
lookback_hurst: None,
|
|
289
|
+
lookback_permutation_entropy: None,
|
|
273
290
|
}
|
|
274
291
|
}
|
|
275
292
|
|