Kicking - bull/bear determined by longer marubozu
A variation of the kicking pattern.
Visual Example

Synthetic ideal per library logic. Generated 2026-06-25 IST via docs/generate_all_previews.py (reproducible; maps to core Next<T> implementation).
Description
The Kicking - bull/bear determined by longer marubozu indicator is a technical analysis tool that a variation of the kicking pattern.
This indicator is primarily used for identifying key market conditions. It provides a robust signal that can be easily integrated into both simple strategies and more complex machine learning feature pipelines. Compared to its alternatives, it offers a distinct balance of responsiveness and stability.
Traders often combine this with other metrics to confirm signals and avoid false positives during sideways market regimes. It remains a standard tool for systematic trading models.
Focuses on the relative strength of the marubozus.
QuantWave implements this indicator via the universal Next<T> trait, guaranteeing bit-identical results between Rust streaming, Python streaming, and Polars batch (.ta() / map_batches) surfaces.
Formula / Specification
Recognition Rules (TA-Lib-compatible, CDLKICKINGBYLENGTH in quantwave-core/src/indicators/pattern.rs):
- Stateless candlestick pattern evaluated on OHLC windows.
- Returns a signed signal (+100 bullish, −100 bearish, 0 none) on the completion bar.
- Exact threshold geometry (body ratios, gap requirements, shadow lengths) matches the TA-Lib reference implementation wrapped via
talib_cdl!inquantwave-core/src/indicators/pattern.rs. - Validate against
quantwave-core/tests/gold_standard/vectors where present.
Parameters
| Parameter | Default | Description |
|---|---|---|
| (none) | — | No tunable parameters for this detector. |
Usage Examples
Streaming (Rust)
use quantwave_core::indicators::CDLKICKINGBYLENGTH;
use quantwave_core::traits::Next;
let mut det = CDLKICKINGBYLENGTH::new();
for (o, h, l, c) in &ohlcv {
let sig = det.next((o, h, l, c));
}
Streaming (Python)
from quantwave import CDLKICKINGBYLENGTH
det = CDLKICKINGBYLENGTH()
for o, h, l, c in ohlcv:
sig = det.next((o, h, l, c))
Polars Batch (Python)
import polars as pl
import quantwave as qw
def apply_kicking_bull_bear_determined_by_longer_marubozu(series: pl.Series) -> pl.Series:
ind = qw.CDLKICKINGBYLENGTH(14)
return pl.Series([ind.next(float(v)) for v in series.to_list()])
df = (
pl.read_csv('ohlcv.csv')
.lazy()
.with_columns(
pl.col("close").map_batches(apply_kicking_bull_bear_determined_by_longer_marubozu, return_dtype=pl.Float64).alias("kicking_bull_bear_determined_by_longer_marubozu")
)
.collect()
)
All surfaces are bit-identical via the single Next<T> implementation and proptests.
Edge Cases & Limitations
- Requires sufficient complete OHLC bars; early bars yield no signal.
- False positives are common in sideways markets — gate with trend or structure filters.
- Pattern semantics follow TA-Lib body/shadow rules; literature variants may differ.
- Signed output (+/−/0) should be consumed as events, not continuous features without encoding.
- Combine with volume expansion or higher-timeframe confirmation for production use.
- No look-ahead bias; signal is known only after the pattern window closes.
Boundary Behavior
| Condition | Behavior |
|---|---|
| Warm-up | Pattern functions emit 0 (no pattern) until enough bars exist. |
| period > len | Short series returns all zeros (no pattern detected). |
| NaN inputs | Bars with NaN OHLC are treated as no pattern (0). |
| Invalid params | N/A for most candlestick patterns. |
| Empty data | Empty input returns an empty integer series. |
Related Indicators & See Also
Sources & References
Primary Source: https://www.investopedia.com/articles/active-trading/062315/using-bullish-candlestick-patterns-buy-stocks.asp
Implementation: quantwave-core/src/indicators/pattern.rs (CDLKICKINGBYLENGTH / CDLKICKINGBYLENGTH_METADATA).
Pattern reference: TA-Lib CDL family via talib_cdl! in pattern.rs. Nison (1991) cited for psychology only — no duplicated boilerplate.
Parity: quantwave-core/tests/gold_standard/cdlkickingbylength.json
Provenance: Standards bulk upgrade 2026-06-25 IST — see docs/DOCUMENTATION_STANDARDS.md.