Skip to content

Design top-down source-fib projection review before nested fibs #30

@JohnCCarter

Description

@JohnCCarter

Purpose

Define the next labeling/review-tool design step for the BTC-first Fibonacci research workflow.

We have agreed that the active first research track should not immediately introduce nested lower-timeframe fibs. First, the tool must support a clean top-down projection workflow:

Human 1M source fib
→ project same fib levels down to 1W / 1D / 4H
→ review how lower-timeframe candles interact with the higher-timeframe levels

Nested fibs inside the 1M/1W range are a later research track after this first projection workflow is verified.


Core decision

Separate the workflow into three concepts:

  1. Source fib

    • Human-drawn fib on a higher timeframe, initially BTC/USD 1M.
    • This is the source of truth.
  2. Projected review

    • The source fib’s price levels are projected onto lower chart timeframes.
    • Example: 1M levels shown on 1W, 1D, and 4H candles.
    • Machine logic only labels candle interaction with those projected levels, and treats every configured level equally (no prioritized levels).
  3. Nested fibs

    • Local lower-timeframe fibs inside the higher-timeframe range.
    • This is intentionally deferred until source-fib projection is stable and reviewed.

Active phase: source-fib projection only

For the active phase, the tool should support:

BTC/USD 1M source fib
→ projected to 1W
→ projected to 1D
→ projected to 4H

The user should draw the fib once on 1M. When switching to 1W, 1D, or 4H, the tool should not require a new fib. It should read the saved 1M fib and render/project the same price levels onto the lower timeframe chart.


Prerequisites

  • BTC/USD 1M source facit already exists — 9 log-scale monthly fibs under data/labels/human_fib/bitfinex/BTC-USD/1M/. The projection workflow consumes those as the locked source; no new 1M fib needs to be drawn for this issue.
  • Lower-timeframe candle caches are present1W, 1D, and 4H raw caches exist under data/raw/bitfinex/BTC-USD/ (including a deep 4h/limit_20000.csv), so 1M → 1W/1D/4H projection can run offline. Re-drawing 1W/1D/4H human facit is a separate protocol track and is not required for projection review.

Levels model (no machine bias)

All configured fib levels are equally event-capable. The machine must not treat any level (including 0.5 or 0.618) as inherently more important.

  • event_levels = all configured levels. Every level can generate events.
  • boundary_levels = [0, 1] — the range edges (anchor_b / anchor_a). These are boundary levels, not internal retracement levels, but they remain event-capable.
  • retracement_levels = [0.382, 0.5, 0.618, 0.786] — the internal levels.
  • human_highlights = presentation/review only. Optional visual annotations (e.g. a zone from 0.5 to 0.618) created in the labeling tool and displayed in the review tool. They may drive filtering, toggling, and visual focus, but must never affect event detection, outcome logic, sampling, or level importance.

There is no primary_active_levels, no "golden zone" machine logic, and no prioritized levels in the data.

Protocol-cleanup note. The active protocol previously defined primary_active_levels: [0.5, 0.618] as a golden-zone review-sampling focus (in config/*.yaml, core/config.py, research/human_review_pack.py, and the protocol docs). Per Addendum 2 this is retired in favor of human_highlights. Removing primary_active_levels from configs, schema, review sampling, and docs — and regenerating the 1M review pack without sampling bias — is part of this issue's protocol cleanup.


Required metadata

Human fib / projected event records must preserve enough context to avoid ambiguity:

{
  "source_fib_id": "fib_BTC-USD_1M_...",
  "source_tf": "1M",
  "chart_tf": "4h",
  "projected_from": "1M",
  "scale_mode": "log",
  "levels_profile": "tradingview_log_chamoun",
  "levels": [0, 0.382, 0.5, 0.618, 0.786, 1],
  "event_levels": [0, 0.382, 0.5, 0.618, 0.786, 1],
  "boundary_levels": [0, 1],
  "retracement_levels": [0.382, 0.5, 0.618, 0.786],
  "human_highlights": []
}

human_highlights is optional and presentation-only. Example of a populated highlight (does not change detection):

"human_highlights": [
  {
    "kind": "zone",
    "from": 0.5,
    "to": 0.618,
    "note": "visual review focus only — does not affect event detection"
  }
]

Schema naming note. Prefer the existing persisted schema fields where possible:

fib_id                  (persisted source-fib id)
projected_from_timeframe (persisted source/HTF timeframe)
timeframe               (persisted chart/LTF timeframe)

source_fib_id, source_tf, projected_from, and chart_tf above may be used as review-facing aliases if they make the review tool clearer, but do not introduce a second persistent vocabulary without an explicit schema decision. (source_tf and projected_from are the same value.)

Active BTC-first profile (matches the repo's tradingview_log_chamoun profile):

levels_profile = tradingview_log_chamoun
scale_mode     = log
levels         = [0, 0.382, 0.5, 0.618, 0.786, 1]
boundary_levels    = [0, 1]
retracement_levels = [0.382, 0.5, 0.618, 0.786]
event_levels       = all levels (no prioritization)
human_highlights   = presentation/review only
no 0.236

Legacy fibs that use 0.236 and/or linear scale belong to a separate profile and must not be mixed into tradingview_log_chamoun.


Review tool behavior

The review view should clearly show:

SOURCE FIB:
1M H→L or L→H

CURRENT CHART:
1W / 1D / 4H

PROJECTED LEVELS (all event-capable):
1M 0       (boundary)
1M 0.382
1M 0.5
1M 0.618
1M 0.786
1M 1       (boundary)

If the human added highlights, the review tool may visually mark them (e.g. a 0.5–0.618 zone) for review focus only. Highlights change presentation, never detection — and the machine still emits events on every level equally.

Events should be named with full context, for example:

1M 0.5 touched by 4H candle
1M 0.618 crossed by 1D candle
1M 0.382 touched by 4H candle
1M 1 touched by 1D candle

Avoid ambiguous labels such as only:

0.5 touch

Every event must make clear:

  • which fib the level comes from
  • which timeframe the fib was drawn on
  • which chart timeframe is being reviewed
  • which candle timeframe produced the interaction

Any "zone"-level summary in the review (e.g. "candles inside the 0.5–0.618 highlighted zone") is a presentation grouping derived from human_highlights only — it is not a separate machine event type and carries no priority.


Explicitly deferred: nested fibs

Do not implement nested lower-timeframe fibs as part of this issue.

Nested fibs should later use explicit parent metadata, for example:

{
  "fib_id": "fib_BTC-USD_1W_...",
  "source_tf": "1W",
  "parent_fib_id": "fib_BTC-USD_1M_...",
  "parent_source_tf": "1M",
  "nested_inside": "1M_range"
}

But this belongs to a later phase only after 1M projection is verified.


Acceptance criteria

  • Tool can load a human 1M source fib and project its levels onto 1W / 1D / 4H charts.
  • Review view clearly identifies source_tf, chart_tf, and projected_from.
  • Events preserve full context: source fib, source timeframe, chart timeframe, ratio, price, relation.
  • All configured levels (0, 0.382, 0.5, 0.618, 0.786, 1) are event-capable; the machine applies no priority or bias between them.
  • 0 and 1 are recorded as boundary levels (range edges), not internal retracement levels, while remaining event-capable.
  • human_highlights affect presentation/review only (filtering, toggling, visual focus) and never event detection, outcome logic, sampling, or level importance.
  • primary_active_levels is removed from configs, schema, review sampling, and docs (Addendum 2 cleanup); the 1M review pack is regenerated without golden-zone sampling bias.
  • Active profile is tradingview_log_chamoun (scale_mode = log, no 0.236); legacy 0.236 / linear fibs are kept under a separate profile and not mixed in.
  • No nested fib implementation in this issue.
  • No auto-fib.
  • No trading logic.
  • No edge claims.
  • Human fib remains source of truth.

Research guardrail

This issue exists to keep the first track clean:

1M source fib → lower-TF candle interaction review

Do not mix in the later track:

1M fib + 1W nested fib + 1D nested fib + 4H events

until the first track has been visually reviewed and approved.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions