Files
QuanTAlib/lib/reversals/pivotfib/Pivotfib.md
T

4.8 KiB
Raw Blame History

PIVOTFIB: Fibonacci Pivot Points

Fibonacci pivots project support and resistance from the golden ratio, blending numerology with price structure.

Property Value
Category Reversal
Inputs OHLCV bar (TBar)
Parameters None
Outputs Single series (PIVOTFIB)
Output range Varies (see docs)
Warmup 2 bars
PineScript pivotfib.pine
  • Fibonacci Pivot Points apply Fibonacci retracement ratios (38.2%, 61.8%, 100%) to the standard pivot point formula.
  • No configurable parameters; computation is stateless per bar.
  • Validated against TA-Lib, Skender, and Tulip reference implementations where available.

Overview

Fibonacci Pivot Points apply Fibonacci retracement ratios (38.2%, 61.8%, 100%) to the standard pivot point formula. The central pivot (PP) uses the classic HLC/3 calculation, while support and resistance levels are derived by adding or subtracting Fibonacci proportions of the previous bar's trading range.

Origin and Sources

  • Concept: Adaptation of Leonardo Fibonacci's ratios (derived from the Fibonacci sequence) to traditional pivot point analysis
  • Foundation: Standard pivot points combined with Fibonacci retracement levels (0.382, 0.618, 1.000)

Formula

Using previous bar's High (H), Low (L), Close (C):

PP    = (H + L + C) / 3
range = H - L

R1 = PP + 0.382 × range       S1 = PP - 0.382 × range
R2 = PP + 0.618 × range       S2 = PP - 0.618 × range
R3 = PP + 1.000 × range       S3 = PP - 1.000 × range

Known Values Example

For H = 110, L = 90, C = 100:

  • PP = 100.0, range = 20
  • R1 = 107.64, S1 = 92.36
  • R2 = 112.36, S2 = 87.64
  • R3 = 120.00, S3 = 80.00

Key Properties

  • Symmetry: R_n - PP = PP - S_n for all levels
  • Level ordering: S3 < S2 < S1 < PP < R1 < R2 < R3 (when range > 0)
  • Fibonacci ratios: Distances from PP are proportional to 0.382, 0.618, and 1.000 of the range
  • Golden ratio relationship: 0.618 ≈ φ - 1, where φ = (1 + √5) / 2; 0.382 = 1 - 0.618

Usage

// Streaming
var fib = new Pivotfib();
var result = fib.Update(bar);
double pp = fib.PP;
double r1 = fib.R1;  // 38.2% resistance
double r2 = fib.R2;  // 61.8% resistance
double r3 = fib.R3;  // 100% resistance
double s1 = fib.S1;  // 38.2% support
double s2 = fib.S2;  // 61.8% support
double s3 = fib.S3;  // 100% support

// Batch
var results = Pivotfib.Batch(bars);

// All 7 levels at once
Pivotfib.BatchAll(high, low, close, ppOut, r1Out, s1Out, r2Out, s2Out, r3Out, s3Out);

Comparison with Other Pivot Variants

Variant R/S Formula Levels Ratios Used
PIVOT (Classic) Arithmetic from PP 7 1×, 2× range
PIVOTFIB Fibonacci × range 7 0.382, 0.618, 1.000
PIVOTCAM (Camarilla) Close ± ratio × range 9 1.1/12 series
PIVOTEXT (Extended) Arithmetic extended 11 1×–4× range
PIVOTDEM (DeMark) Conditional X/4 3 Direction-based

Performance Profile

Operation Count (Streaming Mode)

PivotFib computes PP and 6 Fibonacci S/R levels from previous bar's HLC — O(1) pure arithmetic.

Operation Count Cost (cycles) Subtotal
Store prev bar HLC 3 1 cy ~3 cy
PP = (H + L + C) / 3 1 2 cy ~2 cy
range = H - L 1 1 cy ~1 cy
R1/S1 via FMA (0.382 * range) 2 1 cy ~2 cy
R2/S2 via FMA (0.618 * range) 2 1 cy ~2 cy
R3/S3 = PP +/- range 2 1 cy ~2 cy
NaN guard + state update 1 2 cy ~2 cy
Total O(1) ~14 cy

Pure O(1) arithmetic on previous-bar data. Fibonacci multipliers 0.382 and 0.618 are precomputed constants; FMA fuses multiply-add into a single instruction.

Batch Mode (SIMD Analysis)

Operation Vectorizable? Notes
PP computation Yes Vector (H+L+C)/3 across all bars
Range calculation Yes Vector subtract H-L
Fibonacci level projection Yes FMA with broadcast constants 0.382, 0.618
All 7 output spans Yes Full SIMD pass — no data dependencies

Excellent SIMD candidate — all 7 output levels are independent. BatchAll span overload processes 4 bars per AVX2 cycle. Expected 4× throughput vs scalar.

Implementation Details

  • WarmupPeriod: 2 bars (need previous bar's HLC)
  • Parameters: None
  • Outputs: 7 (PP, R1, R2, R3, S1, S2, S3)
  • Input: TBar (OHLCV)
  • Complexity: O(1) per bar
  • Uses FMA: Math.FusedMultiplyAdd for R1/S1/R2/S2 computations