Files
ruflo/plugins/ruflo-market-data/README.md
T
RuFlo 06756fbf70 review(plugins): group C — fix claims that do not match the real CLI/MCP/tools, harden unsafe flows
Verified every CLI flag, MCP tool parameter and neural-trader flag these plugins
tell the model to use against @claude-flow/cli 3.56.5 (--help and MCP schemas) and
neural-trader 2.8.11 (run offline), and fixed what was false:

- intelligence: neural_train needs modelType (no patternType/--pattern-type; CLI
  flag is --pattern), hooks_model-outcome/trajectory-end/pretrain/build-agents/
  explain parameters, mcp tool call -> mcp exec, microlora has no consolidate;
  intelligence-transfer rewritten (hooks_transfer only copies from a local
  project; marketplace is hooks transfer store ..., PINATA_API_KEY/SECRET, PII
  scan + confirmation before publish).
- loop-workers: CronCreate takes {cron,prompt,recurring} and is session-scoped
  (7-day expiry), ScheduleWakeup needs prompt, 270s heartbeat qualified by TTL.
- market-data: candles were routed to the ~11-pattern ruvllm_hnsw router;
  untrusted-feed rules; no order placement.
- neural-trader: many documented flags answer "Unknown command" in 2.8.11; several
  handlers return demo output; backtests/signals use synthetic bars without
  --live; backtest signing now refuses non-live data; live/broker path and
  circuit-breaker claims corrected; signal TTL used a non-existent expiresAt.
- iot-cognitum: pin the fleet CLI instead of @latest; confirmation gates for
  firmware deploy/advance/rollback and fleet delete.
- migrations: confirmation/dry-run/validate gates before migrate up/down.
- music: bearer token only sent to music.cognitum.one; pin cogmusic@0.1.1; token
  never enters the transcript.
- jujutsu: analyze_diff* take a ref, not diff text; gate PR merge/close/create.
- knowledge-graph: align relation weights with kg-extract.
- Removed the invalid post-task --train-neural flag everywhere in these plugins.

Plugin versions bumped (marketplace users only receive changes after a bump):
intelligence 0.4.3, loop-workers 0.3.4, market-data 0.3.4, neural-trader 0.3.5,
iot-cognitum 0.3.3, jujutsu 0.3.4, knowledge-graph 0.3.4, migrations 0.3.4,
music 0.2.4. metaharness reviewed, no change needed.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 11:33:03 -04:00

5.1 KiB

ruflo-market-data

Market data ingestion -- feed normalization, OHLCV vectorization, and candlestick pattern detection (read-only analysis, no order placement).

Overview

Ingests market data from REST APIs and WebSocket feeds, normalizes to OHLCV vectors with consistent scaling, and vectorizes candlestick patterns for similarity search (use ruflo-ruvector for nearest-neighbour search over history; the built-in ruvllm_hnsw_* router holds only about 11 patterns). Detects single-candle (doji, hammer) and multi-candle (engulfing, morning star, head & shoulders) formations with reliability scoring.

Installation

claude --plugin-dir plugins/ruflo-market-data

Agents

Agent Model Role
data-engineer sonnet Ingest market feeds, normalize OHLCV, vectorize candlestick patterns, pattern matching

Skills

Skill Usage Description
market-ingest /market-ingest <symbol> [--source api] Ingest and normalize market data into OHLCV vectors stored by symbol and date
market-pattern /market-pattern <symbol> [--period 1D] Detect and classify candlestick patterns from ingested data

Commands (5 subcommands)

market ingest <symbol> [--period 1D]    # Ingest and normalize OHLCV data
market patterns <symbol>                 # Detect candlestick patterns
market search <pattern-name>             # Search historical pattern occurrences
market history <symbol>                  # Show ingestion history and data coverage
market compare <sym1> <sym2>             # Compare pattern profiles between symbols

OHLCV Normalization

Field Normalization
Open Relative to previous close: (open - prev_close) / prev_close
High Relative to open: (high - open) / open
Low Relative to open: (low - open) / open
Close Relative to open: (close - open) / open
Volume Z-score: (vol - mean_vol) / std_vol

Pattern Library

Pattern Type Candles Reliability
Doji Reversal 1 Medium
Hammer Reversal 1 Medium-High
Engulfing Reversal 2 High
Morning/Evening Star Reversal 3 High
Three White Soldiers Continuation 3 High
Head & Shoulders Reversal 5-7 Very High
Double Top/Bottom Reversal Variable High

Each pattern is encoded as a 64-dimension padded vector.

Compatibility

  • CLI: pinned to @claude-flow/cli v3.6 major+minor.
  • Verification: bash plugins/ruflo-market-data/scripts/smoke.sh is the contract.

Namespace coordination

This plugin owns two AgentDB namespaces (kebab-case, follows the convention from ruflo-agentdb ADR-0001 §"Namespace convention"):

  • market-data — normalized OHLCV vectors per symbol+date
  • market-patterns — detected candlestick patterns with reliability scores

Both accessed via memory_* (namespace-routed). Reserved namespaces (pattern, claude-memories, default) MUST NOT be shadowed.

Routing note: Earlier versions of these skills used agentdb_hierarchical-* and agentdb_pattern-* with namespace arguments — those tool families route by tier/ReasoningBank and ignore namespace strings. ADR-0001 fixed the skills to use memory_* for namespaced reads/writes.

Verification

bash plugins/ruflo-market-data/scripts/smoke.sh
# Expected: "11 passed, 0 failed"

Architecture Decisions

  • ruflo-agentdb — namespace convention owner; defines the routing rules ADR-0001 fixes violations of
  • ruflo-neural-trader -- Consumes market patterns as strategy signals
  • ruflo-ruvector -- HNSW indexing engine for nearest-neighbour search over candle windows
  • ruflo-observability -- Data feed health and ingestion latency dashboards

License

MIT

As a mod

This plugin ships a function-hook mod (ADR-445, hooks/register.ts). It makes no network call, spawns no process and makes no model call.

  • Guard (tighten-only, on by default): Refuses writes to a market* namespace (memory_store, agentdb_pattern-store, agentdb_hierarchical-store, ruvllm_hnsw_add) that hold a key or token, or a feed URL with a credential in its query string or as user:pass@host. Other namespaces are untouched. A refusal never echoes the secret.
  • /market-mod: status, recent, tools (which of this plugin's tools are connected) and scan <text> (would the guard refuse it). Answered locally.
  • Status file: .claude-flow/market-mod/status.json ({version: 1, updatedMs, guard, calls, total, blocked, recent}, counters only, never tool input), written at session start and after every call to this plugin's tools.

Options (userConfig): guard (on).

Test it: claude plugin validate plugins/ruflo-market-data, claude plugin test plugins/ruflo-market-data, bash plugins/ruflo-market-data/scripts/smoke.sh.