From 11727ab0d5c92a5ff1ae159dd27a46a09e2f08d2 Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 18:01:16 +0800 Subject: [PATCH 1/6] feat: independent backtrader strategy-authoring agent runtime (P0) Offline-first, deterministic runtime for authoring and controlled backtesting of Backtrader strategies. Layers: - Python runtime (src/backtrader_agent): typed CLI, opaque root registry, immutable SHA-256 dataset CAS with six offline adapters, canonical StrategySpec, package-owned corpus snapshot + 14 current-fork scaffolds, import-free AST/security validator, hash-bound apply/run approvals, fixed-profile child-process runner, session hash chain with recovery, independence audit, and create-only native adapter installer. - Native host adapters (claude-code, codex, opencode, openclaw). - References, dev scripts, and the typed test suite + acceptance matrix. Includes the P0 hardening pass: data/session/runs/engine listing commands, doctor engine detection, scripts/build_manifest.py for exact manifest regeneration, and a portable engine-root resolver so the 14-cell acceptance matrix reproduces in a fresh checkout without manual env setup. --- SKILL.md | 66 + adapters/claude-code/backtrader-agent.md | 14 + adapters/codex/backtrader-agent.toml | 12 + adapters/openclaw/workspace/AGENTS.md | 9 + adapters/openclaw/workspace/IDENTITY.md | 7 + adapters/openclaw/workspace/README.md | 21 + .../registration-manifest.template.json | 10 + adapters/opencode/backtrader-agent.md | 14 + customize.toml | 7 + manifest.json | 105 + pyproject.toml | 46 + references/current-fork-rules.md | 31 + references/security-and-approval.md | 38 + references/workflow.md | 21 + scripts/audit_independence.py | 10 + scripts/build_manifest.py | 124 + scripts/doctor.py | 10 + scripts/run_acceptance.py | 367 + src/backtrader_agent/__init__.py | 7 + src/backtrader_agent/__main__.py | 4 + src/backtrader_agent/audit.py | 196 + src/backtrader_agent/canonical.py | 114 + src/backtrader_agent/catalog.py | 419 + src/backtrader_agent/changes.py | 765 + src/backtrader_agent/cli.py | 535 + src/backtrader_agent/contracts.py | 268 + src/backtrader_agent/data.py | 649 + src/backtrader_agent/doctor.py | 140 + src/backtrader_agent/engines.py | 41 + src/backtrader_agent/errors.py | 33 + src/backtrader_agent/installer.py | 186 + src/backtrader_agent/repair.py | 97 + src/backtrader_agent/report.py | 172 + .../adapters/claude-code/backtrader-agent.md | 14 + .../adapters/codex/backtrader-agent.toml | 12 + .../adapters/openclaw/workspace/AGENTS.md | 9 + .../adapters/openclaw/workspace/IDENTITY.md | 7 + .../adapters/openclaw/workspace/README.md | 21 + .../registration-manifest.template.json | 10 + .../adapters/opencode/backtrader-agent.md | 14 + .../resources/agent-payload.md | 66 + .../resources/catalog/corpus-manifest.json | 12734 ++++++++++++++++ .../resources/catalog/corpus-v1.jsonl | 1156 ++ .../resources/catalog/snapshot-metadata.json | 25 + .../resources/catalog/snapshot.jsonl | 14 + .../agent-session-manifest-v1.schema.json | 78 + .../artifact-manifest-v1.schema.json | 50 + .../contracts/corpus-manifest-v1.schema.json | 49 + .../contracts/dataset-manifest-v1.schema.json | 189 + .../contracts/run-manifest-v1.schema.json | 53 + .../contracts/run-result-v1.schema.json | 78 + .../contracts/strategy-spec-v1.schema.json | 124 + .../validation-report-v1.schema.json | 57 + .../resources/distribution-manifest.json | 57 + .../policies/comparison-profile-v1.json | 40 + src/backtrader_agent/roots.py | 116 + src/backtrader_agent/runner.py | 892 ++ src/backtrader_agent/scaffold.py | 574 + src/backtrader_agent/sessions.py | 304 + src/backtrader_agent/tokens.py | 635 + src/backtrader_agent/validator.py | 624 + tests/conftest.py | 7 + tests/helpers.py | 233 + tests/test_catalog_snapshot.py | 121 + tests/test_cli_extended_actions.py | 183 + tests/test_cli_workflow.py | 258 + tests/test_data_cas.py | 154 + tests/test_distribution_contracts.py | 203 + tests/test_run_resume.py | 111 + tests/test_runner_installer_audit.py | 816 + tests/test_scaffold_validator_catalog.py | 101 + tests/test_tokens_changes_sessions.py | 460 + 72 files changed, 25187 insertions(+) create mode 100644 SKILL.md create mode 100644 adapters/claude-code/backtrader-agent.md create mode 100644 adapters/codex/backtrader-agent.toml create mode 100644 adapters/openclaw/workspace/AGENTS.md create mode 100644 adapters/openclaw/workspace/IDENTITY.md create mode 100644 adapters/openclaw/workspace/README.md create mode 100644 adapters/openclaw/workspace/registration-manifest.template.json create mode 100644 adapters/opencode/backtrader-agent.md create mode 100644 customize.toml create mode 100644 manifest.json create mode 100644 pyproject.toml create mode 100644 references/current-fork-rules.md create mode 100644 references/security-and-approval.md create mode 100644 references/workflow.md create mode 100644 scripts/audit_independence.py create mode 100644 scripts/build_manifest.py create mode 100644 scripts/doctor.py create mode 100644 scripts/run_acceptance.py create mode 100644 src/backtrader_agent/__init__.py create mode 100644 src/backtrader_agent/__main__.py create mode 100644 src/backtrader_agent/audit.py create mode 100644 src/backtrader_agent/canonical.py create mode 100644 src/backtrader_agent/catalog.py create mode 100644 src/backtrader_agent/changes.py create mode 100644 src/backtrader_agent/cli.py create mode 100644 src/backtrader_agent/contracts.py create mode 100644 src/backtrader_agent/data.py create mode 100644 src/backtrader_agent/doctor.py create mode 100644 src/backtrader_agent/engines.py create mode 100644 src/backtrader_agent/errors.py create mode 100644 src/backtrader_agent/installer.py create mode 100644 src/backtrader_agent/repair.py create mode 100644 src/backtrader_agent/report.py create mode 100644 src/backtrader_agent/resources/adapters/claude-code/backtrader-agent.md create mode 100644 src/backtrader_agent/resources/adapters/codex/backtrader-agent.toml create mode 100644 src/backtrader_agent/resources/adapters/openclaw/workspace/AGENTS.md create mode 100644 src/backtrader_agent/resources/adapters/openclaw/workspace/IDENTITY.md create mode 100644 src/backtrader_agent/resources/adapters/openclaw/workspace/README.md create mode 100644 src/backtrader_agent/resources/adapters/openclaw/workspace/registration-manifest.template.json create mode 100644 src/backtrader_agent/resources/adapters/opencode/backtrader-agent.md create mode 100644 src/backtrader_agent/resources/agent-payload.md create mode 100644 src/backtrader_agent/resources/catalog/corpus-manifest.json create mode 100644 src/backtrader_agent/resources/catalog/corpus-v1.jsonl create mode 100644 src/backtrader_agent/resources/catalog/snapshot-metadata.json create mode 100644 src/backtrader_agent/resources/catalog/snapshot.jsonl create mode 100644 src/backtrader_agent/resources/contracts/agent-session-manifest-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/artifact-manifest-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/corpus-manifest-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/run-manifest-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/run-result-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json create mode 100644 src/backtrader_agent/resources/contracts/validation-report-v1.schema.json create mode 100644 src/backtrader_agent/resources/distribution-manifest.json create mode 100644 src/backtrader_agent/resources/policies/comparison-profile-v1.json create mode 100644 src/backtrader_agent/roots.py create mode 100644 src/backtrader_agent/runner.py create mode 100644 src/backtrader_agent/scaffold.py create mode 100644 src/backtrader_agent/sessions.py create mode 100644 src/backtrader_agent/tokens.py create mode 100644 src/backtrader_agent/validator.py create mode 100644 tests/conftest.py create mode 100644 tests/helpers.py create mode 100644 tests/test_catalog_snapshot.py create mode 100644 tests/test_cli_extended_actions.py create mode 100644 tests/test_cli_workflow.py create mode 100644 tests/test_data_cas.py create mode 100644 tests/test_distribution_contracts.py create mode 100644 tests/test_run_resume.py create mode 100644 tests/test_runner_installer_audit.py create mode 100644 tests/test_scaffold_validator_catalog.py create mode 100644 tests/test_tokens_changes_sessions.py diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..efe4c0d --- /dev/null +++ b/SKILL.md @@ -0,0 +1,66 @@ +--- +name: backtrader-agent +description: Independent, stateless Backtrader strategy authoring and controlled backtesting agent +--- + +# Backtrader Agent + +This file is the product-owned activation/persona payload. It does not dispatch +to another skill or an MCP server. Native host adapters should load this +product's installed runtime and keep this prompt thin. + +## Identity and boundaries + +You are a Backtrader strategy authoring specialist. Use only the typed +`backtrader-agent` CLI actions and the artifacts they return. Never use hidden +chat memory as workflow state. Never execute arbitrary shell commands, browse +arbitrary files, import candidate strategies in the host process, connect to a +live broker, download data, or promise investment returns. + +The local child-process runner is timeout- and quota-bound but is not an OS +sandbox. Do not claim OS-level or verified network isolation. + +## Menu + +| Code | Intent | Typed route | +| --- | --- | --- | +| DR | Diagnose environment | `doctor` | +| DI | Inspect/register/preview data | `roots`, `data` | +| CS | Search packaged corpus snapshot | `catalog` | +| NW | Create a strategy | `spec`, `catalog`, `draft`, `validate`, `changes`, `run` | +| RV | Review a strategy draft | `validate` | +| BT | Run an approved backtest/test | `run-subject`, `approval`, `run` | +| FX | Repair a failed draft | produce a minimal new draft revision, then revalidate | +| RP | Explain a report | read immutable run result/report artifacts | +| ST | Session status and recovery | `session` | +| HE | Help | `--help` | + +Direct intent routing is allowed. A request such as “register this CSV and +build a strategy” enters NW without showing the menu, but cannot skip dataset +registration, StrategySpec validation, change approval, or independent run +approval. + +## Required workflow + +1. Run doctor and register opaque roots. +2. Inspect and register offline data; retain the DatasetManifest hash. +3. Clarify and validate StrategySpec. Open questions block generation. +4. Search the packaged snapshot and name selected source IDs. +5. Render one of seven archetypes as `single_test` or `python_bundle`. +6. Validate manifest bytes and Python AST. A direct `bt.Strategy` subclass does + not require `super().__init__()` on this fork. Cooperative custom parents or + mixins still follow their MRO. +7. Prepare a confined change manifest. Show exact target paths, preimage hashes, + postimage hashes, and diff. +8. Require explicit apply approval and a change token. Apply idempotently. +9. Revalidate hashes, require separate execution approval and a run token, then + use only the fixed runner profile. +10. Report eleven normalized metrics, provenance, diagnostics, and limitations. +11. Persist every legal state transition in the session hash chain. Recover only + a verified prefix; never guess past damage. + +## Error handling + +Return stable `BTAG-*` diagnostics without secrets, absolute target paths, or +full tracebacks. A failed or stale token requires a new validation/approval +cycle. Completed, cancelled, and archived sessions never silently reactivate. diff --git a/adapters/claude-code/backtrader-agent.md b/adapters/claude-code/backtrader-agent.md new file mode 100644 index 0000000..72d020f --- /dev/null +++ b/adapters/claude-code/backtrader-agent.md @@ -0,0 +1,14 @@ +--- +name: backtrader-agent +description: Independent Backtrader strategy authoring, validation, and controlled-run agent +tools: Read, Bash +--- +This is the Claude Code discovery adapter, not the product runtime. Use the +installed `backtrader-agent` typed CLI and load its product-owned instructions +with `backtrader-agent payload`. +Never run arbitrary commands or import a candidate in the host process. + +When explicitly invoked, first run `backtrader-agent doctor --json`, then +`backtrader-agent payload`. A suitable first request is: “Use the +backtrader-agent subagent to inspect my offline CSV, clarify a StrategySpec, +generate a strategy, and stop at each apply/run approval.” diff --git a/adapters/codex/backtrader-agent.toml b/adapters/codex/backtrader-agent.toml new file mode 100644 index 0000000..745c200 --- /dev/null +++ b/adapters/codex/backtrader-agent.toml @@ -0,0 +1,12 @@ +name = "backtrader-agent" +description = "Independent Backtrader strategy authoring, validation, and controlled-run agent" +developer_instructions = """ +This is the Codex discovery adapter, not the product runtime. Use the installed +backtrader-agent typed CLI and load its product-owned instructions with +`backtrader-agent payload`. Never run +arbitrary commands or import candidate code in the host process. When invoked, +first run `backtrader-agent doctor --json`, then `backtrader-agent payload`. +A suitable first request is: "Spawn the backtrader-agent for my offline CSV, +clarify a StrategySpec, generate a strategy, and stop at each apply/run +approval." +""" diff --git a/adapters/openclaw/workspace/AGENTS.md b/adapters/openclaw/workspace/AGENTS.md new file mode 100644 index 0000000..95df378 --- /dev/null +++ b/adapters/openclaw/workspace/AGENTS.md @@ -0,0 +1,9 @@ +# AGENTS.md + +Act as the Backtrader Agent. Load the installed product-owned instructions with +`backtrader-agent payload`, start with `backtrader-agent doctor --json`, and +route deterministic work through typed runtime actions only. Do not import +candidate strategies in the host process or add raw command shortcuts. + +For the first request, inspect the user's offline CSV, clarify a StrategySpec, +generate a strategy, and stop at each apply/run approval. diff --git a/adapters/openclaw/workspace/IDENTITY.md b/adapters/openclaw/workspace/IDENTITY.md new file mode 100644 index 0000000..d958b7e --- /dev/null +++ b/adapters/openclaw/workspace/IDENTITY.md @@ -0,0 +1,7 @@ +# IDENTITY.md + +- Name: Backtrader Agent +- Product runtime: installed `backtrader_agent` Python distribution +- State model: stateless host plus explicit hash-chained session artifacts +- Scope: offline Backtrader strategy authoring, validation, controlled tests, + backtests, reports, and recovery diff --git a/adapters/openclaw/workspace/README.md b/adapters/openclaw/workspace/README.md new file mode 100644 index 0000000..a93f535 --- /dev/null +++ b/adapters/openclaw/workspace/README.md @@ -0,0 +1,21 @@ +# Backtrader Agent OpenClaw workspace + +This is an OpenClaw-native workspace adapter. It contains no product logic and +is not automatically registered. Install the `backtrader_agent` Python +distribution into the workspace Python environment; the runtime supplies +contracts, data CAS, validation, runner, reporting, and session recovery. + +After replacing the template path with the generated absolute workspace path, +the user explicitly runs: + +```bash +openclaw agents add backtrader-agent \ + --workspace '/absolute/workspace/path' \ + --non-interactive +openclaw agents list +openclaw agent --agent backtrader-agent \ + --message 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +The generated `registration-manifest.json` contains the exact shell-quoted +workspace path. Use that command rather than copying the placeholder above. diff --git a/adapters/openclaw/workspace/registration-manifest.template.json b/adapters/openclaw/workspace/registration-manifest.template.json new file mode 100644 index 0000000..d357a5b --- /dev/null +++ b/adapters/openclaw/workspace/registration-manifest.template.json @@ -0,0 +1,10 @@ +{ + "agent_name": "backtrader-agent", + "automatic_registration": false, + "first_request": "Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.", + "invocation_command": "openclaw agent --agent backtrader-agent --message ''", + "registration_command": "openclaw agents add backtrader-agent --workspace '' --non-interactive", + "schema_version": "openclaw-registration-manifest-v1", + "verification_command": "openclaw agents list", + "workspace": "" +} diff --git a/adapters/opencode/backtrader-agent.md b/adapters/opencode/backtrader-agent.md new file mode 100644 index 0000000..44029dc --- /dev/null +++ b/adapters/opencode/backtrader-agent.md @@ -0,0 +1,14 @@ +--- +description: Independent Backtrader strategy authoring and controlled backtesting agent +mode: primary +temperature: 0.1 +--- +This is the OpenCode discovery adapter, not the product runtime. Use the +installed `backtrader-agent` typed CLI and load its product-owned instructions +with `backtrader-agent payload`. +Never run arbitrary commands or import candidate code in the host process. + +When selected or mentioned as `@backtrader-agent`, first run +`backtrader-agent doctor --json`, then `backtrader-agent payload`. A suitable +first request is: “Inspect my offline CSV, clarify a StrategySpec, generate a +strategy, and stop at each apply/run approval.” diff --git a/customize.toml b/customize.toml new file mode 100644 index 0000000..d816f7c --- /dev/null +++ b/customize.toml @@ -0,0 +1,7 @@ +[agent] +code = "backtrader-agent" +name = "Backtrader Agent" +title = "Independent Backtrader Strategy Development Agent" +icon = "📈" +description = "Offline data registration, strategy scaffolding, validation, controlled execution, reporting, and recovery." +agent_type = "stateless" diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..da5c494 --- /dev/null +++ b/manifest.json @@ -0,0 +1,105 @@ +{ + "compatibility": { + "backtrader": "source fork or compatible installed distribution", + "hosts": [ + "claude-code", + "codex", + "opencode", + "openclaw" + ], + "python": ">=3.8" + }, + "file_count": 83, + "files": { + ".github/workflows/ci.yml": "6302fab404e75c328c498d3262fde2b30532604e65cfc9c8a6357765518cf63c", + ".gitignore": "98ac0ab908af609455bbb67746d9b94458f7b774efb527202326092563bf6bd9", + "CHANGELOG.md": "30e3601b82b87d40f404512b047f042be568c86ddde1a1b03210cee0a0df69b9", + "CONTRIBUTING.md": "bc9a14321635f6e6c3640ffc8110bb19e2965e0ad13f7ade4db5d3928d2f6988", + "IMPLEMENTATION_REPORT.md": "9f11790327e659f2eeb21c4b7e850596a9202eb94643df680c29b4f8766df9ec", + "LICENSE": "378db8314110649fdd9519398a5df044a29d16778507be92acfec025eaac00a2", + "README.md": "fec024581eb6dc17216db5a66f1b42dbebf6054e87ce334af9235f7ae57f50b8", + "SECURITY.md": "c69e0b43cb2c9a3653cfc25b03133cce731ad2c69a341f2ba71ba6b5029fdd25", + "SKILL.md": "020159c8d52bf4fe8365d7c191319ded3fb84102a51bec38cf1c03633aa3fd0f", + "adapters/claude-code/backtrader-agent.md": "f9f8d5cbe128183bbbd669640dc2551730dd204df8354f53dc41a5170fd66fe3", + "adapters/codex/backtrader-agent.toml": "44d09b2c0f0aba6a973f5d064d80a2d504aaa1294f854d72b29e3774589ad977", + "adapters/openclaw/workspace/AGENTS.md": "b621f9f1e8235bc822fd398ef856211631012960e858b175513c9b296f5184e0", + "adapters/openclaw/workspace/IDENTITY.md": "5d54b86c4fa6dc6c59a96b34594be6da8c5d4030122b9854772b2b9c5e4b6646", + "adapters/openclaw/workspace/README.md": "4ff81570814619635312d3409a059c14080d9aecc6a015280106db5bf6e7fa76", + "adapters/openclaw/workspace/registration-manifest.template.json": "d115111aa515dc72ef3493a3fec2890f8e21cfdfa3f0fff0c2e0dcb75c48c0ff", + "adapters/opencode/backtrader-agent.md": "0df3d8745a1c011455fd106444368292319d5bb9b65c22bad4d8cc21778f877a", + "customize.toml": "0269f44ccc6e772131eb6304a31519c2791a9f33f8199ffea1d43521d0e2c454", + "examples/README.md": "9ba770888d0432e0955218aa7275fd094e68e3e87d1e698d9cbd988ee2c3f872", + "examples/data-spec.json": "f4c17999064a8cee343c2787d198415df8e55bc70fa04868db98569410ff3f2a", + "examples/prices.csv": "318139d3c007bab30b644a3b3401688115bdad96c6380242e1a7a0bb174a215d", + "examples/strategy-spec.json": "8b1393d222317e1defffb979b82cc427c09e54a1dd28b702c9ff83ed28bb4376", + "pyproject.toml": "87c58c8a7db93577589aecd6a7f2ca1f0215df742d1b361a50b4057730323b81", + "references/current-fork-rules.md": "a9d16e34d24a64aedf3d0651e2a8de99518559a5a66d1795c52c7833c60404fe", + "references/security-and-approval.md": "b0699049790471b75a96745f6d8d183e3ed62d51f9480cb91424870532722011", + "references/workflow.md": "7acef775a6b424ac5009a5a05512b7a2963b55ef18eae2abe64615928ddbc78b", + "scripts/audit_independence.py": "433ff66492974b4474cdb69cd93274679079ae6daccfa2d07de651b4fe89ee3e", + "scripts/build_manifest.py": "55f6ca9365f02fcd9918e1e9a1b9f42842f0556505c18d3a081a99c977048e6a", + "scripts/doctor.py": "81a4aeb893a1aa4ce8ade2fd1c42fc1e6652342e24a72f12e8cd6830d727d868", + "scripts/run_acceptance.py": "714934101ac1c0b4a583c9e0360a0c35d08ba9808e9aa37aa693859ba34a00aa", + "src/backtrader_agent/__init__.py": "4c10530950b21fc9011a1914b827f1c3e51d47e1d3f7285a2c12dfeaf3a2b368", + "src/backtrader_agent/__main__.py": "307299fda7b77d22c64cb51430ec75e5f59d78e9c948786afb3b2544fe45e4b7", + "src/backtrader_agent/audit.py": "a7f7919e221876578557202baedf54e368dbe4086c7e8ea2694457e1524cc2fe", + "src/backtrader_agent/canonical.py": "30286fa61480f37bea1b540255c08e31f5595ff50677c765c3b3cc99599fcf81", + "src/backtrader_agent/catalog.py": "99b64ec3060a264c6f18324f18f62fb82d85d6c6351e77d8d741cd88db47868d", + "src/backtrader_agent/changes.py": "34f7667368c6308de8a8a89c81732445e3e4975e6b67905aa35061bff86e887d", + "src/backtrader_agent/cli.py": "fe2c4182ebca62af8b66113447c27d0a50b39f48b0f7e1e0406a58703718374f", + "src/backtrader_agent/contracts.py": "eb2257d04a84aa7e128d751329212bb9bd681dbd825b4029142b12b27f493828", + "src/backtrader_agent/data.py": "d395eed7fa638d9de00fc88342ee379ef83999aef832933ac42465daf4f84cfe", + "src/backtrader_agent/doctor.py": "6f3ed4a05974bc91b3ad2536e02de7bdebee270a5c6cdd8f9b7f327f0209c479", + "src/backtrader_agent/engines.py": "a25365922996d1d11f906a671645affee8026e6502b8009042c50d1cf5c11c63", + "src/backtrader_agent/errors.py": "11c0e023897b8308e9fe1b6f212222158bbd79dafca6c386c14ca106832a92ee", + "src/backtrader_agent/installer.py": "f7ea940262cedf7061ce80ddf574b3589cf469b3c285d96368f38016ce4eea80", + "src/backtrader_agent/repair.py": "ebe3eb9dbf91dd5e5d6e1f669a5a3c573087948160a8cd90b5333a3355d973db", + "src/backtrader_agent/report.py": "df36c78fb4076f7baa4f9a551ca8a64b1efe02456f8f8082732103d9ed280d72", + "src/backtrader_agent/resources/adapters/claude-code/backtrader-agent.md": "f9f8d5cbe128183bbbd669640dc2551730dd204df8354f53dc41a5170fd66fe3", + "src/backtrader_agent/resources/adapters/codex/backtrader-agent.toml": "44d09b2c0f0aba6a973f5d064d80a2d504aaa1294f854d72b29e3774589ad977", + "src/backtrader_agent/resources/adapters/openclaw/workspace/AGENTS.md": "b621f9f1e8235bc822fd398ef856211631012960e858b175513c9b296f5184e0", + "src/backtrader_agent/resources/adapters/openclaw/workspace/IDENTITY.md": "5d54b86c4fa6dc6c59a96b34594be6da8c5d4030122b9854772b2b9c5e4b6646", + "src/backtrader_agent/resources/adapters/openclaw/workspace/README.md": "4ff81570814619635312d3409a059c14080d9aecc6a015280106db5bf6e7fa76", + "src/backtrader_agent/resources/adapters/openclaw/workspace/registration-manifest.template.json": "d115111aa515dc72ef3493a3fec2890f8e21cfdfa3f0fff0c2e0dcb75c48c0ff", + "src/backtrader_agent/resources/adapters/opencode/backtrader-agent.md": "0df3d8745a1c011455fd106444368292319d5bb9b65c22bad4d8cc21778f877a", + "src/backtrader_agent/resources/agent-payload.md": "020159c8d52bf4fe8365d7c191319ded3fb84102a51bec38cf1c03633aa3fd0f", + "src/backtrader_agent/resources/catalog/corpus-manifest.json": "e22f2ed453813c48b8aecc3004cd91e3f0f3307a3c404d0c99b70af20727c600", + "src/backtrader_agent/resources/catalog/corpus-v1.jsonl": "30973a10bd434e7935aa5b45577a5d5de0221a58b53a4c00a8124006438c5828", + "src/backtrader_agent/resources/catalog/snapshot-metadata.json": "18fee589b8b7cf22c454c18894ab1e32c60bba78d04fde068a9346698a76505e", + "src/backtrader_agent/resources/catalog/snapshot.jsonl": "8ec3507c78d1d156f179f916225e9f9a11be03f45bf94e22d7bd05c0779cd573", + "src/backtrader_agent/resources/contracts/agent-session-manifest-v1.schema.json": "2438d040d4d292ea8a3c9246e8f7a451279d03f49042c7855d0e042905803f76", + "src/backtrader_agent/resources/contracts/artifact-manifest-v1.schema.json": "b8e7c163d8e08e4d81ad0a8f85340ffc2e4e11947386b7adfd465161a6bd5047", + "src/backtrader_agent/resources/contracts/corpus-manifest-v1.schema.json": "187e500b3c8f597d4443bc81e18ffb2d6b7e3eb91f058d7b5c8396fa997b4e60", + "src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json": "1dee34deb71ca52b30a5d01c9b049981bf5c5a34caf038e269e4b7af871e13b3", + "src/backtrader_agent/resources/contracts/run-manifest-v1.schema.json": "849085349bdf701228ee18cdb9609c7299d6e160064f5f5f69524df1bba76f08", + "src/backtrader_agent/resources/contracts/run-result-v1.schema.json": "369ab5a76a438b63ad4d5c1aa9f3159891fad2657e5bbbb4b873a53f0481d686", + "src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json": "70b46aa52ec32d501571e792aa8035d34235ba51a902405de8c0312e590b0bc7", + "src/backtrader_agent/resources/contracts/validation-report-v1.schema.json": "035ac9a04f6cff0abfcc9156614842332327bf7b861710a9753a3b31174b7366", + "src/backtrader_agent/resources/distribution-manifest.json": "a6650349b14aefd4135601643393d3cfa6126646ccc3fdfb058c0735d12596c4", + "src/backtrader_agent/resources/policies/comparison-profile-v1.json": "877f3a768c695ee848c499defaea482373aba8e8d6d9e0107ad46943d528e970", + "src/backtrader_agent/roots.py": "872a2cc895a798b2926ca41cab17be5863005240c673e61121b100d9444d68e1", + "src/backtrader_agent/runner.py": "ada365d1479f36d1d1fac0b065eee9d67d0a95fa6a023db375babe1fd636d4e8", + "src/backtrader_agent/scaffold.py": "b3c07d02a9ff6a45776af46aa992deb6729a8851d332908a0a7b432ad0a815f7", + "src/backtrader_agent/sessions.py": "7850a1134742f32f904a1608e67a77e504c3a001f4f81a29130ad8fa711d2539", + "src/backtrader_agent/tokens.py": "331847558f8b0ae92ff92f6c9458d1aad16220176d552187f31395ae1d3bd37b", + "src/backtrader_agent/validator.py": "283269b50f73c227c14ef665c8414dce6f4526779d9970eae14e3d640a85add4", + "tests/conftest.py": "e32f8751872738468bec8c6d54ccc0092505189569f40d85b13c1526d6b25f03", + "tests/helpers.py": "c021ce2086731e915a5399d752d886d7ebe8c6c12c127ebb0cc76e5c4c498e21", + "tests/test_catalog_snapshot.py": "84bf3491af63bbd224d33758ce46cd380412177f5da90f7566ac15709d95bdc6", + "tests/test_cli_extended_actions.py": "25eac8bb4aac04ad0d7c3c3133e4733285660cf1e69a014381f393c078ed4b83", + "tests/test_cli_workflow.py": "8ce3804a170e458d395a1f85c15fd6f3ee8c65997031751dabdb3c32039aa272", + "tests/test_data_cas.py": "6b32d1bd0de2186a982adbaa5170153040b253525818e8b94c672f2630523baf", + "tests/test_distribution_contracts.py": "a5b9155d1721dc96746dfb705252deafcb4f75d7cd4234f639ffebec12ee8faa", + "tests/test_run_resume.py": "d430f58757af90c23f9d2d066995caa0a9db19344e72d74bfb760c54f23448c9", + "tests/test_runner_installer_audit.py": "13af6de328f8d339da222fbabc5018535834105a00a043c36c3e1d05edae9715", + "tests/test_scaffold_validator_catalog.py": "b6e5f724da0bb60743c22fd4a36a723b320da3261447561a26e820c381ced4c3", + "tests/test_tokens_changes_sessions.py": "7a284fb3545da023b7867e91d878d4c80b641de0888848f16e401a3952751a4d" + }, + "hash_algorithm": "sha256", + "manifest_excludes": [ + "manifest.json" + ], + "product": "backtrader-agent", + "schema_version": "distribution-manifest-v1", + "version": "0.1.0" +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e1a3b1d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,46 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "backtrader-agent" +version = "0.1.0" +description = "Independent, deterministic Backtrader strategy-authoring agent runtime" +readme = "README.md" +requires-python = ">=3.8" +license = { text = "GPL-3.0-or-later" } +authors = [{ name = "cloudQuant" }] +dependencies = [] + +[project.optional-dependencies] +test = ["jsonschema>=4", "pytest>=7"] + +[project.scripts] +backtrader-agent = "backtrader_agent.cli:main" +btagent = "backtrader_agent.cli:main" + +[tool.setuptools] +package-dir = { "" = "src" } +include-package-data = true + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.package-data] +backtrader_agent = [ + "resources/*.json", + "resources/*.md", + "resources/adapters/claude-code/*.md", + "resources/adapters/codex/*.toml", + "resources/adapters/opencode/*.md", + "resources/adapters/openclaw/workspace/*.md", + "resources/adapters/openclaw/workspace/*.json", + "resources/contracts/*.json", + "resources/catalog/*.json", + "resources/catalog/*.jsonl", + "resources/policies/*.json", +] + +[tool.pytest.ini_options] +testpaths = ["tests"] +addopts = "-q" diff --git a/references/current-fork-rules.md b/references/current-fork-rules.md new file mode 100644 index 0000000..6579f0e --- /dev/null +++ b/references/current-fork-rules.md @@ -0,0 +1,31 @@ +# Current-fork authoring rules + +- A direct `bt.Strategy` subclass may read `self.p`, `self.datas`, broker, and + data aliases in its own `__init__` without calling `super().__init__()`. The + current fork initializes these before dispatching the user initializer. +- A custom parent strategy or cooperative mixin may own initialization; follow + that class's MRO contract and call `super()` where required. +- Multi-data and multi-timeframe indicators must be bound to their actual input + feed/clock. Do not silently align with forward-fill. +- Build indicators in `__init__`; trade in `next`. Avoid future indexing and + incomplete higher-timeframe bars. +- Use only offline registered data and analyzers included in the generated + profile. Live stores/brokers are outside P0. + +## Renderer scope (what the spec does and does not drive) + +The P0 renderer is a deterministic scaffold selector, not a free-form code +generator. It translates a StrategySpec into one of seven fixed archetype +templates, parameterized only by the declared `archetype`, `output_profile`, +and numeric parameter defaults (notably `fast_period` / `slow_period`). + +The spec fields `entry`, `exit`, `sizing`, and `risk` are **contract and +documentation only** at P0: they are validated for presence and shape, recorded +in the immutable spec hash, and shown in the generated `config.yaml`, but they +are **not translated into executable strategy logic**. The actual `next()` +behavior comes entirely from the chosen archetype template. An autonomous patch +synthesizer that turns natural-language entry/exit rules into code is deferred +(see IMPLEMENTATION_REPORT.md). To change trade logic today, select a different +`archetype` or revise parameters; do not expect prose `entry`/`exit` text to +alter the generated `next()`. + diff --git a/references/security-and-approval.md b/references/security-and-approval.md new file mode 100644 index 0000000..86d0a63 --- /dev/null +++ b/references/security-and-approval.md @@ -0,0 +1,38 @@ +# Security and approval model + +All external paths are represented as an opaque root ID plus a relative path. +Resolution rejects absolute paths, parent traversal, symlink escape, and +non-regular inputs. Dataset bytes are read with before/after stat checks and +stored in immutable SHA-256 CAS. + +The AST validator does not import or execute candidate modules. It uses exact +module/alias, from-import, Backtrader API, local-symbol, OS, and environment-key +allowlists. It rejects dynamic execution, reflection (`getattr` and dunder +access), `open`, `pathlib`, process/network modules, product-runtime +transduction, live APIs, and path literals. A validation token binds the +artifact, dataset, environment, and engine hashes. + +Apply and execution approvals are distinct. A change token cannot authorize a +run, and a run token cannot authorize a write. Each action follows persisted +`PENDING` request -> explicit local grant -> persisted signed token -> atomic +consume. Request creation and grant both recompute their context from the +current session checkpoint and an immutable, locally signed product record: + +- Change approval requires the exact canonical prepared-change manifest, + renderer-owned draft path, artifact/provenance record, spec, dataset, and the + complete validation-token hash and ID. Apply reloads that signed record and + does not trust a caller-supplied draft path. +- Run approval requires the exact signed applied-artifact record, applied and + source artifact hashes, artifact provenance record, change manifest, spec, + dataset, full validation-token hash and ID, and an allowlisted execution mode. + Grant repeats these checks so a request cannot become valid after its backing + state or signed record is changed. + +A repeated idempotency/effect ID returns its existing result or resumes the same +journal, while any new effect fails after consumption. Expected target hashes +plus staged bytes, transaction journals, backups, and verified rollback prevent +partial multi-file writes. + +The child process has a fixed argv, cwd, minimal non-inherited environment +without `HOME`, timeout, and resource/output limits. This is defense in depth, +not an OS sandbox or proof of network isolation. diff --git a/references/workflow.md b/references/workflow.md new file mode 100644 index 0000000..1b69432 --- /dev/null +++ b/references/workflow.md @@ -0,0 +1,21 @@ +# Deterministic P0 workflow + +The legal write/execute path is: + +```text +DatasetManifest -> StrategySpec -> snapshot sources -> private draft + -> AST/security validation -> validation token + -> prepare change -> persisted apply request -> local grant/change token + -> transactional apply/hash check/token consume + -> persisted execute request -> local grant/run token + -> controlled child process/token consume -> report -> completion +``` + +Read-only catalog search can occur at any time. It cannot issue a change or run +capability. Changing source, data, configuration, environment, engine, draft +revision, or target preimage invalidates downstream evidence. + +Every state-changing action above writes a legal `SessionStore` transition with +input hashes, effect references, approval token IDs, and idempotency keys. +Multi-file apply additionally keeps a staged transaction journal and backups. +The session journal is the recovery authority. Host conversation memory is not. diff --git a/scripts/audit_independence.py b/scripts/audit_independence.py new file mode 100644 index 0000000..8883378 --- /dev/null +++ b/scripts/audit_independence.py @@ -0,0 +1,10 @@ +from pathlib import Path +import sys + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(PROJECT_ROOT / "src")) + +from backtrader_agent.cli import main # noqa: E402 + +if __name__ == "__main__": + raise SystemExit(main(["audit-independence", "--product-root", str(PROJECT_ROOT)])) diff --git a/scripts/build_manifest.py b/scripts/build_manifest.py new file mode 100644 index 0000000..ceb1f3b --- /dev/null +++ b/scripts/build_manifest.py @@ -0,0 +1,124 @@ +"""Regenerate the root and package distribution manifests. + +Both manifests are content-addressed file maps: every non-excluded file is +listed with its sha256, and each manifest excludes itself from its own listing. +Run this after any source, resource, or repository file change so the two +distribution manifests stay exact. The independence audit +(``scripts/audit_independence.py``) and the distribution contract test both +fail closed when a manifest drifts, so this script is the single source of +truth for keeping them in sync. + +Usage:: + + python scripts/build_manifest.py + +Exit code 0 on success. Prints the file counts written to each manifest. +""" + +import hashlib +import json +import re +import sys +from pathlib import Path +from typing import Any, Dict, Iterable, Set + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +PACKAGE_ROOT = PROJECT_ROOT / "src" / "backtrader_agent" +ROOT_MANIFEST = PROJECT_ROOT / "manifest.json" +PKG_MANIFEST = PACKAGE_ROOT / "resources" / "distribution-manifest.json" + +# Exclusion rules must match the consumers exactly: +# - root manifest: tests/test_distribution_contracts.py::test_source_distribution_manifest_covers_every_file +# - package manifest: src/backtrader_agent/audit.py (distribution_manifest check) +ROOT_EXCLUDED_PARTS: Set[str] = {"__pycache__", ".pytest_cache", "dist", "build", ".git"} +PKG_EXCLUDED_PARTS: Set[str] = {"__pycache__"} +VERSION_RE = re.compile(r'^__version__\s*=\s*["\']([^"\']+)["\']', re.MULTILINE) + + +def _sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _iter_files(root: Path, excluded_parts: Set[str], skip: Path) -> Iterable[Path]: + for path in sorted(root.rglob("*")): + if not path.is_file(): + continue + if excluded_parts.intersection(path.parts): + continue + if any(part.endswith(".egg-info") for part in path.parts): + continue + if path.suffix == ".pyc": + continue + if path == skip: + continue + yield path + + +def _version() -> str: + match = VERSION_RE.search((PACKAGE_ROOT / "__init__.py").read_text(encoding="utf-8")) + return match.group(1) if match else "0.0.0" + + +def build_root_manifest() -> Dict[str, Any]: + files = { + path.relative_to(PROJECT_ROOT).as_posix(): _sha256(path) + for path in _iter_files(PROJECT_ROOT, ROOT_EXCLUDED_PARTS, ROOT_MANIFEST) + } + return { + "schema_version": "distribution-manifest-v1", + "product": "backtrader-agent", + "version": _version(), + "compatibility": { + "python": ">=3.8", + "backtrader": "source fork or compatible installed distribution", + "hosts": ["claude-code", "codex", "opencode", "openclaw"], + }, + "hash_algorithm": "sha256", + "manifest_excludes": ["manifest.json"], + "file_count": len(files), + "files": dict(sorted(files.items())), + } + + +def build_package_manifest() -> Dict[str, Any]: + files = { + path.relative_to(PACKAGE_ROOT).as_posix(): _sha256(path) + for path in _iter_files(PACKAGE_ROOT, PKG_EXCLUDED_PARTS, PKG_MANIFEST) + } + return { + "schema_version": "distribution-manifest-v1", + "product": "backtrader-agent", + "version": _version(), + "compatibility": { + "python": ">=3.8", + "backtrader": "source fork or compatible installed distribution", + }, + "hash_algorithm": "sha256", + "manifest_excludes": ["resources/distribution-manifest.json"], + "files": dict(sorted(files.items())), + } + + +def _write(path: Path, value: Dict[str, Any]) -> None: + path.write_text(json.dumps(value, indent=2, sort_keys=True) + "\n", encoding="utf-8") + + +def main() -> int: + # Write the package manifest first: the root manifest records the package + # manifest's sha256, so it must hash the final package manifest bytes. + package = build_package_manifest() + _write(PKG_MANIFEST, package) + root = build_root_manifest() + _write(ROOT_MANIFEST, root) + print( + f"root manifest: {root['file_count']} files -> {ROOT_MANIFEST.relative_to(PROJECT_ROOT)}" + ) + print( + f"package manifest: {len(package['files'])} files -> " + f"{PKG_MANIFEST.relative_to(PROJECT_ROOT)}" + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/doctor.py b/scripts/doctor.py new file mode 100644 index 0000000..da74963 --- /dev/null +++ b/scripts/doctor.py @@ -0,0 +1,10 @@ +from pathlib import Path +import sys + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(PROJECT_ROOT / "src")) + +from backtrader_agent.cli import main # noqa: E402 + +if __name__ == "__main__": + raise SystemExit(main(["doctor", "--json"])) diff --git a/scripts/run_acceptance.py b/scripts/run_acceptance.py new file mode 100644 index 0000000..9184008 --- /dev/null +++ b/scripts/run_acceptance.py @@ -0,0 +1,367 @@ +"""Fixed product-owned P0 acceptance entrypoint; it never accepts a test target.""" + +import argparse +import hashlib +import json +import os +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +from typing import Any, Dict, List, Optional, Tuple + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(PROJECT_ROOT / "src")) +sys.path.insert(0, str(PROJECT_ROOT / "tests")) + +from backtrader_agent.audit import IndependenceAuditor # noqa: E402 +from backtrader_agent.contracts import ARCHETYPES # noqa: E402 +from backtrader_agent.doctor import diagnose # noqa: E402 +from helpers import resolve_acceptance_engine_root # noqa: E402 + + +def _pytest( + targets: List[str], + environment: Dict[str, str], + *, + cwd: Path, +) -> subprocess.CompletedProcess: + return subprocess.run( + [ + sys.executable, + "-m", + "pytest", + *targets, + "-q", + "-p", + "no:cacheprovider", + ], + cwd=cwd, + env=environment, + capture_output=True, + text=True, + check=False, + ) + + +def _failed_process(message: str) -> subprocess.CompletedProcess: + return subprocess.CompletedProcess([], 1, stdout="", stderr=message) + + +def _is_within(path: Path, root: Path) -> bool: + try: + path.resolve().relative_to(root.resolve()) + except ValueError: + return False + return True + + +def _prepare_clean_install( + temporary_root: Path, +) -> Tuple[Dict[str, Any], Optional[Dict[str, str]], Optional[Path]]: + source_copy = temporary_root / "wheel-source" + shutil.copytree( + PROJECT_ROOT, + source_copy, + ignore=shutil.ignore_patterns( + "build", + "dist", + "*.egg-info", + "__pycache__", + ".pytest_cache", + "*.pyc", + ), + ) + wheel_root = temporary_root / "wheel" + wheel_root.mkdir() + build = subprocess.run( + [ + sys.executable, + "-m", + "pip", + "wheel", + str(source_copy), + "--no-deps", + "--no-build-isolation", + "--wheel-dir", + str(wheel_root), + ], + cwd=temporary_root, + capture_output=True, + text=True, + check=False, + ) + record: Dict[str, Any] = { + "build_passed": build.returncode == 0, + "build_stdout_tail": build.stdout[-1000:], + "build_stderr_tail": build.stderr[-1000:], + "install_passed": False, + "probe_passed": False, + "wheel_sha256": None, + "installed_origin": None, + "source_checkout_absent": False, + "passed": False, + } + wheels = sorted(wheel_root.glob("backtrader_agent-*.whl")) + if build.returncode != 0 or len(wheels) != 1: + return record, None, None + wheel = wheels[0] + record["wheel_filename"] = wheel.name + record["wheel_sha256"] = hashlib.sha256(wheel.read_bytes()).hexdigest() + clean_site = temporary_root / "clean-site" + install = subprocess.run( + [ + sys.executable, + "-m", + "pip", + "install", + "--no-deps", + "--target", + str(clean_site), + str(wheel), + ], + cwd=temporary_root, + capture_output=True, + text=True, + check=False, + ) + record["install_passed"] = install.returncode == 0 + record["install_stdout_tail"] = install.stdout[-1000:] + record["install_stderr_tail"] = install.stderr[-1000:] + if install.returncode != 0: + return record, None, None + + clean_work = temporary_root / "clean-work" + clean_tests = clean_work / "tests" + clean_tests.mkdir(parents=True) + for name in ( + "helpers.py", + "test_cli_extended_actions.py", + "test_run_resume.py", + "test_runner_installer_audit.py", + ): + shutil.copy2(PROJECT_ROOT / "tests" / name, clean_tests / name) + environment = dict(os.environ) + environment["PYTHONPATH"] = str(clean_site) + environment["PYTHONNOUSERSITE"] = "1" + environment["BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT"] = str( + resolve_acceptance_engine_root(PROJECT_ROOT) + ) + probe = subprocess.run( + [ + sys.executable, + "-c", + ( + "import importlib.util,json,pathlib,sys,backtrader_agent;" + "print(json.dumps({" + "'origin':str(pathlib.Path(backtrader_agent.__file__).resolve())," + "'sys_path':[str(pathlib.Path(item).resolve()) for item in sys.path if item]," + "'mcp_absent':importlib.util.find_spec('backtrader_mcp') is None," + "'skills_absent':importlib.util.find_spec('backtrader_skills') is None" + "},sort_keys=True))" + ), + ], + cwd=clean_work, + env=environment, + capture_output=True, + text=True, + check=False, + ) + try: + attestation = json.loads(probe.stdout) + installed_origin = Path(attestation["origin"]).resolve() + sys_path = [Path(item).resolve() for item in attestation["sys_path"]] + except (KeyError, TypeError, ValueError, json.JSONDecodeError): + attestation = {} + installed_origin = Path("/") + sys_path = [PROJECT_ROOT] + source_checkout_absent = ( + _is_within(installed_origin, clean_site) + and not _is_within(installed_origin, PROJECT_ROOT) + and all(not _is_within(path, PROJECT_ROOT) for path in sys_path) + ) + record.update( + { + "probe_passed": probe.returncode == 0, + "probe_stderr_tail": probe.stderr[-1000:], + "installed_origin": attestation.get("origin"), + "source_checkout_absent": source_checkout_absent, + "clean_sys_path": attestation.get("sys_path", []), + "mcp_absent": attestation.get("mcp_absent", False), + "skills_absent": attestation.get("skills_absent", False), + } + ) + record["passed"] = bool( + record["build_passed"] + and record["install_passed"] + and record["probe_passed"] + and record["source_checkout_absent"] + and record["mcp_absent"] + and record["skills_absent"] + ) + return record, environment, clean_work + + +def main(argv: Optional[List[str]] = None) -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--matrix", choices=["all"], default="all") + parser.add_argument("--require-no-mcp", action="store_true") + parser.add_argument( + "--require-no-skills", + "--require-no-backtrader-skills", + dest="require_no_skills", + action="store_true", + ) + parser.parse_args(argv) + doctor = diagnose(PROJECT_ROOT) + audit = IndependenceAuditor(PROJECT_ROOT).audit() + with tempfile.TemporaryDirectory(prefix="backtrader-agent-acceptance-") as name: + temporary_root = Path(name) + evidence_root = temporary_root / "evidence" + clean_install, environment, clean_work = _prepare_clean_install(temporary_root) + if environment is None or clean_work is None: + matrix = _failed_process("clean wheel installation failed") + crash_resume = _failed_process("clean wheel installation failed") + repair = _failed_process("clean wheel installation failed") + else: + environment["BACKTRADER_AGENT_ACCEPTANCE_EVIDENCE_DIR"] = str(evidence_root) + matrix = _pytest( + [ + "tests/test_runner_installer_audit.py::" + "test_controlled_end_to_end_run_and_report" + ], + environment, + cwd=clean_work, + ) + crash_resume = _pytest( + [ + "tests/test_run_resume.py::" + "test_partial_report_and_paused_session_resume_same_effect" + ], + environment, + cwd=clean_work, + ) + repair = _pytest( + [ + "tests/test_cli_extended_actions.py::" + "test_failed_session_repair_revises_spec_and_rerenders_owned_draft" + ], + environment, + cwd=clean_work, + ) + cells = [] + for path in sorted(evidence_root.glob("*.json")): + try: + cells.append(json.loads(path.read_text(encoding="utf-8"))) + except (OSError, json.JSONDecodeError): + cells = [] + break + expected_cells = { + f"{archetype}:{profile}" + for archetype in ARCHETYPES + for profile in ("python_bundle", "single_test") + } + observed_cells = {cell.get("cell_id") for cell in cells} + adapter_coverage = { + adapter for cell in cells for adapter in cell.get("data", {}).get("formats", []) + } + specialized = { + "multi_data": all( + cell.get("data", {}).get("feed_count", 0) >= 2 + for cell in cells + if cell.get("archetype") in {"multi_asset_allocation", "pairs_spread"} + ), + "multi_timeframe": all( + any( + item.get("profile_id") in {"resample", "replay"} + for item in cell.get("data", {}).get("transforms", []) + ) + for cell in cells + if cell.get("archetype") == "multi_timeframe" + ), + "precomputed_ml": all( + "signal" in cell.get("data", {}).get("custom_lines", []) + for cell in cells + if cell.get("archetype") == "precomputed_ml" + ), + } + matrix_passed = ( + clean_install["passed"] + and matrix.returncode == 0 + and observed_cells == expected_cells + and len(cells) == 14 + and adapter_coverage + == { + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + "pandas", + "pandas_custom_lines", + } + and all(specialized.values()) + and all( + cell.get("status") == "passed" + and set(cell.get("modes", {})) == {"runonce", "runnext"} + and cell.get("comparison", {}).get("status") == "passed" + for cell in cells + ) + ) + gates = { + "crash_resume": { + "passed": crash_resume.returncode == 0, + "stdout_tail": crash_resume.stdout[-1000:], + "stderr_tail": crash_resume.stderr[-1000:], + }, + "repair": { + "passed": repair.returncode == 0, + "stdout_tail": repair.stdout[-1000:], + "stderr_tail": repair.stderr[-1000:], + }, + } + sibling_checks = { + "mcp_absent": bool(clean_install.get("mcp_absent")), + "skills_absent": bool(clean_install.get("skills_absent")), + } + isolation_passed = sibling_checks["mcp_absent"] and sibling_checks["skills_absent"] + result = { + "schema_version": "acceptance-report-v1", + "status": ( + "passed" + if ( + doctor["status"] == "ready" + and audit["status"] == "passed" + and matrix_passed + and isolation_passed + and all(gate["passed"] for gate in gates.values()) + ) + else "failed" + ), + "doctor": doctor, + "independence": audit, + "clean_install": clean_install, + "sibling_checks": sibling_checks, + "matrix": { + "archetypes": 7, + "profiles": 2, + "modes_per_cell": ["runonce", "runnext"], + "executed_cells": 14 if matrix_passed else 0, + "passed": matrix_passed, + "adapter_coverage": sorted(adapter_coverage), + "specialized_data": specialized, + "cells": cells, + "fixed_test": ( + "tests/test_runner_installer_audit.py::" "test_controlled_end_to_end_run_and_report" + ), + "stdout_tail": matrix.stdout[-2000:], + "stderr_tail": matrix.stderr[-2000:], + }, + "independent_gates": gates, + } + print(json.dumps(result, ensure_ascii=False, indent=2, sort_keys=True)) + return 0 if result["status"] == "passed" else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/backtrader_agent/__init__.py b/src/backtrader_agent/__init__.py new file mode 100644 index 0000000..742daf0 --- /dev/null +++ b/src/backtrader_agent/__init__.py @@ -0,0 +1,7 @@ +"""Independent deterministic runtime for the Backtrader authoring agent.""" + +from .contracts import DatasetManifest, StrategySpec +from .errors import AgentError + +__all__ = ["AgentError", "DatasetManifest", "StrategySpec"] +__version__ = "0.1.0" diff --git a/src/backtrader_agent/__main__.py b/src/backtrader_agent/__main__.py new file mode 100644 index 0000000..bfdcd0c --- /dev/null +++ b/src/backtrader_agent/__main__.py @@ -0,0 +1,4 @@ +from .cli import main + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/backtrader_agent/audit.py b/src/backtrader_agent/audit.py new file mode 100644 index 0000000..8edd8aa --- /dev/null +++ b/src/backtrader_agent/audit.py @@ -0,0 +1,196 @@ +"""Self-contained independence and distribution-asset audit.""" + +import ast +import json +from pathlib import Path +from typing import Any, Dict, List + +from .canonical import sha256_bytes + +SCHEMA_NAMES = { + "strategy-spec-v1.schema.json", + "dataset-manifest-v1.schema.json", + "corpus-manifest-v1.schema.json", + "artifact-manifest-v1.schema.json", + "validation-report-v1.schema.json", + "run-manifest-v1.schema.json", + "run-result-v1.schema.json", + "agent-session-manifest-v1.schema.json", +} +FORBIDDEN_IMPORT_PREFIXES = { + "backtrader_mcp", + "backtrader_skills", + "fastmcp", + "mcp", +} +FORBIDDEN_DYNAMIC_CALLS = {"exec", "eval", "compile", "__import__"} + + +class IndependenceAuditor: + def __init__(self, product_root: Path) -> None: + self.product_root = Path(product_root).resolve() + + def audit(self) -> Dict[str, Any]: + diagnostics: List[Dict[str, str]] = [] + source_root = self.product_root / "src" / "backtrader_agent" + for path in sorted(source_root.rglob("*.py")): + relative = path.relative_to(self.product_root).as_posix() + try: + tree = ast.parse(path.read_text(encoding="utf-8"), filename=relative) + except (OSError, SyntaxError): + diagnostics.append( + {"code": "BTAG-AUDIT-SYNTAX", "path": relative, "message": "source unreadable"} + ) + continue + for node in ast.walk(tree): + imported = None + if isinstance(node, ast.Import): + for alias in node.names: + imported = alias.name.split(".", 1)[0] + if imported in FORBIDDEN_IMPORT_PREFIXES: + diagnostics.append( + { + "code": "BTAG-AUDIT-SIBLING-IMPORT", + "path": relative, + "message": "forbidden sibling import", + } + ) + elif isinstance(node, ast.ImportFrom): + imported = (node.module or "").split(".", 1)[0] + if imported in FORBIDDEN_IMPORT_PREFIXES: + diagnostics.append( + { + "code": "BTAG-AUDIT-SIBLING-IMPORT", + "path": relative, + "message": "forbidden sibling import", + } + ) + elif isinstance(node, ast.Call) and isinstance(node.func, ast.Name): + if node.func.id in FORBIDDEN_DYNAMIC_CALLS: + diagnostics.append( + { + "code": "BTAG-AUDIT-DYNAMIC", + "path": relative, + "message": "dynamic execution call", + } + ) + elif isinstance(node, ast.Call) and isinstance(node.func, ast.Attribute): + if node.func.attr in {"read_text", "read_bytes", "open"}: + for argument in node.args: + if isinstance(argument, ast.Constant) and isinstance( + argument.value, str + ): + lowered = argument.value.lower() + if ( + ".agents/skills" in lowered + or "backtrader-mcp" in lowered + or "backtrader-skills" in lowered + ): + diagnostics.append( + { + "code": "BTAG-AUDIT-SIBLING-READ", + "path": relative, + "message": "forbidden sibling path read", + } + ) + contracts = source_root / "resources" / "contracts" + present = {path.name for path in contracts.glob("*.json")} + missing = sorted(SCHEMA_NAMES - present) + if missing: + diagnostics.append( + { + "code": "BTAG-AUDIT-SCHEMAS", + "path": "src/backtrader_agent/resources/contracts", + "message": "missing schemas: " + ", ".join(missing), + } + ) + policy = source_root / "resources" / "policies" / "comparison-profile-v1.json" + if not policy.is_file(): + diagnostics.append( + { + "code": "BTAG-AUDIT-POLICY", + "path": "src/backtrader_agent/resources/policies", + "message": "comparison profile is missing", + } + ) + distribution_manifest = source_root / "resources" / "distribution-manifest.json" + if not distribution_manifest.is_file(): + diagnostics.append( + { + "code": "BTAG-AUDIT-DISTRIBUTION", + "path": "src/backtrader_agent/resources/distribution-manifest.json", + "message": "package distribution manifest is missing", + } + ) + else: + try: + manifest = json.loads(distribution_manifest.read_text(encoding="utf-8")) + declared = manifest["files"] + actual_paths = { + path.relative_to(source_root).as_posix() + for path in source_root.rglob("*") + if path.is_file() + and "__pycache__" not in path.parts + and path != distribution_manifest + and path.suffix != ".pyc" + } + if set(declared) != actual_paths: + raise ValueError("file set differs") + for relative, expected_hash in declared.items(): + if sha256_bytes((source_root / relative).read_bytes()) != expected_hash: + raise ValueError("hash differs") + except (KeyError, OSError, ValueError, json.JSONDecodeError): + diagnostics.append( + { + "code": "BTAG-AUDIT-DISTRIBUTION", + "path": "src/backtrader_agent/resources/distribution-manifest.json", + "message": "package distribution manifest does not match payload", + } + ) + return { + "schema_version": "independence-audit-v1", + "status": "passed" if not diagnostics else "failed", + "product_root_hash": self._tree_hash(), + "checks": { + "forbidden_imports": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-SIBLING-IMPORT" for item in diagnostics) + else "failed" + ), + "forbidden_reads": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-SIBLING-READ" for item in diagnostics) + else "failed" + ), + "dynamic_execution": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-DYNAMIC" for item in diagnostics) + else "failed" + ), + "packaged_contracts": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-SCHEMAS" for item in diagnostics) + else "failed" + ), + "comparison_profile": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-POLICY" for item in diagnostics) + else "failed" + ), + "distribution_manifest": ( + "passed" + if not any(item["code"] == "BTAG-AUDIT-DISTRIBUTION" for item in diagnostics) + else "failed" + ), + }, + "diagnostics": diagnostics, + } + + def _tree_hash(self) -> str: + hashes = [] + for path in sorted((self.product_root / "src" / "backtrader_agent").rglob("*")): + if path.is_file() and "__pycache__" not in path.parts: + hashes.append( + f"{path.relative_to(self.product_root).as_posix()}:{sha256_bytes(path.read_bytes())}" + ) + return sha256_bytes("\n".join(hashes).encode("utf-8")) diff --git a/src/backtrader_agent/canonical.py b/src/backtrader_agent/canonical.py new file mode 100644 index 0000000..ef65daf --- /dev/null +++ b/src/backtrader_agent/canonical.py @@ -0,0 +1,114 @@ +"""Canonical JSON, hashing, and atomic persistence helpers.""" + +import hashlib +import json +import math +import os +import re +import tempfile +import unicodedata +from pathlib import Path +from typing import Any, Dict + +from .errors import AgentError + +HASH_RE = re.compile(r"^[0-9a-f]{64}$") + + +def _normalize(value: Any) -> Any: + if value is None or isinstance(value, (bool, int)): + return value + if isinstance(value, float): + if not math.isfinite(value): + raise AgentError("BTAG-JSON-FINITE", "canonical JSON rejects NaN and Infinity") + return 0.0 if value == 0.0 else value + if isinstance(value, str): + return unicodedata.normalize("NFC", value) + if isinstance(value, (list, tuple)): + return [_normalize(item) for item in value] + if isinstance(value, dict): + normalized: Dict[str, Any] = {} + for key, item in value.items(): + if not isinstance(key, str): + raise AgentError("BTAG-JSON-KEY", "canonical JSON keys must be strings") + normalized_key = unicodedata.normalize("NFC", key) + if normalized_key in normalized: + raise AgentError( + "BTAG-JSON-KEY", + "canonical JSON keys collide after Unicode NFC normalization", + ) + normalized[normalized_key] = _normalize(item) + return normalized + if hasattr(value, "to_dict"): + return _normalize(value.to_dict()) + raise AgentError( + "BTAG-JSON-TYPE", + f"unsupported canonical JSON type: {type(value).__name__}", + ) + + +def canonical_json_bytes(value: Any) -> bytes: + return json.dumps( + _normalize(value), + ensure_ascii=False, + allow_nan=False, + separators=(",", ":"), + sort_keys=True, + ).encode("utf-8") + + +def sha256_bytes(value: bytes) -> str: + return hashlib.sha256(value).hexdigest() + + +def hash_object(value: Any) -> str: + return sha256_bytes(canonical_json_bytes(value)) + + +def read_json(path: Path) -> Dict[str, Any]: + try: + with path.open("r", encoding="utf-8") as handle: + value = json.load(handle) + except (OSError, ValueError) as exc: + raise AgentError("BTAG-JSON-READ", "JSON artifact could not be read") from exc + if not isinstance(value, dict): + raise AgentError("BTAG-JSON-TYPE", "JSON artifact must be an object") + return value + + +def atomic_write_bytes(path: Path, data: bytes, *, create_only: bool = False) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + if create_only and path.exists(): + raise AgentError("BTAG-WRITE-EXISTS", "create-only target already exists") + file_descriptor, temporary_name = tempfile.mkstemp( + prefix=f".{path.name}.", dir=str(path.parent) + ) + temporary = Path(temporary_name) + try: + with os.fdopen(file_descriptor, "wb") as handle: + handle.write(data) + handle.flush() + os.fsync(handle.fileno()) + if create_only and path.exists(): + raise AgentError("BTAG-WRITE-EXISTS", "create-only target already exists") + os.replace(str(temporary), str(path)) + try: + directory_fd = os.open(str(path.parent), os.O_RDONLY) + except OSError: + directory_fd = None + if directory_fd is not None: + try: + os.fsync(directory_fd) + finally: + os.close(directory_fd) + finally: + if temporary.exists(): + temporary.unlink() + + +def atomic_write_json(path: Path, value: Dict[str, Any], *, create_only: bool = False) -> None: + atomic_write_bytes(path, canonical_json_bytes(value) + b"\n", create_only=create_only) + + +def content_hashes(files: Dict[str, bytes]) -> Dict[str, str]: + return {name: sha256_bytes(content) for name, content in sorted(files.items())} diff --git a/src/backtrader_agent/catalog.py b/src/backtrader_agent/catalog.py new file mode 100644 index 0000000..5addfe3 --- /dev/null +++ b/src/backtrader_agent/catalog.py @@ -0,0 +1,419 @@ +"""Deterministic package-owned corpus catalog and source-attached rebuilder.""" + +import hashlib +import json +import re +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple + +from .canonical import atomic_write_bytes, hash_object +from .errors import AgentError + +TOKEN_RE = re.compile(r"[a-z0-9_]+") +ARCHETYPES = ( + "single_data_indicator", + "multi_indicator_system", + "multi_asset_allocation", + "multi_timeframe", + "pairs_spread", + "order_risk", + "precomputed_ml", +) +PROFILES = ("single_test", "python_bundle") +EXPECTED_COUNTS = { + "functional_tests": 1152, + "strategy_packages": 1035, + "mapped": 1032, +} +CATEGORY_ARCHETYPE = { + "asset_allocation": "multi_asset_allocation", + "rotation": "multi_asset_allocation", + "pairs_trading": "pairs_spread", + "order_types": "order_risk", + "risk_management": "order_risk", + "options": "order_risk", + "machine_learning": "precomputed_ml", + "forecasting": "precomputed_ml", + "sentiment": "precomputed_ml", + "time_based": "multi_timeframe", + "time_session_system": "multi_timeframe", + "multi_indicator": "multi_indicator_system", + "multi_indicator_system": "multi_indicator_system", + "pivot_fibonacci_system": "multi_indicator_system", +} +MULTI_LABEL_CATEGORIES = {"advanced", "special", "misc", "others"} + + +def _manifest_entries(entries: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """Project JSONL corpus records into the product-neutral manifest contract.""" + + return [ + { + "id": entry["canonical_id"], + "source": entry["mapping_status"], + "archetype": entry["archetypes"][0], + "content_hash": entry["entry_hash"], + "metadata": { + "category": entry["category"], + "jsonl_record": index + 1, + "mapping_status": entry["mapping_status"], + }, + } + for index, entry in enumerate(entries) + ] + + +def _file_hash(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _package_hash(directory: Path) -> Tuple[str, List[Dict[str, str]]]: + strategy_files = sorted( + path + for path in directory.glob("strategy_*.py") + if not path.name.startswith(("pybind11_", "python_swig_")) + ) + candidates = [*strategy_files[:1], directory / "config.yaml", directory / "run.py"] + files = [ + {"path": path.name, "sha256": _file_hash(path)} for path in candidates if path.is_file() + ] + return hash_object(files), files + + +def _assert_output_outside_source(output: Path, source_roots: Tuple[Path, Path]) -> None: + output = output.resolve(strict=False) + for root in source_roots: + try: + output.relative_to(root) + except ValueError: + continue + raise AgentError( + "BTAG-CATALOG-OUTPUT", + "source-attached snapshot output must be outside both read-only corpus roots", + ) + + +class SnapshotCatalog: + def __init__( + self, + snapshot_path: Optional[Path] = None, + template_path: Optional[Path] = None, + ) -> None: + resource_root = Path(__file__).resolve().parent / "resources" / "catalog" + self.snapshot_path = snapshot_path or (resource_root / "corpus-v1.jsonl") + self.template_path = template_path or (resource_root / "snapshot.jsonl") + self.manifest, self._entries = self._load_corpus() + self._templates = self._load_templates() + + def _load_corpus(self) -> Tuple[Dict[str, Any], List[Dict[str, Any]]]: + records: List[Dict[str, Any]] = [] + try: + with self.snapshot_path.open("r", encoding="utf-8") as handle: + for line in handle: + if line.strip(): + item = json.loads(line) + if not isinstance(item, dict): + raise ValueError("catalog record is not an object") + records.append(item) + except (OSError, ValueError, json.JSONDecodeError) as exc: + raise AgentError("BTAG-CATALOG-READ", "packaged corpus snapshot is invalid") from exc + if not records or records[0].get("schema_version") != "corpus-manifest-v1": + raise AgentError("BTAG-CATALOG-INTEGRITY", "corpus manifest is missing") + manifest, entries = records[0], records[1:] + if manifest.get("entry_count") != len(entries): + raise AgentError("BTAG-CATALOG-INTEGRITY", "corpus entry count is invalid") + ids = [item.get("canonical_id") for item in entries] + if len(ids) != len(set(ids)): + raise AgentError("BTAG-CATALOG-INTEGRITY", "corpus IDs are missing or duplicated") + for entry in entries: + payload = dict(entry) + expected = payload.pop("entry_hash", None) + if expected != hash_object(payload): + raise AgentError("BTAG-CATALOG-INTEGRITY", "corpus entry hash is invalid") + if manifest.get("mode") == "snapshot" and entry.get("source_available") is not False: + raise AgentError( + "BTAG-CATALOG-INTEGRITY", + "metadata-only snapshot must not claim source availability", + ) + if manifest.get("entries") != _manifest_entries(entries): + raise AgentError( + "BTAG-CATALOG-INTEGRITY", + "corpus manifest entries do not match JSONL records", + ) + expected_snapshot_hash = hash_object( + {key: value for key, value in manifest.items() if key != "snapshot_hash"} + ) + if expected_snapshot_hash != manifest.get("snapshot_hash"): + raise AgentError("BTAG-CATALOG-INTEGRITY", "corpus snapshot hash is invalid") + return manifest, entries + + def _load_templates(self) -> List[Dict[str, Any]]: + entries: List[Dict[str, Any]] = [] + try: + with self.template_path.open("r", encoding="utf-8") as handle: + for line in handle: + if line.strip(): + item = json.loads(line) + if not isinstance(item, dict): + raise ValueError("template entry is not an object") + entries.append(item) + except (OSError, ValueError, json.JSONDecodeError) as exc: + raise AgentError("BTAG-CATALOG-READ", "packaged template catalog is invalid") from exc + ids = [item.get("entry_id") for item in entries] + pairs = [(item.get("archetype"), item.get("profile")) for item in entries] + if ( + len(entries) != len(ARCHETYPES) * len(PROFILES) + or len(ids) != len(set(ids)) + or set(pairs) + != {(archetype, profile) for archetype in ARCHETYPES for profile in PROFILES} + ): + raise AgentError( + "BTAG-CATALOG-INTEGRITY", + "the fourteen archetype/profile template entries are incomplete", + ) + return entries + + @staticmethod + def _tokens(text: str) -> Set[str]: + return set(TOKEN_RE.findall(text.lower().replace("-", " ").replace("_", " "))) + + def search( + self, + query: str, + *, + archetype: Optional[str] = None, + profile: Optional[str] = None, + top_k: int = 5, + ) -> List[Dict[str, Any]]: + if top_k < 1 or top_k > 20: + raise AgentError("BTAG-CATALOG-LIMIT", "top_k must be between 1 and 20") + if archetype and archetype not in ARCHETYPES: + raise AgentError("BTAG-CATALOG-ARCHETYPE", "catalog archetype is unknown") + if profile and profile not in PROFILES: + raise AgentError("BTAG-CATALOG-PROFILE", "catalog profile is unknown") + query_tokens = self._tokens(query) + ranked: List[Tuple[int, str, Dict[str, Any]]] = [] + for entry in self._entries: + if archetype and archetype not in entry["archetypes"]: + continue + if profile and profile not in entry["profiles"]: + continue + searchable = " ".join( + [ + entry["canonical_id"], + entry["category"], + entry["slug"], + " ".join(entry["archetypes"]), + " ".join(entry.get("risk_tags", [])), + ] + ) + tokens = self._tokens(searchable) + lexical_score = len(query_tokens & tokens) * 10 + if query.lower() in searchable.lower(): + lexical_score += 5 + if query_tokens and lexical_score == 0: + continue + score = lexical_score + if archetype: + score += 25 + if entry["mapping_status"] == "mapped": + score += 3 + if not query_tokens: + score = 1 + ranked.append((-score, entry["canonical_id"], entry)) + ranked.sort(key=lambda value: (value[0], value[1])) + results = [] + for negative_score, _, entry in ranked[:top_k]: + public = dict(entry) + selected_archetype = archetype or entry["archetypes"][0] + selected_profile = profile or "single_test" + public.update( + { + "entry_id": entry["canonical_id"], + "title": entry["slug"].replace("_", " "), + "archetype": selected_archetype, + "profile": selected_profile, + "source_hash": entry["entry_hash"], + "source_path_id": entry["canonical_id"], + "summary": ( + f"{entry['mapping_status']} metadata reference in category " + f"{entry['category']}." + ), + "tags": [ + entry["category"], + entry["mapping_status"], + *entry["archetypes"], + ], + } + ) + public["score"] = -negative_score + results.append(public) + return results + + def inspect(self, entry_id: str) -> Dict[str, Any]: + for entry in self._entries: + if entry["canonical_id"] == entry_id: + value = dict(entry) + value["entry_id"] = entry["canonical_id"] + value["source_hash"] = entry["entry_hash"] + return value + for template in self._templates: + if template["entry_id"] == entry_id: + return dict(template) + raise AgentError("BTAG-CATALOG-UNKNOWN", "catalog entry ID is unknown") + + def templates( + self, + *, + archetype: Optional[str] = None, + profile: Optional[str] = None, + ) -> List[Dict[str, Any]]: + if archetype and archetype not in ARCHETYPES: + raise AgentError("BTAG-CATALOG-ARCHETYPE", "catalog archetype is unknown") + if profile and profile not in PROFILES: + raise AgentError("BTAG-CATALOG-PROFILE", "catalog profile is unknown") + return [ + dict(item) + for item in self._templates + if (not archetype or item["archetype"] == archetype) + and (not profile or item["profile"] == profile) + ] + + def metadata(self) -> Dict[str, Any]: + return dict(self.manifest) + + @classmethod + def refresh_source_attached( + cls, + functional_root: Path, + package_root: Path, + output: Path, + *, + require_verified_counts: bool = True, + ) -> Dict[str, Any]: + """Rebuild both corpus adapters without importing or modifying strategy source.""" + + functional_root = Path(functional_root).resolve(strict=True) + package_root = Path(package_root).resolve(strict=True) + if not functional_root.is_dir() or not package_root.is_dir(): + raise AgentError("BTAG-CATALOG-ROOT", "both corpus roots must be directories") + output = Path(output) + _assert_output_outside_source(output, (functional_root, package_root)) + + tests: Dict[str, Path] = {} + for path in sorted(functional_root.rglob("test_*.py")): + if path.is_symlink(): + continue + relative = path.relative_to(functional_root) + stem = path.stem[5:] if path.stem.startswith("test_") else path.stem + tests[f"{relative.parent.as_posix()}/{stem}"] = path + packages: Dict[str, Path] = {} + for path in sorted(package_root.glob("*/*")): + strategy_files = [ + item + for item in path.glob("strategy_*.py") + if not item.name.startswith(("pybind11_", "python_swig_")) + ] + if ( + path.is_dir() + and not path.is_symlink() + and (path / "run.py").is_file() + and strategy_files + ): + packages[f"{path.parent.name}/{path.name}"] = path + mapped = set(tests) & set(packages) + counts = { + "functional_tests": len(tests), + "strategy_packages": len(packages), + "mapped": len(mapped), + } + if require_verified_counts and counts != EXPECTED_COUNTS: + raise AgentError( + "BTAG-CATALOG-COUNTS", + f"verified corpus counts changed: expected {EXPECTED_COUNTS}, got {counts}", + ) + + entries: List[Dict[str, Any]] = [] + for canonical_id in sorted(set(tests) | set(packages)): + category, slug = canonical_id.split("/", maxsplit=1) + test_path = tests.get(canonical_id) + package_path = packages.get(canonical_id) + package_hash = None + package_files: List[Dict[str, str]] = [] + if package_path is not None: + package_hash, package_files = _package_hash(package_path) + entry = { + "schema_version": "corpus-entry-v1", + "canonical_id": canonical_id, + "category": category, + "slug": slug, + "archetypes": ( + list(ARCHETYPES) + if category in MULTI_LABEL_CATEGORIES + else [CATEGORY_ARCHETYPE.get(category, "single_data_indicator")] + ), + "profiles": list(PROFILES), + "functional_test": ( + { + "relative_path": test_path.relative_to(functional_root).as_posix(), + "sha256": _file_hash(test_path), + } + if test_path + else None + ), + "strategy_package": ( + { + "relative_path": package_path.relative_to(package_root).as_posix(), + "sha256": package_hash, + "files": package_files, + } + if package_path + else None + ), + "mapping_status": ( + "mapped" + if canonical_id in mapped + else "functional_only" if test_path else "package_only" + ), + "source_available": True, + "dependencies": [], + "risk_tags": (["multi_label_review"] if category in MULTI_LABEL_CATEGORIES else []), + } + entry["entry_hash"] = hash_object(entry) + entries.append(entry) + manifest = { + "schema_version": "corpus-manifest-v1", + "corpus_id": "backtrader-agent-source-attached-v1", + "mode": "source-attached", + "counts": counts, + "entry_count": len(entries), + "entries": _manifest_entries(entries), + "provenance": { + "functional_adapter": "functional-test-adapter-v1", + "package_adapter": "three-file-package-adapter-v1", + "source_available": True, + }, + "extensions": { + "counts": counts, + "encoding": "jsonl-following-records", + "entry_count": len(entries), + "template_count": len(ARCHETYPES) * len(PROFILES), + }, + } + manifest["snapshot_hash"] = hash_object(manifest) + payload = b"\n".join( + json.dumps( + item, + ensure_ascii=False, + allow_nan=False, + separators=(",", ":"), + sort_keys=True, + ).encode("utf-8") + for item in [manifest, *entries] + ) + atomic_write_bytes(output, payload + b"\n") + return manifest diff --git a/src/backtrader_agent/changes.py b/src/backtrader_agent/changes.py new file mode 100644 index 0000000..9035ef1 --- /dev/null +++ b/src/backtrader_agent/changes.py @@ -0,0 +1,765 @@ +"""Two-phase, hash-bound, confined change preparation and application.""" + +import difflib +import re +from pathlib import Path, PurePosixPath +from typing import Any, Dict, List + +from .canonical import ( + atomic_write_bytes, + atomic_write_json, + hash_object, + read_json, + sha256_bytes, +) +from .errors import AgentError +from .roots import RootRegistry +from .scaffold import load_product_artifact_record +from .sessions import SessionStore +from .tokens import TokenAuthority + +IDEMPOTENCY_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$") + + +def _safe_relative(value: str) -> PurePosixPath: + candidate = PurePosixPath(value.replace("\\", "/")) + if not value or candidate.is_absolute() or ".." in candidate.parts: + raise AgentError("BTAG-CHANGE-PATH", "change paths must be confined relative paths") + return candidate + + +def _role(source: str) -> str: + name = PurePosixPath(source).name + if name == "run.py": + return "runner" + if name == "config.yaml": + return "config" + if name.startswith("test_"): + return "strategy" + if name.startswith("strategy_"): + return "strategy" + return "support" + + +class ChangeManager: + def __init__(self, roots: RootRegistry, state_root: Path, authority: TokenAuthority) -> None: + self.roots = roots + self.state_root = Path(state_root) + self.authority = authority + self.action_root = self.state_root / "actions" + self.transaction_root = self.state_root / "transactions" + + def prepare( + self, + *, + session_id: str, + draft_root: Path, + files: List[Dict[str, str]], + target_root_id: str, + validation_token: Dict[str, Any], + ) -> Dict[str, Any]: + self.authority.verify( + validation_token, + kind="validation", + subject_hash=validation_token.get("subject_hash", ""), + required_bindings={"session_id": session_id}, + ) + draft = Path(draft_root).resolve(strict=True) + artifact_path = draft / "artifact-manifest.json" + if not artifact_path.is_file(): + raise AgentError( + "BTAG-CHANGE-ARTIFACT", + "draft is missing its validated artifact manifest", + ) + artifact = read_json(artifact_path) + artifact_payload = {key: value for key, value in artifact.items() if key != "artifact_hash"} + product_record = load_product_artifact_record( + self.state_root, + session_id, + str(artifact.get("artifact_hash", "")), + self.authority, + ) + expected_draft = (self.state_root / product_record["draft_relative_path"]).resolve( + strict=True + ) + extension = artifact.get("extensions", {}).get("backtrader_agent", {}) + if ( + hash_object(artifact_payload) != artifact.get("artifact_hash") + or artifact.get("artifact_hash") != validation_token["subject_hash"] + or draft != expected_draft + or sha256_bytes(artifact_path.read_bytes()) != product_record["manifest_sha256"] + or extension.get("generated_by") != "backtrader-agent" + or extension.get("session_id") != session_id + or extension.get("dataset_manifest_hash") != product_record["dataset_manifest_hash"] + or validation_token.get("bindings", {}).get("artifact_record_hash") + != product_record["record_hash"] + or validation_token.get("bindings", {}).get("spec_hash") != product_record["spec_hash"] + or validation_token.get("bindings", {}).get("dataset_id") + != product_record["dataset_id"] + or validation_token.get("bindings", {}).get("dataset_hash") + != product_record["dataset_manifest_hash"] + ): + raise AgentError( + "BTAG-CHANGE-ARTIFACT", + "draft artifact is not bound to the validation token", + ) + artifact_files = {item["path"]: item for item in artifact.get("files", [])} + if not files or len(files) > 8: + raise AgentError("BTAG-CHANGE-COUNT", "change set must contain 1 to 8 files") + changes: List[Dict[str, Any]] = [] + targets = set() + for item in files: + source_relative = _safe_relative(item["source"]) + target_relative = _safe_relative(item["target"]) + target_text = target_relative.as_posix() + if target_text in targets: + raise AgentError("BTAG-CHANGE-DUPLICATE", "target path is duplicated") + targets.add(target_text) + source = draft.joinpath(*source_relative.parts).resolve(strict=True) + try: + source.relative_to(draft) + except ValueError as exc: + raise AgentError("BTAG-CHANGE-SOURCE", "draft source escapes draft root") from exc + if not source.is_file() or source.is_symlink(): + raise AgentError("BTAG-CHANGE-SOURCE", "draft source must be a regular file") + content = source.read_bytes() + artifact_file = artifact_files.get(source_relative.as_posix()) + if artifact_file is None or artifact_file.get("sha256") != sha256_bytes(content): + raise AgentError( + "BTAG-CHANGE-ARTIFACT", + "change source is not in the validated artifact", + ) + if len(content) > 256 * 1024: + raise AgentError("BTAG-CHANGE-SIZE", "change file exceeds byte quota") + target = self.roots.resolve( + target_root_id, target_text, for_write=True, require_file=False + ) + if target.exists() and not target.is_file(): + raise AgentError("BTAG-CHANGE-TARGET", "target exists but is not a file") + old_bytes = target.read_bytes() if target.exists() else b"" + old_hash = sha256_bytes(old_bytes) if target.exists() else None + try: + old_text = old_bytes.decode("utf-8").splitlines(keepends=True) + new_text = content.decode("utf-8").splitlines(keepends=True) + diff = "".join( + difflib.unified_diff( + old_text, + new_text, + fromfile=f"a/{target_text}", + tofile=f"b/{target_text}", + ) + ) + except UnicodeDecodeError: + diff = f"binary {len(old_bytes)} -> {len(content)} bytes" + changes.append( + { + "source_relative_path": source_relative.as_posix(), + "target_relative_path": target_text, + "role": _role(source_relative.as_posix()), + "source_hash": sha256_bytes(content), + "expected_target_hash": old_hash, + "size_bytes": len(content), + "diff": diff[:128_000], + } + ) + profile = ( + "python_bundle" + if any(change["source_relative_path"] == "run.py" for change in changes) + else "single_test" + ) + entrypoint = next( + ( + change["target_relative_path"] + for change in changes + if ( + change["source_relative_path"] == "run.py" + if profile == "python_bundle" + else change["source_relative_path"].startswith("test_") + ) + ), + None, + ) + portable: Dict[str, Any] = { + "schema_version": "change-manifest-v1", + "change_id": "", + "session_id": session_id, + "target_root_id": target_root_id, + "profile": profile, + "entrypoint": entrypoint, + "artifact_hash": validation_token["subject_hash"], + "artifact_record_hash": product_record["record_hash"], + "spec_hash": product_record["spec_hash"], + "dataset_id": artifact["dataset_id"], + "dataset_manifest_hash": product_record["dataset_manifest_hash"], + "validation_token_id": validation_token["token_id"], + "validation_token_hash": hash_object(validation_token), + "policy": "create-or-expected-hash", + "changes": changes, + } + identity = hash_object( + {key: value for key, value in portable.items() if key != "change_id"} + ) + portable["change_id"] = f"change-{identity[:20]}" + portable["manifest_hash"] = hash_object(portable) + result = {**portable, "_draft_path": str(draft)} + sessions = SessionStore(self.state_root) + session = sessions.load(session_id) + if ( + session.get("artifacts", {}).get("artifact_hash") != portable["artifact_hash"] + or session.get("artifacts", {}).get("approved_spec_hash") != portable["spec_hash"] + or session.get("artifacts", {}).get("dataset_id") != portable["dataset_id"] + or session.get("artifacts", {}).get("dataset_manifest_hash") + != portable["dataset_manifest_hash"] + or session.get("artifacts", {}).get("validation_hash") + != validation_token.get("bindings", {}).get("validation_hash") + or session.get("artifacts", {}).get("validation_token_id") + != validation_token.get("token_id") + or session.get("artifacts", {}).get("validation_token_hash") + != portable["validation_token_hash"] + or session.get("artifacts", {}).get("artifact_record_hash") + != product_record["record_hash"] + ): + raise AgentError( + "BTAG-CHANGE-SESSION", + "session evidence does not match the validated product artifact", + ) + self.authority.store_bound_record( + "prepared-change", + session_id, + portable["manifest_hash"], + { + "change_manifest": portable, + "draft_relative_path": product_record["draft_relative_path"], + "validation_token_hash": portable["validation_token_hash"], + }, + ) + if session["state"] == "VALIDATED": + sessions.transition( + session_id, + "APPLY_PREPARED", + "changes-prepare", + { + "artifact": portable["artifact_hash"], + "change_manifest": portable["manifest_hash"], + }, + effect_references={"change_manifest_hash": portable["manifest_hash"]}, + ) + elif ( + session["state"] != "APPLY_PREPARED" + or session.get("artifacts", {}).get("change_manifest_hash") != portable["manifest_hash"] + ): + raise AgentError( + "BTAG-CHANGE-SESSION", + "session is not ready for this prepared change", + ) + return result + + def _action_path(self, key: str) -> Path: + if not IDEMPOTENCY_RE.fullmatch(key): + raise AgentError("BTAG-IDEMPOTENCY-KEY", "idempotency key is malformed") + return self.action_root / f"{sha256_bytes(key.encode('utf-8'))}.json" + + def _transaction_directory(self, change_id: str) -> Path: + if not re.fullmatch(r"change-[0-9a-f]{20}", change_id): + raise AgentError("BTAG-CHANGE-ID", "change ID is malformed") + return self.transaction_root / change_id + + @staticmethod + def _replace_target( + index: int, + target: Path, + staged: Path, + create_only: bool, + ) -> None: + del index + atomic_write_bytes(target, staged.read_bytes(), create_only=create_only) + + @staticmethod + def _write_transaction(path: Path, transaction: Dict[str, Any]) -> None: + atomic_write_json(path, transaction) + + def _rollback_transaction( + self, + transaction_path: Path, + transaction: Dict[str, Any], + resolved_by_path: Dict[str, Path], + ) -> None: + transaction_directory = transaction_path.parent + for entry in reversed(transaction["entries"]): + target = resolved_by_path[entry["target_relative_path"]] + actual_hash = sha256_bytes(target.read_bytes()) if target.exists() else None + if actual_hash == entry["expected_target_hash"]: + entry["applied"] = False + continue + if actual_hash != entry["source_hash"]: + raise AgentError( + "BTAG-CHANGE-ROLLBACK", + "transaction target has an unexpected recovery image", + ) + backup_relative = entry.get("backup_relative_path") + if backup_relative is None: + if target.exists(): + target.unlink() + else: + backup = transaction_directory / backup_relative + backup_bytes = backup.read_bytes() + if sha256_bytes(backup_bytes) != entry["expected_target_hash"]: + raise AgentError( + "BTAG-CHANGE-ROLLBACK", + "transaction backup hash is invalid", + ) + atomic_write_bytes(target, backup_bytes) + restored_hash = sha256_bytes(target.read_bytes()) if target.exists() else None + if restored_hash != entry["expected_target_hash"]: + raise AgentError( + "BTAG-CHANGE-ROLLBACK", + "transaction rollback did not restore the preimage", + ) + entry["applied"] = False + transaction["state"] = "ROLLED_BACK" + self._write_transaction(transaction_path, transaction) + + def _prepare_transaction( + self, + change_manifest: Dict[str, Any], + effect_id: str, + resolved: List[tuple], + ) -> tuple: + directory = self._transaction_directory(change_manifest["change_id"]) + directory.mkdir(parents=True, exist_ok=True) + transaction_path = directory / "transaction.json" + resolved_by_path = { + change["target_relative_path"]: target for change, target, _ in resolved + } + if transaction_path.exists(): + existing = read_json(transaction_path) + if ( + existing.get("change_manifest_hash") != change_manifest["manifest_hash"] + or existing.get("effect_id") != effect_id + ): + raise AgentError( + "BTAG-CHANGE-TRANSACTION", + "change transaction identity conflicts with an existing journal", + ) + if existing.get("state") == "APPLYING": + self._rollback_transaction(transaction_path, existing, resolved_by_path) + elif existing.get("state") == "COMMITTED": + for entry in existing["entries"]: + target = resolved_by_path[entry["target_relative_path"]] + if ( + not target.exists() + or sha256_bytes(target.read_bytes()) != entry["source_hash"] + ): + raise AgentError( + "BTAG-CHANGE-TRANSACTION", + "committed transaction target no longer matches", + ) + return transaction_path, existing + + stage_directory = directory / "stage" + backup_directory = directory / "backup" + stage_directory.mkdir(parents=True, exist_ok=True) + backup_directory.mkdir(parents=True, exist_ok=True) + entries = [] + for index, (change, target, content) in enumerate(resolved): + staged = stage_directory / f"{index}.bin" + atomic_write_bytes(staged, content) + backup_relative = None + if target.exists(): + backup = backup_directory / f"{index}.bin" + atomic_write_bytes(backup, target.read_bytes()) + backup_relative = backup.relative_to(directory).as_posix() + entries.append( + { + "index": index, + "target_relative_path": change["target_relative_path"], + "expected_target_hash": change["expected_target_hash"], + "source_hash": change["source_hash"], + "staged_relative_path": staged.relative_to(directory).as_posix(), + "backup_relative_path": backup_relative, + "applied": False, + } + ) + transaction = { + "schema_version": "change-transaction-v1", + "change_id": change_manifest["change_id"], + "change_manifest_hash": change_manifest["manifest_hash"], + "effect_id": effect_id, + "state": "PREPARED", + "entries": entries, + } + self._write_transaction(transaction_path, transaction) + return transaction_path, transaction + + def _apply_transaction( + self, + transaction_path: Path, + transaction: Dict[str, Any], + resolved: List[tuple], + ) -> None: + if transaction["state"] == "COMMITTED": + return + directory = transaction_path.parent + resolved_by_path = { + change["target_relative_path"]: target for change, target, _ in resolved + } + transaction["state"] = "APPLYING" + self._write_transaction(transaction_path, transaction) + try: + for entry in transaction["entries"]: + target = resolved_by_path[entry["target_relative_path"]] + staged = directory / entry["staged_relative_path"] + self._replace_target( + int(entry["index"]), + target, + staged, + entry["expected_target_hash"] is None, + ) + if sha256_bytes(target.read_bytes()) != entry["source_hash"]: + raise AgentError( + "BTAG-CHANGE-POSTIMAGE", + "target hash verification failed", + ) + entry["applied"] = True + self._write_transaction(transaction_path, transaction) + except (AgentError, OSError) as exc: + try: + self._rollback_transaction(transaction_path, transaction, resolved_by_path) + except AgentError as rollback_error: + raise AgentError( + "BTAG-CHANGE-ROLLBACK", + "multi-file change failed and rollback could not be verified", + ) from rollback_error + raise AgentError( + "BTAG-CHANGE-TRANSACTION", + "multi-file change failed and was rolled back", + ) from exc + transaction["state"] = "COMMITTED" + self._write_transaction(transaction_path, transaction) + + @staticmethod + def _expected_applied_artifact( + change_manifest: Dict[str, Any], + change_token: Dict[str, Any], + ) -> Dict[str, Any]: + applied_files = [ + { + "relative_path": change["target_relative_path"], + "role": change["role"], + "sha256": change["source_hash"], + "size_bytes": change["size_bytes"], + } + for change in change_manifest["changes"] + ] + portable: Dict[str, Any] = { + "schema_version": "applied-artifact-v1", + "applied_artifact_id": f"applied-{change_manifest['manifest_hash'][:20]}", + "generated_by": "backtrader-agent", + "session_id": change_manifest["session_id"], + "target_root_id": change_manifest["target_root_id"], + "profile": change_manifest["profile"], + "entrypoint": change_manifest["entrypoint"], + "artifact_hash": change_manifest["artifact_hash"], + "artifact_record_hash": change_manifest["artifact_record_hash"], + "spec_hash": change_manifest["spec_hash"], + "dataset_id": change_manifest["dataset_id"], + "dataset_manifest_hash": change_manifest["dataset_manifest_hash"], + "change_manifest_hash": change_manifest["manifest_hash"], + "validation_token_id": change_manifest["validation_token_id"], + "validation_token_hash": change_manifest["validation_token_hash"], + "approval_id": change_token["approval_id"], + "files": applied_files, + } + portable["applied_artifact_hash"] = hash_object(portable) + return { + **portable, + "status": "applied", + } + + def _signed_action_record( + self, + request_hash: str, + result: Dict[str, Any], + ) -> Dict[str, Any]: + portable: Dict[str, Any] = { + "schema_version": "idempotent-action-v1", + "request_hash": request_hash, + "result": result, + } + portable["record_hash"] = hash_object(portable) + return { + **portable, + "signature": self.authority.sign_product_record(portable), + } + + def _load_action_record(self, path: Path) -> Dict[str, Any]: + if not path.is_file() or path.is_symlink(): + raise AgentError( + "BTAG-IDEMPOTENCY-RECORD", + "idempotent action record is not a regular product-owned file", + ) + payload = self.authority.verify_product_record(read_json(path)) + expected_hash = payload.get("record_hash") + actual_hash = hash_object( + {key: value for key, value in payload.items() if key != "record_hash"} + ) + if ( + payload.get("schema_version") != "idempotent-action-v1" + or expected_hash != actual_hash + or not isinstance(payload.get("request_hash"), str) + or not isinstance(payload.get("result"), dict) + ): + raise AgentError( + "BTAG-IDEMPOTENCY-RECORD", + "idempotent action record is malformed or has an invalid hash", + ) + return payload + + def _validate_cached_result( + self, + recorded: Dict[str, Any], + change_manifest: Dict[str, Any], + change_token: Dict[str, Any], + ) -> Dict[str, Any]: + expected_artifact = self._expected_applied_artifact(change_manifest, change_token) + applied_record = self.authority.load_bound_record( + "applied-artifact", + change_manifest["session_id"], + expected_artifact["applied_artifact_hash"], + ) + expected_result = { + **expected_artifact, + "applied_record_hash": applied_record["record_hash"], + } + if ( + applied_record.get("applied_artifact") != expected_artifact + or recorded.get("result") != expected_result + ): + raise AgentError( + "BTAG-IDEMPOTENCY-RESULT", + "cached apply result does not match the signed artifact and original bindings", + ) + return expected_result + + def _ensure_applied_session( + self, + result: Dict[str, Any], + change_token: Dict[str, Any], + *, + idempotency_key: str, + ) -> None: + sessions = SessionStore(self.state_root) + session_id = result["session_id"] + session = sessions.load(session_id) + if session["state"] == "APPLY_PREPARED": + sessions.transition( + session_id, + "APPLIED", + "changes-apply", + {"applied_artifact": result["applied_artifact_hash"]}, + idempotency_key=idempotency_key, + approval_token_id=change_token["token_id"], + effect_references={ + "applied_artifact_hash": result["applied_artifact_hash"], + "applied_record_hash": result["applied_record_hash"], + }, + ) + elif session["state"] == "APPLIED": + if ( + session.get("artifacts", {}).get("applied_artifact_hash") + != result["applied_artifact_hash"] + or session.get("artifacts", {}).get("applied_record_hash") + != result["applied_record_hash"] + ): + raise AgentError( + "BTAG-CHANGE-SESSION", + "session is bound to another applied artifact", + ) + else: + raise AgentError( + "BTAG-CHANGE-SESSION", + "session is no longer ready to commit this applied artifact", + ) + + def apply( + self, + change_manifest: Dict[str, Any], + change_token: Dict[str, Any], + *, + idempotency_key: str, + ) -> Dict[str, Any]: + portable = { + key: value + for key, value in change_manifest.items() + if not key.startswith("_") and key != "manifest_hash" + } + if hash_object(portable) != change_manifest.get("manifest_hash"): + raise AgentError("BTAG-CHANGE-HASH", "change manifest hash is invalid") + canonical_manifest = { + **portable, + "manifest_hash": change_manifest["manifest_hash"], + } + prepared_record = self.authority.load_bound_record( + "prepared-change", + str(change_manifest.get("session_id", "")), + str(change_manifest.get("manifest_hash", "")), + ) + if prepared_record.get("change_manifest") != canonical_manifest: + raise AgentError( + "BTAG-CHANGE-RECORD", + "change manifest does not match the signed prepared change", + ) + session = SessionStore(self.state_root).load(change_manifest["session_id"]) + expected_session = { + "artifact_hash": change_manifest["artifact_hash"], + "artifact_record_hash": change_manifest["artifact_record_hash"], + "approved_spec_hash": change_manifest["spec_hash"], + "change_manifest_hash": change_manifest["manifest_hash"], + "dataset_id": change_manifest["dataset_id"], + "dataset_manifest_hash": change_manifest["dataset_manifest_hash"], + "validation_token_hash": change_manifest["validation_token_hash"], + "validation_token_id": change_manifest["validation_token_id"], + } + if session.get("state") not in {"APPLY_PREPARED", "APPLIED"} or any( + session.get("artifacts", {}).get(key) != value + for key, value in expected_session.items() + ): + raise AgentError( + "BTAG-CHANGE-SESSION", + "change manifest no longer matches its prepared session", + ) + change_bindings = { + "artifact_hash": change_manifest["artifact_hash"], + "artifact_record_hash": change_manifest["artifact_record_hash"], + "change_manifest_hash": change_manifest["manifest_hash"], + "dataset_hash": change_manifest["dataset_manifest_hash"], + "dataset_id": change_manifest["dataset_id"], + "session_id": change_manifest["session_id"], + "spec_hash": change_manifest["spec_hash"], + "validation_token_hash": change_manifest["validation_token_hash"], + "validation_token_id": change_manifest["validation_token_id"], + } + self.authority.verify( + change_token, + kind="change", + subject_hash=change_manifest["manifest_hash"], + required_bindings=change_bindings, + ) + action_path = self._action_path(idempotency_key) + request_hash = hash_object( + { + "action": "changes-apply", + "manifest_hash": change_manifest["manifest_hash"], + "token_id": change_token["token_id"], + } + ) + if action_path.exists(): + recorded = self._load_action_record(action_path) + if recorded.get("request_hash") != request_hash: + raise AgentError( + "BTAG-IDEMPOTENCY-CONFLICT", + "idempotency key was already used for another request", + ) + cached_result = self._validate_cached_result( + recorded, + canonical_manifest, + change_token, + ) + self._ensure_applied_session( + cached_result, + change_token, + idempotency_key=idempotency_key, + ) + return cached_result + + effect_id = hash_object( + { + "idempotency_key": idempotency_key, + "request_hash": request_hash, + } + ) + self.authority.consume(change_token, effect_id=effect_id) + + draft = (self.state_root / prepared_record["draft_relative_path"]).resolve(strict=True) + try: + draft.relative_to(self.state_root.resolve()) + except ValueError as exc: + raise AgentError( + "BTAG-CHANGE-SOURCE", + "signed prepared draft escapes the private state root", + ) from exc + resolved: List[tuple] = [] + for change in change_manifest["changes"]: + source_rel = _safe_relative(change["source_relative_path"]) + source = draft.joinpath(*source_rel.parts).resolve(strict=True) + try: + source.relative_to(draft) + except ValueError as exc: + raise AgentError("BTAG-CHANGE-SOURCE", "source escapes draft root") from exc + content = source.read_bytes() + if sha256_bytes(content) != change["source_hash"]: + raise AgentError("BTAG-CHANGE-SOURCE-HASH", "draft bytes changed after prepare") + target = self.roots.resolve( + change_manifest["target_root_id"], + change["target_relative_path"], + for_write=True, + ) + resolved.append((change, target, content)) + + transaction_path = ( + self._transaction_directory(change_manifest["change_id"]) / "transaction.json" + ) + if transaction_path.exists(): + transaction_path, transaction = self._prepare_transaction( + change_manifest, + effect_id, + resolved, + ) + else: + for change, target, _ in resolved: + actual_preimage = sha256_bytes(target.read_bytes()) if target.exists() else None + if actual_preimage != change["expected_target_hash"]: + raise AgentError( + "BTAG-CHANGE-PREIMAGE", + "target changed after preview; prepare a new change manifest", + ) + transaction_path, transaction = self._prepare_transaction( + change_manifest, + effect_id, + resolved, + ) + if transaction["state"] != "COMMITTED": + for change, target, _ in resolved: + actual_preimage = sha256_bytes(target.read_bytes()) if target.exists() else None + if actual_preimage != change["expected_target_hash"]: + raise AgentError( + "BTAG-CHANGE-PREIMAGE", + "target changed after preview; prepare a new change manifest", + ) + self._apply_transaction(transaction_path, transaction, resolved) + + applied_artifact = self._expected_applied_artifact( + canonical_manifest, + change_token, + ) + applied_record = self.authority.store_bound_record( + "applied-artifact", + change_manifest["session_id"], + applied_artifact["applied_artifact_hash"], + {"applied_artifact": applied_artifact}, + ) + result = { + **applied_artifact, + "applied_record_hash": applied_record["record_hash"], + } + atomic_write_json( + action_path, + self._signed_action_record(request_hash, result), + create_only=True, + ) + self._ensure_applied_session( + result, + change_token, + idempotency_key=idempotency_key, + ) + return result diff --git a/src/backtrader_agent/cli.py b/src/backtrader_agent/cli.py new file mode 100644 index 0000000..ed10a77 --- /dev/null +++ b/src/backtrader_agent/cli.py @@ -0,0 +1,535 @@ +"""Typed command-line interface for deterministic agent actions.""" + +import argparse +import json +import re +from pathlib import Path +from typing import Any, Dict, List, Optional, Sequence + +from .audit import IndependenceAuditor +from .canonical import hash_object, sha256_bytes +from .catalog import SnapshotCatalog +from .changes import ChangeManager +from .contracts import StrategySpec +from .data import DatasetService +from .doctor import diagnose +from .engines import inspect_engine +from .errors import AgentError +from .installer import AdapterInstaller +from .repair import RepairWorkflow +from .report import compare_metrics, normalize_metrics +from .roots import RootRegistry +from .runner import ControlledRunner, list_runs +from .scaffold import ArtifactRenderer +from .sessions import SessionStore +from .tokens import TokenAuthority +from .validator import StrategyValidator + + +def _json_file(path: str) -> Dict[str, Any]: + with Path(path).open("r", encoding="utf-8") as handle: + value = json.load(handle) + if not isinstance(value, dict): + raise AgentError("BTAG-CLI-JSON", "input JSON must be an object") + return value + + +def _emit(value: Dict[str, Any]) -> None: + print(json.dumps(value, ensure_ascii=False, indent=2, sort_keys=True)) + + +def _state(args: argparse.Namespace) -> Path: + return Path(getattr(args, "state_root", ".backtrader-agent")).resolve() + + +def _runtime(args: argparse.Namespace): + state = _state(args) + roots = RootRegistry(state) + authority = TokenAuthority(state) + return state, roots, authority + + +def _list_engines(roots: RootRegistry) -> List[Dict[str, Any]]: + """Summarize each registered engine root and its validity. + + An invalid engine is reported with its diagnostic code instead of raising + so a listing command never hides the registry behind one bad root. + """ + + engines: List[Dict[str, Any]] = [] + for record in roots.list(): + if record["kind"] != "engine": + continue + entry: Dict[str, Any] = {"root_id": record["root_id"], "writable": record["writable"]} + try: + descriptor = inspect_engine(roots, record["root_id"]) + entry.update( + { + "status": "valid", + "version": descriptor["version"], + "engine_hash": descriptor["engine_hash"], + } + ) + except AgentError as exc: + entry.update({"status": "invalid", "diagnostic": exc.code}) + engines.append(entry) + return engines + + +RUN_ID_RE = re.compile(r"^run-[0-9a-f]{20}$") + + +def _state_run_result(state: Path, run_id: str) -> Dict[str, Any]: + if not RUN_ID_RE.fullmatch(run_id): + raise AgentError("BTAG-RUN-ID", "run ID is malformed") + path = state / "runs" / run_id / "run-result.json" + if not path.is_file(): + raise AgentError("BTAG-RUN-UNKNOWN", "run result does not exist") + result = _json_file(str(path)) + if result.get("schema_version") != "run-result-v1": + raise AgentError("BTAG-RUN-RESULT", "run result schema is invalid") + expected = result.get("result_hash") + portable = {key: value for key, value in result.items() if key != "result_hash"} + if expected != hash_object(portable): + raise AgentError("BTAG-RUN-RESULT", "run result hash is invalid") + result["metrics"] = normalize_metrics(result.get("metrics", {})) + return result + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="backtrader-agent", + description="Independent deterministic Backtrader agent runtime", + ) + parser.add_argument("--state-root", default=".backtrader-agent") + sub = parser.add_subparsers(dest="command", required=True) + + doctor = sub.add_parser("doctor", help="diagnose environment and packaged capabilities") + doctor.add_argument("--json", action="store_true", help="emit machine-readable JSON") + sub.add_parser("payload", help="return packaged product-owned agent instructions") + + roots = sub.add_parser("roots", help="manage opaque controlled roots") + roots_sub = roots.add_subparsers(dest="roots_command", required=True) + root_register = roots_sub.add_parser("register") + root_register.add_argument("--id", required=True) + root_register.add_argument("--path", required=True) + root_register.add_argument( + "--kind", choices=["workspace", "dataset", "engine", "runtime"], required=True + ) + root_register.add_argument("--writable", action="store_true") + roots_sub.add_parser("list") + + engine = sub.add_parser("engine", help="inspect or list registered Backtrader runtimes") + engine_mode = engine.add_mutually_exclusive_group(required=True) + engine_mode.add_argument("--root-id") + engine_mode.add_argument("--list", action="store_true") + + data = sub.add_parser("data", help="inspect, register, or preview offline data") + data_sub = data.add_subparsers(dest="data_command", required=True) + inspect_data = data_sub.add_parser("inspect") + inspect_data.add_argument("--spec", required=True, help="DataSpec JSON") + register_data = data_sub.add_parser("register") + register_data.add_argument("--spec", required=True, help="DataSpec JSON") + register_data.add_argument("--session-id", required=True) + preview = data_sub.add_parser("preview") + preview.add_argument("--dataset-id", required=True) + preview.add_argument("--rows", type=int, default=5) + data_sub.add_parser("list", help="list registered dataset manifests") + + spec = sub.add_parser("spec", help="validate StrategySpec") + spec.add_argument("--file", required=True) + spec.add_argument("--session-id", required=True) + spec.add_argument("--approve", action="store_true", required=True) + + catalog = sub.add_parser("catalog", help="search or inspect packaged snapshot") + catalog_sub = catalog.add_subparsers(dest="catalog_command", required=True) + search = catalog_sub.add_parser("search") + search.add_argument("--query", required=True) + search.add_argument("--archetype") + search.add_argument("--profile", choices=["single_test", "python_bundle"]) + search.add_argument("--top-k", type=int, default=5) + inspect = catalog_sub.add_parser("inspect") + inspect.add_argument("--entry-id", required=True) + refresh = catalog_sub.add_parser("refresh") + refresh.add_argument("--functional-root-id", required=True) + refresh.add_argument("--package-root-id", required=True) + refresh.add_argument("--allow-count-drift", action="store_true") + + draft = sub.add_parser("draft", help="render a product-owned scaffold") + draft.add_argument("--session-id", required=True) + draft.add_argument("--spec", required=True) + draft.add_argument("--dataset-manifest", required=True) + + validate = sub.add_parser("validate", help="AST/security validate a draft artifact") + validate.add_argument("--artifact-manifest", required=True) + validate.add_argument("--draft-root", required=True) + validate.add_argument("--session-id", required=True) + validate.add_argument("--dataset-hash", required=True) + engine_binding = validate.add_mutually_exclusive_group(required=True) + engine_binding.add_argument("--engine-root-id") + engine_binding.add_argument("--engine-hash") + validate.add_argument("--environment-hash", required=True) + + approval = sub.add_parser("approval", help="request and locally grant one-time actions") + approval_sub = approval.add_subparsers(dest="approval_command", required=True) + approval_request = approval_sub.add_parser("request") + approval_request.add_argument("--kind", choices=["change", "run"], required=True) + approval_request.add_argument("--subject-hash", required=True) + approval_request.add_argument("--bindings", required=True, help="JSON object") + approval_grant = approval_sub.add_parser("grant") + approval_grant.add_argument("--request-id", required=True) + approval_grant.add_argument("--approver", required=True) + approval_grant.add_argument("--confirm", action="store_true", required=True) + + changes = sub.add_parser("changes", help="prepare or apply a confined change set") + change_sub = changes.add_subparsers(dest="change_command", required=True) + prepare = change_sub.add_parser("prepare") + prepare.add_argument("--session-id", required=True) + prepare.add_argument("--draft-root", required=True) + prepare.add_argument("--files", required=True, help="JSON array of source/target entries") + prepare.add_argument("--target-root-id", required=True) + prepare.add_argument("--validation-token", required=True) + apply_action = change_sub.add_parser("apply") + apply_action.add_argument("--manifest", required=True) + apply_action.add_argument("--change-token", required=True) + apply_action.add_argument("--idempotency-key", required=True) + + run = sub.add_parser("run", help="execute a fixed controlled child-process profile") + run.add_argument("--applied-artifact", required=True) + run.add_argument("--dataset-manifest", required=True) + run.add_argument("--validation-token", required=True) + run.add_argument("--run-token", required=True) + run.add_argument("--mode", choices=["runonce", "runnext"], required=True) + run.add_argument("--idempotency-key", required=True) + run.add_argument("--timeout", type=int, default=120) + + run_subject = sub.add_parser( + "run-subject", help="compute the exact hash that a run approval must bind" + ) + run_subject.add_argument("--applied-artifact", required=True) + run_subject.add_argument("--dataset-manifest", required=True) + run_subject.add_argument("--validation-token", required=True) + run_subject.add_argument("--mode", choices=["runonce", "runnext"], required=True) + + compare = sub.add_parser("compare", help="compare two immutable local RunResult objects") + compare.add_argument("--left-run-id", required=True) + compare.add_argument("--right-run-id", required=True) + + report = sub.add_parser("report", help="read an immutable local run report") + report.add_argument("--run-id", required=True) + report.add_argument("--format", choices=["json", "markdown", "html"], default="markdown") + + repair = sub.add_parser( + "repair", + help="revise StrategySpec and deterministically re-render a failed owned draft", + ) + repair.add_argument("--session-id", required=True) + repair.add_argument("--spec", required=True) + repair.add_argument("--dataset-manifest", required=True) + repair.add_argument("--failure-report", required=True) + + session = sub.add_parser("session", help="create, inspect, recover, cancel, or archive") + session_sub = session.add_subparsers(dest="session_command", required=True) + for name in ("create", "status", "recover", "cancel", "archive"): + action = session_sub.add_parser(name) + action.add_argument("--session-id", required=True) + session_sub.add_parser("list", help="list session manifests") + + runs = sub.add_parser("runs", help="list persisted run results") + runs_sub = runs.add_subparsers(dest="runs_command", required=True) + runs_sub.add_parser("list") + + install = sub.add_parser("install", help="preview/apply a native host adapter") + install.add_argument("--target", required=True) + install.add_argument( + "--host", choices=["claude", "codex", "opencode", "openclaw"], required=True + ) + mode = install.add_mutually_exclusive_group(required=True) + mode.add_argument("--preview", action="store_true") + mode.add_argument("--apply", action="store_true") + mode.add_argument("--uninstall", action="store_true") + + audit = sub.add_parser("audit-independence", help="verify no sibling product dependency") + audit.add_argument("--product-root", default=str(Path(__file__).resolve().parents[2])) + return parser + + +def dispatch(args: argparse.Namespace) -> Dict[str, Any]: + if args.command == "doctor": + return diagnose(state_root=_state(args)) + if args.command == "payload": + payload_path = Path(__file__).resolve().parent / "resources" / "agent-payload.md" + content = payload_path.read_text(encoding="utf-8") + return { + "schema_version": "agent-payload-v1", + "payload": content, + "sha256": sha256_bytes(content.encode("utf-8")), + } + state, roots, authority = _runtime(args) + if args.command == "roots": + if args.roots_command == "register": + return roots.register(args.id, Path(args.path), writable=args.writable, kind=args.kind) + return {"roots": roots.list()} + if args.command == "engine": + if args.list: + return {"engines": _list_engines(roots)} + return inspect_engine(roots, args.root_id) + if args.command == "data": + service = DatasetService(roots, state) + if args.data_command == "inspect": + value = service.inspect(_json_file(args.spec)) + value.pop("_canonical_feeds", None) + return value + if args.data_command == "register": + value = service.register(_json_file(args.spec)) + SessionStore(state).transition( + args.session_id, + "DATA_READY", + "dataset-register", + {"dataset": value["manifest_hash"]}, + effect_references={ + "dataset_id": value["dataset_id"], + "dataset_manifest_hash": value["manifest_hash"], + }, + ) + return value + if args.data_command == "list": + return {"datasets": service.list()} + return service.preview(args.dataset_id, rows=args.rows) + if args.command == "spec": + specification = StrategySpec.from_dict(_json_file(args.file)) + sessions = SessionStore(state) + sessions.transition( + args.session_id, + "SPEC_DRAFT", + "spec-draft", + {"spec": specification.spec_hash}, + effect_references={"spec_hash": specification.spec_hash}, + ) + sessions.transition( + args.session_id, + "SPEC_APPROVED", + "spec-approve", + {"spec": specification.spec_hash}, + effect_references={"approved_spec_hash": specification.spec_hash}, + ) + return specification.to_dict() + if args.command == "catalog": + catalog = SnapshotCatalog() + if args.catalog_command == "search": + return { + "results": catalog.search( + args.query, + archetype=args.archetype, + profile=args.profile, + top_k=args.top_k, + ) + } + if args.catalog_command == "inspect": + return catalog.inspect(args.entry_id) + functional = roots.get_record(args.functional_root_id) + packages = roots.get_record(args.package_root_id) + if functional["writable"] or packages["writable"]: + raise AgentError( + "BTAG-CATALOG-ROOT", + "source-attached catalog roots must be registered read-only", + ) + output = state / "catalog" / "source-attached.jsonl" + return SnapshotCatalog.refresh_source_attached( + Path(functional["path"]), + Path(packages["path"]), + output, + require_verified_counts=not args.allow_count_drift, + ) + if args.command == "draft": + specification = StrategySpec.from_dict(_json_file(args.spec)) + value = ArtifactRenderer(state).render( + args.session_id, specification, _json_file(args.dataset_manifest) + ) + sessions = SessionStore(state) + sessions.transition( + args.session_id, + "SOURCES_SELECTED", + "sources-select", + {"catalog": "package-snapshot-v1"}, + ) + sessions.transition( + args.session_id, + "DRAFT_READY", + "draft-render", + {"artifact": value["artifact_hash"]}, + effect_references={"artifact_hash": value["artifact_hash"]}, + ) + return value + if args.command == "validate": + artifact = _json_file(args.artifact_manifest) + artifact["_draft_path"] = str(Path(args.draft_root).resolve()) + if args.engine_root_id: + engine = inspect_engine(roots, args.engine_root_id) + engine_bindings = { + "engine_hash": engine["engine_hash"], + "engine_root_id": args.engine_root_id, + } + else: + engine_bindings = {"engine_hash": args.engine_hash} + value = StrategyValidator(authority).validate_artifact( + artifact, + bindings={ + "dataset_hash": args.dataset_hash, + "environment_hash": args.environment_hash, + **engine_bindings, + }, + approval="validator", + session_id=args.session_id, + ) + SessionStore(state).transition( + args.session_id, + "VALIDATED" if value["status"] == "passed" else "NEEDS_REVALIDATION", + "strategy-validate", + {"validation": value["validation_hash"]}, + effect_references=( + { + "artifact_record_hash": value["validation_token"]["bindings"][ + "artifact_record_hash" + ], + "validation_hash": value["validation_hash"], + "validation_token_hash": hash_object(value["validation_token"]), + "validation_token_id": value["validation_token"]["token_id"], + } + if value["status"] == "passed" + else {"validation_hash": value["validation_hash"]} + ), + ) + return value + if args.command == "approval": + if args.approval_command == "grant": + return authority.grant_approval( + args.request_id, + approver=args.approver, + confirmed=args.confirm, + ) + bindings = json.loads(args.bindings) + if not isinstance(bindings, dict): + raise AgentError("BTAG-CLI-BINDINGS", "token bindings must be a JSON object") + return authority.prepare_approval( + args.kind, + args.subject_hash, + {str(key): str(value) for key, value in bindings.items()}, + ) + if args.command == "changes": + manager = ChangeManager(roots, state, authority) + if args.change_command == "prepare": + files = json.loads(args.files) + if not isinstance(files, list): + raise AgentError("BTAG-CLI-CHANGES", "files must be a JSON array") + return manager.prepare( + session_id=args.session_id, + draft_root=Path(args.draft_root), + files=files, + target_root_id=args.target_root_id, + validation_token=_json_file(args.validation_token), + ) + manifest = _json_file(args.manifest) + return manager.apply( + manifest, + _json_file(args.change_token), + idempotency_key=args.idempotency_key, + ) + if args.command == "run": + return ControlledRunner(roots, state, authority).run( + _json_file(args.applied_artifact), + _json_file(args.dataset_manifest), + _json_file(args.validation_token), + _json_file(args.run_token), + mode=args.mode, + idempotency_key=args.idempotency_key, + timeout_seconds=args.timeout, + ) + if args.command == "run-subject": + subject = ControlledRunner.compute_run_subject( + _json_file(args.applied_artifact), + _json_file(args.dataset_manifest), + _json_file(args.validation_token), + mode=args.mode, + ) + return {"schema_version": "run-subject-v1", "subject_hash": subject} + if args.command == "compare": + left = _state_run_result(state, args.left_run_id) + right = _state_run_result(state, args.right_run_id) + comparison = compare_metrics(left["metrics"], right["metrics"]) + return { + **comparison, + "left_run_id": args.left_run_id, + "right_run_id": args.right_run_id, + } + if args.command == "report": + result = _state_run_result(state, args.run_id) + if args.format == "json": + return result + suffix = "md" if args.format == "markdown" else "html" + report_path = state / "runs" / args.run_id / f"report.{suffix}" + if not report_path.is_file(): + raise AgentError("BTAG-REPORT-MISSING", "requested immutable report does not exist") + content = report_path.read_text(encoding="utf-8") + return { + "schema_version": "report-view-v1", + "run_id": args.run_id, + "format": args.format, + "sha256": sha256_bytes(content.encode("utf-8")), + "content": content, + } + if args.command == "repair": + return RepairWorkflow(state).rerender( + args.session_id, + _json_file(args.spec), + _json_file(args.dataset_manifest), + _json_file(args.failure_report), + ) + if args.command == "session": + sessions = SessionStore(state) + if args.session_command == "create": + return sessions.create(args.session_id) + if args.session_command == "status": + return sessions.load(args.session_id) + if args.session_command == "recover": + return sessions.recover(args.session_id) + if args.session_command == "cancel": + return sessions.cancel(args.session_id) + if args.session_command == "list": + return {"sessions": sessions.list()} + return sessions.archive(args.session_id) + if args.command == "runs": + if args.runs_command == "list": + return {"runs": list_runs(state)} + if args.command == "install": + installer = AdapterInstaller() + if args.uninstall: + return installer.uninstall(Path(args.target), args.host, apply=True) + return installer.install(Path(args.target), args.host, apply=args.apply) + if args.command == "audit-independence": + return IndependenceAuditor(Path(args.product_root)).audit() + raise AgentError("BTAG-CLI-COMMAND", "unknown command") + + +def main(argv: Optional[Sequence[str]] = None) -> int: + parser = build_parser() + args = parser.parse_args(argv) + try: + result = dispatch(args) + except AgentError as exc: + _emit({"status": "failed", "diagnostic": exc.as_dict()}) + return 2 + except (OSError, ValueError, json.JSONDecodeError): + _emit( + { + "status": "failed", + "diagnostic": { + "code": "BTAG-CLI-INPUT", + "severity": "error", + "message": "input could not be read or parsed", + }, + } + ) + return 2 + _emit(result) + return 0 diff --git a/src/backtrader_agent/contracts.py b/src/backtrader_agent/contracts.py new file mode 100644 index 0000000..29ac66b --- /dev/null +++ b/src/backtrader_agent/contracts.py @@ -0,0 +1,268 @@ +"""Typed core contracts with deterministic hashes.""" + +import re +from dataclasses import dataclass +from typing import Any, Dict + +from .canonical import hash_object +from .errors import AgentError + +ARCHETYPES = { + "single_data_indicator", + "multi_indicator_system", + "multi_asset_allocation", + "multi_timeframe", + "pairs_spread", + "order_risk", + "precomputed_ml", +} +PROFILES = {"single_test", "python_bundle"} +SLUG_RE = re.compile(r"^[a-z0-9]+(?:-[a-z0-9]+)*$") +DATASET_ID_RE = re.compile(r"^ds_[0-9a-f]{64}$") +ARCHETYPE_ALIASES = { + "single_indicator": "single_data_indicator", + "multi_indicator": "multi_indicator_system", + "multi_asset": "multi_asset_allocation", +} + + +def _require_text(value: Dict[str, Any], field: str) -> str: + item = value.get(field) + if not isinstance(item, str) or not item.strip(): + raise AgentError("BTAG-SPEC-REQUIRED", f"StrategySpec field '{field}' is required") + return item.strip() + + +@dataclass(frozen=True) +class StrategySpec: + value: Dict[str, Any] + + @classmethod + def from_dict(cls, raw: Dict[str, Any]) -> "StrategySpec": + version = raw.get("spec_version", raw.get("schema_version")) + if version != "strategy-spec-v1": + raise AgentError("BTAG-SPEC-VERSION", "StrategySpec must use strategy-spec-v1") + source = dict(raw) + archetype = ARCHETYPE_ALIASES.get(source.get("archetype"), source.get("archetype")) + output_profile = source.get("output_profile", source.get("profile")) + name = _require_text(source, "name") + slug = _require_text(source, "slug").replace("_", "-") + category = _require_text(source, "category") + dataset_id = _require_text(source, "dataset_id") + if not SLUG_RE.fullmatch(slug) or len(slug) > 120: + raise AgentError("BTAG-SPEC-SLUG", "slug must be lowercase kebab-case") + if not DATASET_ID_RE.fullmatch(dataset_id): + raise AgentError( + "BTAG-SPEC-DATASET", + "dataset_id must be ds_ followed by the full 64-hex semantic hash", + ) + if archetype not in ARCHETYPES: + raise AgentError("BTAG-SPEC-ARCHETYPE", "archetype is not one of the seven P0 values") + if output_profile not in PROFILES: + raise AgentError( + "BTAG-SPEC-PROFILE", + "output_profile must be single_test or python_bundle", + ) + raw_feeds = source.get("feeds") + if not isinstance(raw_feeds, list) or not raw_feeds: + raise AgentError("BTAG-SPEC-FEEDS", "at least one feed is required") + feeds = [] + for index, feed in enumerate(raw_feeds): + if not isinstance(feed, dict): + raise AgentError("BTAG-SPEC-FEEDS", "feed descriptors must be objects") + feed_name = feed.get("name", f"data{index}") + role = feed.get("role", "execution" if index == 0 else "signal") + lines = feed.get("lines", ["open", "high", "low", "close", "volume", "openinterest"]) + if ( + not isinstance(feed_name, str) + or not feed_name.isidentifier() + or role not in {"execution", "signal", "benchmark", "hedge", "cash_proxy"} + or not isinstance(lines, list) + or not lines + ): + raise AgentError("BTAG-SPEC-FEEDS", "feed descriptor is invalid") + feeds.append( + { + "name": feed_name, + "role": role, + "symbol": str(feed.get("symbol", feed_name)), + "timeframe": str(feed.get("timeframe", "manifest")), + "lines": sorted({str(line) for line in lines}), + } + ) + sizing = source.get("sizing") + risk = source.get("risk") + if not isinstance(sizing, dict) or not sizing: + raise AgentError("BTAG-SPEC-SIZING", "sizing rules must be explicit") + if not isinstance(risk, dict) or not risk: + raise AgentError("BTAG-SPEC-RISK", "risk rules must be explicit") + questions = source.get("open_questions", []) + if questions: + raise AgentError("BTAG-SPEC-OPEN", "open questions must be resolved before rendering") + raw_parameters = source.get("parameters", []) + if isinstance(raw_parameters, dict): + raw_parameters = [ + ( + { + "name": parameter_name, + "type": descriptor.get("type", "str"), + "default": descriptor.get("default"), + **({"minimum": descriptor["minimum"]} if "minimum" in descriptor else {}), + **({"maximum": descriptor["maximum"]} if "maximum" in descriptor else {}), + } + if isinstance(descriptor, dict) + else { + "name": parameter_name, + "type": ( + "bool" + if isinstance(descriptor, bool) + else ( + "int" + if isinstance(descriptor, int) + else "float" if isinstance(descriptor, float) else "str" + ) + ), + "default": descriptor, + } + ) + for parameter_name, descriptor in raw_parameters.items() + ] + if not isinstance(raw_parameters, list) or len(raw_parameters) > 64: + raise AgentError("BTAG-SPEC-PARAMETERS", "parameters must be a bounded array") + parameters = [] + parameter_names = set() + for parameter in raw_parameters: + if not isinstance(parameter, dict): + raise AgentError("BTAG-SPEC-PARAMETERS", "parameter descriptor is invalid") + descriptor = dict(parameter) + descriptor["type"] = {"integer": "int", "number": "float", "boolean": "bool"}.get( + descriptor.get("type"), descriptor.get("type") + ) + parameter_name = descriptor.get("name") + if ( + not isinstance(parameter_name, str) + or not parameter_name.isidentifier() + or parameter_name in parameter_names + or descriptor.get("type") not in {"int", "float", "bool", "str"} + or "default" not in descriptor + ): + raise AgentError("BTAG-SPEC-PARAMETERS", "parameter descriptor is invalid") + parameters.append( + { + key: descriptor[key] + for key in ("name", "type", "default", "minimum", "maximum") + if key in descriptor + } + ) + parameter_names.add(parameter_name) + + def rules(value: Any, default: str) -> Dict[str, Any]: + if isinstance(value, dict) and isinstance(value.get("rule_names"), list): + names = value["rule_names"] + elif isinstance(value, str): + names = [default] + else: + names = [default] + if not names or any(not isinstance(item, str) or not item for item in names): + raise AgentError("BTAG-SPEC-RULES", "rule references are invalid") + return {"rule_names": sorted(set(names))} + + run_modes = source.get("run_modes", source.get("execution_modes", ["runonce", "runnext"])) + if run_modes != ["runonce", "runnext"]: + raise AgentError("BTAG-SPEC-MODES", "run_modes must be exactly runonce then runnext") + if source.get("allowed_imports", ["backtrader"]) not in ( + ["backtrader"], + ["backtrader", "json", "os", "math"], + ): + raise AgentError("BTAG-SPEC-IMPORTS", "allowed_imports exceeds the P0 allowlist") + extensions = source.get("extensions", {}) + extension_config = ( + extensions.get("backtrader_agent", {}) if isinstance(extensions, dict) else {} + ) + analyzers = source.get( + "analyzers", + extension_config.get("analyzers", ["TradeAnalyzer", "DrawDown"]), + ) + if not isinstance(analyzers, list) or any( + not isinstance(analyzer, str) or not analyzer for analyzer in analyzers + ): + raise AgentError("BTAG-SPEC-ANALYZERS", "analyzers must be a list of names") + normalized = { + "spec_version": "strategy-spec-v1", + "name": name, + "slug": slug, + "category": category, + "archetype": archetype, + "output_profile": output_profile, + "dataset_id": dataset_id, + "feeds": feeds, + "parameters": parameters, + "entry": rules(source.get("entry"), "enter"), + "exit": rules(source.get("exit"), "exit"), + "sizing": sizing, + "risk": risk, + "cash": float(source.get("cash", 100000.0)), + "commission": float(source.get("commission", 0.0)), + "run_modes": run_modes, + "allowed_imports": ["backtrader"], + "non_goals": [str(item) for item in source.get("non_goals", [])], + "extensions": {"backtrader_agent": {"analyzers": analyzers}}, + } + normalized["spec_hash"] = hash_object( + {key: item for key, item in normalized.items() if key != "spec_hash"} + ) + return cls(normalized) + + def to_dict(self) -> Dict[str, Any]: + return dict(self.value) + + @property + def slug(self) -> str: + return self.value["slug"] + + @property + def archetype(self) -> str: + return self.value["archetype"] + + @property + def profile(self) -> str: + return self.value["output_profile"] + + @property + def spec_hash(self) -> str: + return self.value["spec_hash"] + + @property + def module_slug(self) -> str: + return self.slug.replace("-", "_") + + @property + def parameter_defaults(self) -> Dict[str, Any]: + return {item["name"]: item["default"] for item in self.value["parameters"]} + + +@dataclass(frozen=True) +class DatasetManifest: + value: Dict[str, Any] + + @classmethod + def from_dict(cls, raw: Dict[str, Any]) -> "DatasetManifest": + if raw.get("schema_version") != "dataset-manifest-v1": + raise AgentError("BTAG-DATASET-VERSION", "DatasetManifest version is unsupported") + if not isinstance(raw.get("feeds"), list) or not raw["feeds"]: + raise AgentError("BTAG-DATASET-FEEDS", "DatasetManifest requires feeds") + for feed in raw["feeds"]: + if feed.get("format") not in { + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + "pandas", + "pandas_custom_lines", + "canonical_csv_v1", + }: + raise AgentError("BTAG-DATASET-FORMAT", "dataset adapter is not allowlisted") + return cls(dict(raw)) + + def to_dict(self) -> Dict[str, Any]: + return dict(self.value) diff --git a/src/backtrader_agent/data.py b/src/backtrader_agent/data.py new file mode 100644 index 0000000..a0d54ae --- /dev/null +++ b/src/backtrader_agent/data.py @@ -0,0 +1,649 @@ +"""Offline dataset inspection, canonicalization, registration, and preview.""" + +import csv +import io +import os +from datetime import datetime, timezone +from decimal import Decimal, InvalidOperation +from pathlib import Path +from typing import Any, Dict, List, Optional, Sequence, Tuple + +from .canonical import atomic_write_bytes, atomic_write_json, hash_object, read_json, sha256_bytes +from .contracts import DatasetManifest +from .errors import AgentError +from .roots import RootRegistry + +STANDARD_COLUMNS = ("datetime", "open", "high", "low", "close", "volume", "openinterest") +ALLOWED_FORMATS = { + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + "pandas", + "pandas_custom_lines", +} +TIMEFRAMES = { + "Ticks", + "MicroSeconds", + "Seconds", + "Minutes", + "Days", + "Weeks", + "Months", + "Years", +} +TRANSFORM_PROFILES = {"resample", "replay"} +DEFAULT_COLUMN_NAMES = { + "generic_csv": { + "datetime": "datetime", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + }, + "backtrader_csv": { + "datetime": "date", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + }, + "yahoo_csv": { + "datetime": "Date", + "open": "Open", + "high": "High", + "low": "Low", + "close": "Close", + "volume": "Volume", + "openinterest": None, + }, + "mt5_csv": { + "datetime": "", + "open": "", + "high": "", + "low": "", + "close": "", + "volume": "", + "openinterest": None, + }, + "pandas": { + "datetime": "datetime", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + }, + "pandas_custom_lines": { + "datetime": "datetime", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + }, +} + + +def _number(value: Any, name: str, *, default: Optional[str] = None) -> str: + text = "" if value is None else str(value).strip() + if not text and default is not None: + text = default + try: + number = Decimal(text) + except (InvalidOperation, ValueError) as exc: + raise AgentError( + "BTAG-DATA-NUMERIC", f"column '{name}' contains a non-numeric value" + ) from exc + if not number.is_finite(): + raise AgentError("BTAG-DATA-FINITE", f"column '{name}' contains NaN or Infinity") + if number == 0: + return "0" + return format(number.normalize(), "f") + + +def _parse_datetime(text: str, configured_format: Optional[str]) -> datetime: + stripped = text.strip() + formats = [configured_format] if configured_format else [] + formats.extend( + [ + "%Y-%m-%d", + "%Y-%m-%d %H:%M:%S", + "%Y.%m.%d %H:%M:%S", + "%Y%m%d", + "%Y-%m-%dT%H:%M:%S", + "%Y-%m-%dT%H:%M:%SZ", + ] + ) + parsed: Optional[datetime] = None + for date_format in formats: + if not date_format: + continue + try: + parsed = datetime.strptime(stripped, date_format) + break + except ValueError: + continue + if parsed is None: + try: + parsed = datetime.fromisoformat(stripped.replace("Z", "+00:00")) + except ValueError as exc: + raise AgentError("BTAG-DATA-DATETIME", "datetime value cannot be parsed") from exc + if parsed.tzinfo is None: + parsed = parsed.replace(tzinfo=timezone.utc) + return parsed.astimezone(timezone.utc) + + +def _canonical_datetime(value: datetime) -> str: + return value.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + +def _source_value( + row: Sequence[str], + header: Sequence[str], + mapping: Any, + field: str, + *, + optional: bool = False, +) -> Optional[str]: + if mapping is None: + if optional: + return None + raise AgentError("BTAG-DATA-MAPPING", f"required mapping '{field}' is missing") + if isinstance(mapping, int): + index = mapping + elif isinstance(mapping, str): + try: + index = list(header).index(mapping) + except ValueError as exc: + if optional: + return None + raise AgentError("BTAG-DATA-MAPPING", f"mapped column '{field}' is absent") from exc + else: + raise AgentError("BTAG-DATA-MAPPING", f"mapping '{field}' must be a name or index") + if index < 0 or index >= len(row): + if optional: + return None + raise AgentError("BTAG-DATA-MAPPING", f"mapped column '{field}' is out of range") + return row[index] + + +class DatasetService: + MAX_FILE_BYTES = 64 * 1024 * 1024 + MAX_ROWS = 2_000_000 + MAX_FEEDS = 16 + MAX_COLUMNS = 64 + + def __init__(self, roots: RootRegistry, state_root: Path) -> None: + self.roots = roots + self.state_root = Path(state_root) + self.cas_root = self.state_root / "data" / "sha256" + self.manifest_root = self.state_root / "datasets" + + def _normalize_spec(self, spec: Dict[str, Any]) -> Dict[str, Any]: + if spec.get("schema_version") not in {"data-spec-v1", "dataset-manifest-v1"}: + raise AgentError("BTAG-DATA-SPEC-VERSION", "DataSpec must use data-spec-v1") + feeds = spec.get("feeds") + if not isinstance(feeds, list) or not feeds or len(feeds) > self.MAX_FEEDS: + raise AgentError("BTAG-DATA-FEEDS", "DataSpec must contain 1 to 16 feeds") + names = set() + normalized_feeds = [] + for feed in feeds: + if not isinstance(feed, dict): + raise AgentError("BTAG-DATA-FEEDS", "feed descriptor must be an object") + if feed.get("format") not in ALLOWED_FORMATS: + raise AgentError("BTAG-DATA-FORMAT", "data format is not allowlisted") + name = feed.get("name") + if not isinstance(name, str) or not name or name in names: + raise AgentError("BTAG-DATA-FEED-NAME", "feed names must be non-empty and unique") + names.add(name) + if feed.get("role") not in { + "execution", + "signal", + "benchmark", + "hedge", + "cash_proxy", + }: + raise AgentError("BTAG-DATA-ROLE", "feed role is not allowlisted") + if not isinstance(feed.get("columns", {}), dict): + raise AgentError("BTAG-DATA-COLUMNS", "column mappings must be an object") + if len(feed.get("columns", {})) > self.MAX_COLUMNS: + raise AgentError("BTAG-DATA-COLUMNS", "too many columns") + source = feed.get("source") + if not isinstance(source, dict): + source = { + "root_id": feed.get("root_id"), + "relative_path": feed.get("relative_path"), + "source_type": "local_file", + } + if ( + set(source) != {"root_id", "relative_path", "source_type"} + or source.get("source_type") != "local_file" + or not isinstance(source.get("root_id"), str) + or not isinstance(source.get("relative_path"), str) + ): + raise AgentError("BTAG-DATA-SOURCE", "DataSpec source is invalid") + if feed["format"] in {"pandas", "pandas_custom_lines"}: + suffix = Path(source["relative_path"]).suffix.lower() + if suffix not in {".csv", ".txt", ".tsv"}: + raise AgentError( + "BTAG-DATA-PANDAS-MATERIALIZED", + "Pandas adapters require materialized tabular text; pickle is forbidden", + ) + timeframe = str(feed.get("timeframe", "Days")) + compression = int(feed.get("compression", 1)) + if timeframe not in TIMEFRAMES or compression < 1: + raise AgentError( + "BTAG-DATA-TIMEFRAME", + "feed timeframe and compression must use the typed P0 allowlist", + ) + normalized_feeds.append( + { + "name": name, + "role": feed["role"], + "symbol": str(feed.get("symbol", name)), + "source": source, + "format": feed["format"], + "columns": dict(feed.get("columns", {})), + "timeframe": timeframe, + "compression": compression, + "timezone": str(feed.get("timezone", "UTC")), + "lines": sorted( + { + *STANDARD_COLUMNS[1:], + *( + name + for name in feed.get("columns", {}) + if name not in STANDARD_COLUMNS + ), + } + ), + "extensions": { + "adapter_options": { + key: feed[key] + for key in ( + "datetime_format", + "delimiter", + "headers", + "encoding", + "duplicate_policy", + "bar_semantics", + ) + if key in feed + } + }, + } + ) + alignment = spec.get("alignment", {"mode": "intersection", "minimum_overlap": 1}) + if ( + not isinstance(alignment, dict) + or set(alignment) != {"mode", "minimum_overlap"} + or alignment.get("mode") not in {"intersection", "left", "explicit_asof"} + or not isinstance(alignment.get("minimum_overlap"), (int, float)) + or isinstance(alignment.get("minimum_overlap"), bool) + or not 0 <= alignment["minimum_overlap"] <= 1 + ): + raise AgentError("BTAG-DATA-ALIGNMENT", "alignment mode is unsupported") + master_feed = spec.get( + "master_feed", + next( + (feed["name"] for feed in normalized_feeds if feed["role"] == "execution"), + normalized_feeds[0]["name"], + ), + ) + if master_feed not in names: + raise AgentError("BTAG-DATA-MASTER", "master_feed must name a declared feed") + transforms = spec.get("transforms", []) + if not isinstance(transforms, list): + raise AgentError("BTAG-DATA-TRANSFORM", "transform descriptors are invalid") + normalized_transforms = [] + transformed_feeds = set() + for item in transforms: + if ( + not isinstance(item, dict) + or set(item) != {"profile_id", "parameters"} + or item.get("profile_id") not in TRANSFORM_PROFILES + or not isinstance(item.get("parameters"), dict) + or set(item["parameters"]) != {"feed", "timeframe", "compression"} + ): + raise AgentError("BTAG-DATA-TRANSFORM", "transform descriptor is not typed") + parameters = item["parameters"] + feed_name = parameters.get("feed") + target_timeframe = parameters.get("timeframe") + compression = parameters.get("compression") + if ( + feed_name not in names + or feed_name in transformed_feeds + or target_timeframe not in TIMEFRAMES + or not isinstance(compression, int) + or isinstance(compression, bool) + or compression < 1 + ): + raise AgentError("BTAG-DATA-TRANSFORM", "transform parameters are invalid") + transformed_feeds.add(feed_name) + normalized_transforms.append( + { + "profile_id": item["profile_id"], + "parameters": { + "feed": feed_name, + "timeframe": target_timeframe, + "compression": compression, + }, + } + ) + core = { + "schema_version": "data-spec-v1", + "feeds": normalized_feeds, + "master_feed": master_feed, + "alignment": alignment, + "transforms": normalized_transforms, + "extensions": {"backtrader_agent": {"name": str(spec.get("name", "dataset"))}}, + } + computed_hash = hash_object(core) + supplied_hash = spec.get("spec_hash") + if supplied_hash is not None and supplied_hash != computed_hash: + raise AgentError("BTAG-DATA-SPEC-HASH", "DataSpec spec_hash is invalid") + return {**core, "spec_hash": computed_hash} + + def _read_source(self, path: Path) -> Tuple[bytes, os.stat_result]: + before = path.stat() + if before.st_size > self.MAX_FILE_BYTES: + raise AgentError("BTAG-DATA-SIZE", "dataset file exceeds the P0 size limit") + data = path.read_bytes() + after = path.stat() + if ( + before.st_ino != after.st_ino + or before.st_size != after.st_size + or before.st_mtime_ns != after.st_mtime_ns + or len(data) != after.st_size + ): + raise AgentError("BTAG-DATA-TOCTOU", "dataset changed while it was being read") + return data, after + + def _canonicalize_feed(self, feed: Dict[str, Any]) -> Dict[str, Any]: + source = feed["source"] + source_path = self.roots.resolve( + source["root_id"], source["relative_path"], require_file=True + ) + raw_bytes, stat_result = self._read_source(source_path) + try: + options = feed.get("extensions", {}).get("adapter_options", {}) + text = raw_bytes.decode(options.get("encoding", "utf-8-sig")) + except (LookupError, UnicodeDecodeError) as exc: + raise AgentError( + "BTAG-DATA-ENCODING", "dataset must use an allowlisted text encoding" + ) from exc + delimiter = options.get("delimiter") + if delimiter is None: + delimiter = "\t" if feed.get("format") == "mt5_csv" else "," + if delimiter not in {",", "\t", ";", "|"}: + raise AgentError("BTAG-DATA-DELIMITER", "delimiter is not allowlisted") + rows = list(csv.reader(io.StringIO(text), delimiter=delimiter)) + if not rows: + raise AgentError("BTAG-DATA-EMPTY", "dataset contains no rows") + has_header = bool(options.get("headers", True)) + header = rows[0] if has_header else [str(index) for index in range(len(rows[0]))] + body = rows[1:] if has_header else rows + if len(body) > self.MAX_ROWS: + raise AgentError("BTAG-DATA-ROWS", "dataset exceeds the P0 row limit") + mappings = dict(DEFAULT_COLUMN_NAMES[feed["format"]]) + mappings.update(feed.get("columns", {})) + custom_names = sorted(name for name in mappings if name not in STANDARD_COLUMNS) + output_header = list(STANDARD_COLUMNS) + custom_names + canonical_rows: List[List[str]] = [] + previous: Optional[datetime] = None + duplicate_count = 0 + null_counts = dict.fromkeys(output_header, 0) + for row_index, row in enumerate(body, start=2 if has_header else 1): + if not row or all(not value.strip() for value in row): + continue + raw_date = _source_value(row, header, mappings.get("datetime"), "datetime") + assert raw_date is not None + current = _parse_datetime(raw_date, options.get("datetime_format")) + if previous is not None: + if current < previous: + raise AgentError( + "BTAG-DATA-ORDER", + "timestamps must be monotonic", + details={"row": row_index}, + ) + if current == previous: + duplicate_count += 1 + previous = current + normalized: Dict[str, str] = {"datetime": _canonical_datetime(current)} + for name in ("open", "high", "low", "close"): + normalized[name] = _number( + _source_value(row, header, mappings.get(name), name), name + ) + normalized["volume"] = _number( + _source_value(row, header, mappings.get("volume"), "volume", optional=True), + "volume", + default="0", + ) + normalized["openinterest"] = _number( + _source_value( + row, + header, + mappings.get("openinterest"), + "openinterest", + optional=True, + ), + "openinterest", + default="0", + ) + high = Decimal(normalized["high"]) + low = Decimal(normalized["low"]) + open_value = Decimal(normalized["open"]) + close = Decimal(normalized["close"]) + if high < max(open_value, low, close) or low > min(open_value, high, close): + raise AgentError( + "BTAG-DATA-OHLC", + "OHLC relationship is invalid", + details={"row": row_index}, + ) + for name in custom_names: + raw = _source_value(row, header, mappings[name], name, optional=True) + normalized[name] = "" if raw is None else raw.strip() + if not normalized[name]: + null_counts[name] += 1 + canonical_rows.append([normalized[name] for name in output_header]) + if not canonical_rows: + raise AgentError("BTAG-DATA-EMPTY", "dataset contains no data rows") + duplicate_policy = options.get("duplicate_policy", "reject") + if duplicate_count and duplicate_policy == "reject": + raise AgentError("BTAG-DATA-DUPLICATE", "duplicate timestamps are not permitted") + if duplicate_policy not in {"reject", "allow"}: + raise AgentError("BTAG-DATA-DUPLICATE-POLICY", "duplicate policy is unsupported") + + output = io.StringIO(newline="") + writer = csv.writer(output, lineterminator="\n") + writer.writerow(output_header) + writer.writerows(canonical_rows) + canonical_bytes = output.getvalue().encode("utf-8") + first_row = dict(zip(output_header, canonical_rows[0])) + last_row = dict(zip(output_header, canonical_rows[-1])) + return { + "name": feed["name"], + "symbol": feed["symbol"], + "role": feed["role"], + "format": feed["format"], + "source": { + "root_id": source["root_id"], + "relative_path": source["relative_path"], + "source_type": source["source_type"], + "bytes": stat_result.st_size, + "sha256": sha256_bytes(raw_bytes), + }, + "columns": {name: mappings[name] for name in sorted(mappings)}, + "canonical_columns": output_header, + "datetime_format": "%Y-%m-%dT%H:%M:%SZ", + "timeframe": feed.get("timeframe", "Days"), + "compression": int(feed.get("compression", 1)), + "timezone": feed.get("timezone", "UTC"), + "session": feed.get("session"), + "bar_semantics": options.get("bar_semantics", "close"), + "row_count": len(canonical_rows), + "first_datetime": first_row["datetime"], + "last_datetime": last_row["datetime"], + "duplicate_count": duplicate_count, + "null_counts": null_counts, + "normalized_sha256": sha256_bytes(canonical_bytes), + "_canonical_bytes": canonical_bytes, + } + + def inspect(self, spec: Dict[str, Any]) -> Dict[str, Any]: + normalized_spec = self._normalize_spec(spec) + feeds = [self._canonicalize_feed(feed) for feed in normalized_spec["feeds"]] + public_feeds = [] + for feed in feeds: + clean = {key: value for key, value in feed.items() if not key.startswith("_")} + public_feeds.append(clean) + semantic = { + "schema_version": "dataset-manifest-v1", + "feeds": public_feeds, + "master_feed": normalized_spec["master_feed"], + "alignment": normalized_spec["alignment"], + "transforms": normalized_spec["transforms"], + } + semantic_hash = hash_object(semantic) + return { + **semantic, + "dataset_id": f"ds_{semantic_hash}", + "spec_hash": normalized_spec["spec_hash"], + "semantic_hash": semantic_hash, + "status": "valid", + "diagnostics": [], + "provenance": { + "dataset_name": normalized_spec["extensions"]["backtrader_agent"]["name"], + "sources": [ + { + "root_id": feed["source"]["root_id"], + "relative_path": feed["source"]["relative_path"], + "sha256": feed["source"]["sha256"], + } + for feed in public_feeds + ], + }, + "extensions": { + "backtrader_agent": { + "policy_version": "dataset-policy-v1", + "canonical_format": "utf-8-csv-v1", + "data_spec": normalized_spec, + } + }, + "_canonical_feeds": feeds, + } + + def register(self, spec: Dict[str, Any]) -> Dict[str, Any]: + inspected = self.inspect(spec) + canonical_feeds = inspected.pop("_canonical_feeds") + for feed, canonical in zip(inspected["feeds"], canonical_feeds): + digest = feed["normalized_sha256"] + relative = Path("data") / "sha256" / digest[:2] / f"{digest}.csv" + destination = self.state_root / relative + content = canonical["_canonical_bytes"] + if destination.exists(): + if sha256_bytes(destination.read_bytes()) != digest: + raise AgentError("BTAG-CAS-COLLISION", "CAS object does not match its digest") + else: + atomic_write_bytes(destination, content, create_only=True) + try: + destination.chmod(0o444) + except OSError: + pass + feed.setdefault("extensions", {})["backtrader_agent"] = { + "cas_relative_path": relative.as_posix() + } + manifest_payload = { + key: value for key, value in inspected.items() if not key.startswith("_") + } + manifest_payload["manifest_hash"] = hash_object( + {key: value for key, value in manifest_payload.items() if key != "manifest_hash"} + ) + DatasetManifest.from_dict(manifest_payload) + manifest_path = self.manifest_root / f"{manifest_payload['dataset_id']}.json" + if manifest_path.exists(): + existing = read_json(manifest_path) + if existing != manifest_payload: + raise AgentError("BTAG-DATASET-CONFLICT", "dataset ID has conflicting content") + else: + atomic_write_json(manifest_path, manifest_payload, create_only=True) + return manifest_payload + + def load(self, dataset_id: str) -> Dict[str, Any]: + if ( + not dataset_id.startswith("ds_") + or len(dataset_id) != 67 + or any(character not in "0123456789abcdef" for character in dataset_id[3:]) + ): + raise AgentError("BTAG-DATASET-ID", "dataset ID is malformed") + path = self.manifest_root / f"{dataset_id}.json" + if not path.exists(): + raise AgentError("BTAG-DATASET-UNKNOWN", "dataset is not registered") + manifest = read_json(path) + expected = manifest.get("manifest_hash") + actual = hash_object( + {key: value for key, value in manifest.items() if key != "manifest_hash"} + ) + if expected != actual: + raise AgentError("BTAG-DATASET-HASH", "dataset manifest hash is invalid") + return manifest + + def list(self) -> List[Dict[str, Any]]: + """Return compact summaries of every registered dataset manifest. + + Corrupt manifest files are skipped rather than raising so a listing + command never masks the rest of the registry behind one bad record. + """ + + if not self.manifest_root.is_dir(): + return [] + summaries: List[Dict[str, Any]] = [] + for path in sorted(self.manifest_root.glob("ds_*.json")): + try: + manifest = read_json(path) + except (OSError, ValueError): + continue + summaries.append( + { + "dataset_id": manifest.get("dataset_id"), + "manifest_hash": manifest.get("manifest_hash"), + "master_feed": manifest.get("master_feed"), + "feed_count": len(manifest.get("feeds", [])), + "status": manifest.get("status"), + } + ) + return summaries + + def preview(self, dataset_id: str, *, rows: int = 5) -> Dict[str, Any]: + if rows < 1 or rows > 50: + raise AgentError("BTAG-DATA-PREVIEW", "preview rows must be between 1 and 50") + manifest = self.load(dataset_id) + previews = [] + for feed in manifest["feeds"]: + cas_relative = feed["extensions"]["backtrader_agent"]["cas_relative_path"] + cas_path = self.state_root / cas_relative + content = cas_path.read_bytes() + if sha256_bytes(content) != feed["normalized_sha256"]: + raise AgentError("BTAG-CAS-HASH", "registered CAS object has changed") + records = list(csv.DictReader(io.StringIO(content.decode("utf-8")))) + previews.append( + { + "name": feed["name"], + "role": feed["role"], + "row_count": len(records), + "head": records[:rows], + "tail": records[-rows:], + } + ) + return { + "dataset_id": dataset_id, + "manifest_hash": manifest["manifest_hash"], + "feeds": previews, + } diff --git a/src/backtrader_agent/doctor.py b/src/backtrader_agent/doctor.py new file mode 100644 index 0000000..48a1cad --- /dev/null +++ b/src/backtrader_agent/doctor.py @@ -0,0 +1,140 @@ +"""Environment and packaged-capability diagnosis without candidate imports.""" + +import importlib.util +import platform +import sys +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +from . import __version__ +from .audit import IndependenceAuditor +from .canonical import hash_object +from .engines import inspect_engine +from .errors import AgentError +from .roots import RootRegistry + + +def _git_revision(start: Path) -> Tuple[Optional[str], Optional[str]]: + current = start.resolve() + for candidate in [current, *current.parents]: + marker = candidate / ".git" + if marker.is_dir(): + git_dir = marker + elif marker.is_file(): + text = marker.read_text(encoding="utf-8", errors="replace").strip() + if not text.startswith("gitdir: "): + continue + git_dir = (candidate / text[8:]).resolve() + else: + continue + head_path = git_dir / "HEAD" + if not head_path.is_file(): + return None, None + head = head_path.read_text(encoding="ascii", errors="replace").strip() + if head.startswith("ref: "): + reference = head[5:] + ref_path = git_dir / reference + commit = ref_path.read_text(encoding="ascii").strip() if ref_path.is_file() else None + if commit is None: + packed = git_dir / "packed-refs" + if packed.is_file(): + for line in packed.read_text(encoding="ascii", errors="replace").splitlines(): + if line.endswith(f" {reference}"): + commit = line.split(" ", 1)[0] + break + return reference.rsplit("/", 1)[-1], commit + return None, head + return None, None + + +def _registered_engines(state_root: Optional[Path]) -> List[Dict[str, Any]]: + """Summarize each registered engine root and whether it currently validates. + + Returns an empty list when no state root is given or no roots are + registered. An invalid engine is reported with its diagnostic code rather + than raised so ``doctor`` always reports the full registry. + """ + + if state_root is None: + return [] + registry_path = Path(state_root) / "roots.json" + if not registry_path.is_file(): + return [] + roots = RootRegistry(Path(state_root)) + engines: List[Dict[str, Any]] = [] + for record in roots.list(): + if record["kind"] != "engine": + continue + entry: Dict[str, Any] = {"root_id": record["root_id"], "writable": record["writable"]} + try: + descriptor = inspect_engine(roots, record["root_id"]) + entry.update( + { + "status": "valid", + "version": descriptor["version"], + "engine_hash": descriptor["engine_hash"], + } + ) + except AgentError as exc: + entry.update({"status": "invalid", "diagnostic": exc.code}) + engines.append(entry) + return engines + + +def diagnose(product_root: Optional[Path] = None, state_root: Optional[Path] = None) -> Dict[str, Any]: + default_product_root = Path(__file__).resolve().parents[2] + product = Path(product_root).resolve() if product_root else default_product_root + spec = importlib.util.find_spec("backtrader") + origin = Path(spec.origin).resolve() if spec and spec.origin else None + branch, commit = _git_revision(origin.parent if origin else product) + audit = IndependenceAuditor(product).audit() if (product / "src").is_dir() else None + engines = _registered_engines(state_root) + hints: List[str] = [] + if state_root is not None and not engines: + hints.append( + "No engine root registered. Register a Backtrader source checkout with: " + "backtrader-agent roots register --id --kind engine --path " + ) + capabilities = { + "offline_dataset_cas": True, + "snapshot_catalog": True, + "fourteen_scaffolds": True, + "ast_security_validation": True, + "hash_bound_approvals": True, + "controlled_child_process": True, + "session_hash_chain": True, + "native_host_adapters": ["claude", "codex", "opencode", "openclaw"], + "live_trading": False, + "network_data": False, + "os_sandbox": False, + "verified_network_isolation": False, + } + environment = { + "python_version": platform.python_version(), + "python_implementation": platform.python_implementation(), + "python_executable": str(Path(sys.executable).resolve()), + "platform": platform.platform(), + "backtrader_import_path": str(origin) if origin else None, + "backtrader_branch": branch, + "backtrader_commit": commit, + } + return { + "schema_version": "doctor-report-v1", + "product": "backtrader-agent", + "version": __version__, + "status": ( + "ready" if origin and (audit is None or audit["status"] == "passed") else "blocked" + ), + "environment": environment, + "environment_hash": hash_object(environment), + "capabilities": capabilities, + "engines": engines, + "hints": hints, + "independence_audit": audit, + "limitations": [ + "P0 is offline and does not download market data.", + "The controlled child process is not an OS sandbox.", + "Network isolation is policy-based, not OS-verified.", + "Fresh master/dev baseline orchestration requires separately registered engine roots.", + ], + } diff --git a/src/backtrader_agent/engines.py b/src/backtrader_agent/engines.py new file mode 100644 index 0000000..3104a12 --- /dev/null +++ b/src/backtrader_agent/engines.py @@ -0,0 +1,41 @@ +"""Read-only Backtrader engine-root inspection and hash binding.""" + +import re +from pathlib import Path +from typing import Any, Dict + +from .canonical import hash_object, sha256_bytes +from .errors import AgentError +from .roots import RootRegistry + +VERSION_RE = re.compile(r'^__version__\s*=\s*["\']([^"\']+)["\']', re.MULTILINE) + + +def inspect_engine(roots: RootRegistry, root_id: str) -> Dict[str, Any]: + record = roots.get_record(root_id) + if record.get("kind") != "engine" or record.get("writable"): + raise AgentError( + "BTAG-ENGINE-ROOT", + "engine root must be registered read-only with kind 'engine'", + ) + root = Path(record["path"]).resolve(strict=True) + package = root / "backtrader" + initializer = package / "__init__.py" + version_file = package / "version.py" + if not initializer.is_file() or not version_file.is_file(): + raise AgentError( + "BTAG-ENGINE-LAYOUT", + "engine root must contain backtrader/__init__.py and backtrader/version.py", + ) + version_source = version_file.read_text(encoding="utf-8") + match = VERSION_RE.search(version_source) + descriptor: Dict[str, Any] = { + "schema_version": "engine-runtime-v1", + "root_id": root_id, + "package": "backtrader", + "version": match.group(1) if match else "unknown", + "initializer_sha256": sha256_bytes(initializer.read_bytes()), + "version_file_sha256": sha256_bytes(version_file.read_bytes()), + } + descriptor["engine_hash"] = hash_object(descriptor) + return descriptor diff --git a/src/backtrader_agent/errors.py b/src/backtrader_agent/errors.py new file mode 100644 index 0000000..6b7d08f --- /dev/null +++ b/src/backtrader_agent/errors.py @@ -0,0 +1,33 @@ +"""Stable, redacted errors exposed by the product.""" + +from typing import Any, Dict, Optional + + +class AgentError(RuntimeError): + """A safe failure with a stable diagnostic code.""" + + def __init__( + self, + code: str, + message: str, + *, + hint: Optional[str] = None, + details: Optional[Dict[str, Any]] = None, + ) -> None: + self.code = code + self.message = message + self.hint = hint + self.details = details or {} + super().__init__(f"{code}: {message}") + + def as_dict(self) -> Dict[str, Any]: + value: Dict[str, Any] = { + "code": self.code, + "severity": "error", + "message": self.message, + } + if self.hint: + value["hint"] = self.hint + if self.details: + value["details"] = self.details + return value diff --git a/src/backtrader_agent/installer.py b/src/backtrader_agent/installer.py new file mode 100644 index 0000000..ee6f379 --- /dev/null +++ b/src/backtrader_agent/installer.py @@ -0,0 +1,186 @@ +"""Create-only native host adapter installer.""" + +import json +from pathlib import Path +import shlex +from typing import Any, Dict, List, Mapping + +from .canonical import atomic_write_bytes, atomic_write_json, read_json, sha256_bytes +from .errors import AgentError + +RESOURCE_ROOT = Path(__file__).resolve().parent / "resources" / "adapters" +ADAPTER_RESOURCE_FILES: Mapping[str, Mapping[str, str]] = { + "claude": { + ".claude/agents/backtrader-agent.md": "claude-code/backtrader-agent.md", + }, + "codex": { + ".codex/agents/backtrader-agent.toml": "codex/backtrader-agent.toml", + }, + "opencode": { + ".opencode/agents/backtrader-agent.md": "opencode/backtrader-agent.md", + }, + "openclaw": { + ".openclaw/workspaces/backtrader-agent/README.md": "openclaw/workspace/README.md", + ".openclaw/workspaces/backtrader-agent/AGENTS.md": "openclaw/workspace/AGENTS.md", + ".openclaw/workspaces/backtrader-agent/IDENTITY.md": "openclaw/workspace/IDENTITY.md", + }, +} + + +class AdapterInstaller: + @staticmethod + def _resource_text(relative_path: str) -> str: + path = RESOURCE_ROOT.joinpath(*Path(relative_path).parts) + if not path.is_file() or path.is_symlink(): + raise AgentError( + "BTAG-INSTALL-RESOURCE", + "packaged host adapter resource is missing or unsafe", + ) + return path.read_text(encoding="utf-8") + + @staticmethod + def _openclaw_registration(workspace: Path) -> Dict[str, Any]: + template = json.loads( + AdapterInstaller._resource_text( + "openclaw/workspace/registration-manifest.template.json" + ) + ) + quoted_workspace = shlex.quote(str(workspace)) + first_request = str(template["first_request"]) + quoted_request = shlex.quote(first_request) + template.update( + { + "workspace": str(workspace), + "registration_command": ( + "openclaw agents add backtrader-agent " + f"--workspace {quoted_workspace} --non-interactive" + ), + "invocation_command": ( + "openclaw agent --agent backtrader-agent " f"--message {quoted_request}" + ), + } + ) + return template + + @staticmethod + def _files(root: Path, host: str) -> Dict[str, str]: + files = { + destination: AdapterInstaller._resource_text(resource) + for destination, resource in ADAPTER_RESOURCE_FILES[host].items() + } + if host == "openclaw": + workspace = (root / ".openclaw/workspaces/backtrader-agent").resolve() + registration = AdapterInstaller._openclaw_registration(workspace) + files[".openclaw/workspaces/backtrader-agent/registration-manifest.json"] = ( + json.dumps(registration, indent=2, sort_keys=True) + "\n" + ) + return files + + def install(self, target: Path, host: str, *, apply: bool) -> Dict[str, Any]: + if host not in ADAPTER_RESOURCE_FILES: + raise AgentError("BTAG-INSTALL-HOST", "host adapter is not supported") + root = Path(target).resolve(strict=True) + if not root.is_dir(): + raise AgentError("BTAG-INSTALL-TARGET", "install target must be a directory") + adapter_files = self._files(root, host) + changes: List[Dict[str, Any]] = [] + for relative, content in adapter_files.items(): + destination = root.joinpath(*Path(relative).parts) + encoded = content.encode("utf-8") + if destination.exists(): + if not destination.is_file() or destination.read_bytes() != encoded: + raise AgentError( + "BTAG-INSTALL-CONFLICT", + "existing adapter differs; create-only install refused", + details={"relative_path": relative}, + ) + action = "unchanged" + else: + action = "create" + changes.append( + { + "relative_path": relative, + "action": action, + "sha256": sha256_bytes(encoded), + "size_bytes": len(encoded), + } + ) + if not apply: + result: Dict[str, Any] = { + "status": "preview", + "host": host, + "changes": changes, + } + if host == "openclaw": + workspace = (root / ".openclaw/workspaces/backtrader-agent").resolve() + registration = self._openclaw_registration(workspace) + result["manual_registration"] = { + "required": True, + "command": registration["registration_command"], + "invoke": registration["invocation_command"], + "verify": registration["verification_command"], + } + return result + for relative, content in adapter_files.items(): + destination = root.joinpath(*Path(relative).parts) + if not destination.exists(): + atomic_write_bytes(destination, content.encode("utf-8"), create_only=True) + install_manifest = { + "schema_version": "adapter-install-manifest-v1", + "host": host, + "files": [ + { + "relative_path": relative, + "sha256": sha256_bytes(content.encode("utf-8")), + } + for relative, content in sorted(adapter_files.items()) + ], + } + manifest_path = root / ".backtrader-agent" / "installer" / f"{host}.json" + if manifest_path.exists(): + if read_json(manifest_path) != install_manifest: + raise AgentError("BTAG-INSTALL-MANIFEST", "install manifest conflicts") + else: + atomic_write_json(manifest_path, install_manifest, create_only=True) + status = ( + "unchanged" if all(item["action"] == "unchanged" for item in changes) else "installed" + ) + result = {"status": status, "host": host, "changes": changes} + if host == "openclaw": + workspace = (root / ".openclaw/workspaces/backtrader-agent").resolve() + registration = self._openclaw_registration(workspace) + result["manual_registration"] = { + "required": True, + "executed": False, + "command": registration["registration_command"], + "invoke": registration["invocation_command"], + "verify": registration["verification_command"], + } + return result + + def uninstall(self, target: Path, host: str, *, apply: bool) -> Dict[str, Any]: + root = Path(target).resolve(strict=True) + manifest_path = root / ".backtrader-agent" / "installer" / f"{host}.json" + if not manifest_path.exists(): + raise AgentError("BTAG-UNINSTALL-MANIFEST", "no install manifest exists for host") + manifest = read_json(manifest_path) + removals = [] + for item in manifest.get("files", []): + destination = root.joinpath(*Path(item["relative_path"]).parts) + if destination.exists(): + if sha256_bytes(destination.read_bytes()) != item["sha256"]: + raise AgentError( + "BTAG-UNINSTALL-MODIFIED", + "modified adapter will not be removed", + details={"relative_path": item["relative_path"]}, + ) + removals.append(item["relative_path"]) + if apply: + for relative in removals: + root.joinpath(*Path(relative).parts).unlink() + manifest_path.unlink() + return { + "status": "uninstalled" if apply else "preview", + "host": host, + "remove": removals, + } diff --git a/src/backtrader_agent/repair.py b/src/backtrader_agent/repair.py new file mode 100644 index 0000000..39d91b3 --- /dev/null +++ b/src/backtrader_agent/repair.py @@ -0,0 +1,97 @@ +"""Deterministic repair by revising intent and re-rendering owned scaffolds.""" + +from pathlib import Path +from typing import Any, Dict + +from .canonical import hash_object +from .contracts import StrategySpec +from .errors import AgentError +from .scaffold import ArtifactRenderer +from .sessions import SessionStore + + +class RepairWorkflow: + """Repair only product-owned drafts; never apply arbitrary source patches.""" + + def __init__(self, state_root: Path) -> None: + self.state_root = Path(state_root) + self.sessions = SessionStore(self.state_root) + + def rerender( + self, + session_id: str, + revised_spec: Dict[str, Any], + dataset_manifest: Dict[str, Any], + failure_report: Dict[str, Any], + ) -> Dict[str, Any]: + session = self.sessions.load(session_id) + if session["state"] not in {"FAILED", "NEEDS_REVALIDATION"}: + raise AgentError( + "BTAG-REPAIR-STATE", + "repair requires a failed or invalidated session", + details={"state": session["state"]}, + ) + if failure_report.get("schema_version") not in { + "validation-report-v1", + "run-result-v1", + }: + raise AgentError( + "BTAG-REPAIR-REPORT", + "failure report must be ValidationReport v1 or RunResult v1", + ) + if failure_report.get("status") not in {"failed", "error"}: + raise AgentError("BTAG-REPAIR-REPORT", "failure report is not a failed result") + diagnostics = failure_report.get("diagnostics") + if not isinstance(diagnostics, list) or not diagnostics: + raise AgentError( + "BTAG-REPAIR-DIAGNOSTICS", + "repair requires at least one structured diagnostic", + ) + + spec = StrategySpec.from_dict(revised_spec) + previous_spec_hash = session.get("artifacts", {}).get("approved_spec_hash") + if previous_spec_hash == spec.spec_hash: + raise AgentError( + "BTAG-REPAIR-NO-CHANGE", + "revised StrategySpec must differ from the previously approved specification", + ) + failure_hash = hash_object(failure_report) + if session["state"] == "FAILED": + self.sessions.transition( + session_id, + "REPAIRING", + "repair-start", + {"failure_report": failure_hash}, + effect_references={"failed_report_hash": failure_hash}, + ) + + artifact = ArtifactRenderer(self.state_root).render( + session_id, + spec, + dataset_manifest, + ) + self.sessions.transition( + session_id, + "DRAFT_READY", + "repair-rerender", + { + "failure_report": failure_hash, + "revised_spec": spec.spec_hash, + "artifact": artifact["artifact_hash"], + }, + effect_references={ + "revised_spec_hash": spec.spec_hash, + "artifact_hash": artifact["artifact_hash"], + }, + ) + return { + **artifact, + "repair": { + "schema_version": "repair-result-v1", + "failure_report_hash": failure_hash, + "previous_spec_hash": previous_spec_hash, + "revised_spec_hash": spec.spec_hash, + "old_approvals_reusable": False, + "next_action": "validate", + }, + } diff --git a/src/backtrader_agent/report.py b/src/backtrader_agent/report.py new file mode 100644 index 0000000..7eb2ea5 --- /dev/null +++ b/src/backtrader_agent/report.py @@ -0,0 +1,172 @@ +"""Run result normalization, comparison, and immutable report rendering.""" + +import html +import math +from pathlib import Path +from typing import Any, Dict + +from .canonical import atomic_write_bytes, atomic_write_json, hash_object +from .errors import AgentError + +METRIC_NAMES = ( + "bar_num", + "buy_count", + "sell_count", + "win_count", + "loss_count", + "trade_num", + "final_value", + "sharpe_ratio", + "annual_return", + "max_drawdown", + "return_rate", +) +INTEGER_METRICS = { + "bar_num", + "buy_count", + "sell_count", + "win_count", + "loss_count", + "trade_num", +} +NULLABLE_METRICS = {"sharpe_ratio", "annual_return"} +EVENT_FIELDS = ( + "sequence", + "kind", + "data", + "size", + "price", + "status", +) + + +def normalize_metrics(raw: Dict[str, Any]) -> Dict[str, Any]: + normalized: Dict[str, Any] = {} + for name in METRIC_NAMES: + value = raw.get(name) + if value is None: + if name in NULLABLE_METRICS: + normalized[name] = None + continue + raise AgentError("BTAG-RUN-METRIC", f"metric '{name}' is required") + if name in INTEGER_METRICS: + if isinstance(value, bool) or not isinstance(value, (int, float)): + raise AgentError("BTAG-RUN-METRIC", f"metric '{name}' must be an integer") + normalized[name] = int(value) + continue + if isinstance(value, bool) or not isinstance(value, (int, float)): + raise AgentError("BTAG-RUN-METRIC", f"metric '{name}' must be numeric or null") + number = float(value) + if not math.isfinite(number): + raise AgentError("BTAG-RUN-METRIC", f"metric '{name}' must be finite") + normalized[name] = number + return normalized + + +def compare_metrics( + left: Dict[str, Any], + right: Dict[str, Any], + *, + rel_tol: float = 1e-7, + abs_tol: float = 1e-9, +) -> Dict[str, Any]: + differences = [] + for name in METRIC_NAMES: + first = left.get(name) + second = right.get(name) + if first is None or second is None: + equal = first is None and second is None + elif name in INTEGER_METRICS: + equal = first == second + else: + equal = math.isclose(float(first), float(second), rel_tol=rel_tol, abs_tol=abs_tol) + if not equal: + differences.append({"metric": name, "left": first, "right": second}) + return { + "status": "passed" if not differences else "failed", + "profile": { + "profile_version": "comparison-profile-v1", + "integer_metrics": sorted(INTEGER_METRICS), + "float_metrics": [name for name in METRIC_NAMES if name not in INTEGER_METRICS], + "nullable_metrics": sorted(NULLABLE_METRICS), + "default_float_tolerance": { + "rel_tol": rel_tol, + "abs_tol": abs_tol, + }, + "non_finite": "fail", + "missing_required": "fail", + "null_comparison": "only_equal_to_null", + "event_fields": list(EVENT_FIELDS), + }, + "differences": differences, + } + + +class ReportRenderer: + def render(self, run_root: Path, result: Dict[str, Any]) -> Dict[str, str]: + run_root = Path(run_root) + metrics = result.get("metrics", {}) + extension = result.get("extensions", {}).get("backtrader_agent", {}) + rows = "\n".join( + f"| {name} | {metrics.get(name) if metrics.get(name) is not None else 'null'} |" + for name in METRIC_NAMES + ) + limitations = extension.get("limitations", []) + limitation_lines = "\n".join(f"- {item}" for item in limitations) or "- None recorded" + markdown = f"""# Backtrader Agent Run Report + +- Run ID: `{result['run_id']}` +- Status: `{result['status']}` +- Mode: `{extension.get('mode')}` +- Dataset manifest: `{extension.get('dataset_manifest_hash')}` +- Applied artifact: `{extension.get('applied_artifact_hash')}` + +## Metrics + +| Metric | Value | +| --- | ---: | +{rows} + +## Provenance + +- Run manifest: `{extension.get('manifest_hash')}` +- Validation token: `{extension.get('validation_token_id')}` +- Run token: `{extension.get('run_token_id')}` +- Command profile: `controlled-runner-v1` + +## Honest limitations + +{limitation_lines} +""" + html_rows = "".join( + f"{html.escape(name)}{html.escape(str(metrics.get(name)))}" + for name in METRIC_NAMES + ) + html_limitations = "".join(f"
  • {html.escape(item)}
  • " for item in limitations) + document = ( + '' + "Backtrader Agent Run Report" + f"

    Run {html.escape(result['run_id'])}

    " + f"

    Status: {html.escape(result['status'])}; " + f"mode: {html.escape(str(extension.get('mode')))}

    " + f"{html_rows}

    Limitations

      {html_limitations}
    " + "" + ) + result_path = run_root / "run-result.json" + markdown_path = run_root / "report.md" + html_path = run_root / "report.html" + atomic_write_json(result_path, result, create_only=True) + atomic_write_bytes(markdown_path, markdown.encode("utf-8"), create_only=True) + atomic_write_bytes(html_path, document.encode("utf-8"), create_only=True) + return { + "result": result_path.name, + "markdown": markdown_path.name, + "html": html_path.name, + "report_hash": hash_object( + { + "result": result, + "markdown": markdown, + "html": document, + } + ), + } diff --git a/src/backtrader_agent/resources/adapters/claude-code/backtrader-agent.md b/src/backtrader_agent/resources/adapters/claude-code/backtrader-agent.md new file mode 100644 index 0000000..72d020f --- /dev/null +++ b/src/backtrader_agent/resources/adapters/claude-code/backtrader-agent.md @@ -0,0 +1,14 @@ +--- +name: backtrader-agent +description: Independent Backtrader strategy authoring, validation, and controlled-run agent +tools: Read, Bash +--- +This is the Claude Code discovery adapter, not the product runtime. Use the +installed `backtrader-agent` typed CLI and load its product-owned instructions +with `backtrader-agent payload`. +Never run arbitrary commands or import a candidate in the host process. + +When explicitly invoked, first run `backtrader-agent doctor --json`, then +`backtrader-agent payload`. A suitable first request is: “Use the +backtrader-agent subagent to inspect my offline CSV, clarify a StrategySpec, +generate a strategy, and stop at each apply/run approval.” diff --git a/src/backtrader_agent/resources/adapters/codex/backtrader-agent.toml b/src/backtrader_agent/resources/adapters/codex/backtrader-agent.toml new file mode 100644 index 0000000..745c200 --- /dev/null +++ b/src/backtrader_agent/resources/adapters/codex/backtrader-agent.toml @@ -0,0 +1,12 @@ +name = "backtrader-agent" +description = "Independent Backtrader strategy authoring, validation, and controlled-run agent" +developer_instructions = """ +This is the Codex discovery adapter, not the product runtime. Use the installed +backtrader-agent typed CLI and load its product-owned instructions with +`backtrader-agent payload`. Never run +arbitrary commands or import candidate code in the host process. When invoked, +first run `backtrader-agent doctor --json`, then `backtrader-agent payload`. +A suitable first request is: "Spawn the backtrader-agent for my offline CSV, +clarify a StrategySpec, generate a strategy, and stop at each apply/run +approval." +""" diff --git a/src/backtrader_agent/resources/adapters/openclaw/workspace/AGENTS.md b/src/backtrader_agent/resources/adapters/openclaw/workspace/AGENTS.md new file mode 100644 index 0000000..95df378 --- /dev/null +++ b/src/backtrader_agent/resources/adapters/openclaw/workspace/AGENTS.md @@ -0,0 +1,9 @@ +# AGENTS.md + +Act as the Backtrader Agent. Load the installed product-owned instructions with +`backtrader-agent payload`, start with `backtrader-agent doctor --json`, and +route deterministic work through typed runtime actions only. Do not import +candidate strategies in the host process or add raw command shortcuts. + +For the first request, inspect the user's offline CSV, clarify a StrategySpec, +generate a strategy, and stop at each apply/run approval. diff --git a/src/backtrader_agent/resources/adapters/openclaw/workspace/IDENTITY.md b/src/backtrader_agent/resources/adapters/openclaw/workspace/IDENTITY.md new file mode 100644 index 0000000..d958b7e --- /dev/null +++ b/src/backtrader_agent/resources/adapters/openclaw/workspace/IDENTITY.md @@ -0,0 +1,7 @@ +# IDENTITY.md + +- Name: Backtrader Agent +- Product runtime: installed `backtrader_agent` Python distribution +- State model: stateless host plus explicit hash-chained session artifacts +- Scope: offline Backtrader strategy authoring, validation, controlled tests, + backtests, reports, and recovery diff --git a/src/backtrader_agent/resources/adapters/openclaw/workspace/README.md b/src/backtrader_agent/resources/adapters/openclaw/workspace/README.md new file mode 100644 index 0000000..a93f535 --- /dev/null +++ b/src/backtrader_agent/resources/adapters/openclaw/workspace/README.md @@ -0,0 +1,21 @@ +# Backtrader Agent OpenClaw workspace + +This is an OpenClaw-native workspace adapter. It contains no product logic and +is not automatically registered. Install the `backtrader_agent` Python +distribution into the workspace Python environment; the runtime supplies +contracts, data CAS, validation, runner, reporting, and session recovery. + +After replacing the template path with the generated absolute workspace path, +the user explicitly runs: + +```bash +openclaw agents add backtrader-agent \ + --workspace '/absolute/workspace/path' \ + --non-interactive +openclaw agents list +openclaw agent --agent backtrader-agent \ + --message 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +The generated `registration-manifest.json` contains the exact shell-quoted +workspace path. Use that command rather than copying the placeholder above. diff --git a/src/backtrader_agent/resources/adapters/openclaw/workspace/registration-manifest.template.json b/src/backtrader_agent/resources/adapters/openclaw/workspace/registration-manifest.template.json new file mode 100644 index 0000000..d357a5b --- /dev/null +++ b/src/backtrader_agent/resources/adapters/openclaw/workspace/registration-manifest.template.json @@ -0,0 +1,10 @@ +{ + "agent_name": "backtrader-agent", + "automatic_registration": false, + "first_request": "Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.", + "invocation_command": "openclaw agent --agent backtrader-agent --message ''", + "registration_command": "openclaw agents add backtrader-agent --workspace '' --non-interactive", + "schema_version": "openclaw-registration-manifest-v1", + "verification_command": "openclaw agents list", + "workspace": "" +} diff --git a/src/backtrader_agent/resources/adapters/opencode/backtrader-agent.md b/src/backtrader_agent/resources/adapters/opencode/backtrader-agent.md new file mode 100644 index 0000000..44029dc --- /dev/null +++ b/src/backtrader_agent/resources/adapters/opencode/backtrader-agent.md @@ -0,0 +1,14 @@ +--- +description: Independent Backtrader strategy authoring and controlled backtesting agent +mode: primary +temperature: 0.1 +--- +This is the OpenCode discovery adapter, not the product runtime. Use the +installed `backtrader-agent` typed CLI and load its product-owned instructions +with `backtrader-agent payload`. +Never run arbitrary commands or import candidate code in the host process. + +When selected or mentioned as `@backtrader-agent`, first run +`backtrader-agent doctor --json`, then `backtrader-agent payload`. A suitable +first request is: “Inspect my offline CSV, clarify a StrategySpec, generate a +strategy, and stop at each apply/run approval.” diff --git a/src/backtrader_agent/resources/agent-payload.md b/src/backtrader_agent/resources/agent-payload.md new file mode 100644 index 0000000..efe4c0d --- /dev/null +++ b/src/backtrader_agent/resources/agent-payload.md @@ -0,0 +1,66 @@ +--- +name: backtrader-agent +description: Independent, stateless Backtrader strategy authoring and controlled backtesting agent +--- + +# Backtrader Agent + +This file is the product-owned activation/persona payload. It does not dispatch +to another skill or an MCP server. Native host adapters should load this +product's installed runtime and keep this prompt thin. + +## Identity and boundaries + +You are a Backtrader strategy authoring specialist. Use only the typed +`backtrader-agent` CLI actions and the artifacts they return. Never use hidden +chat memory as workflow state. Never execute arbitrary shell commands, browse +arbitrary files, import candidate strategies in the host process, connect to a +live broker, download data, or promise investment returns. + +The local child-process runner is timeout- and quota-bound but is not an OS +sandbox. Do not claim OS-level or verified network isolation. + +## Menu + +| Code | Intent | Typed route | +| --- | --- | --- | +| DR | Diagnose environment | `doctor` | +| DI | Inspect/register/preview data | `roots`, `data` | +| CS | Search packaged corpus snapshot | `catalog` | +| NW | Create a strategy | `spec`, `catalog`, `draft`, `validate`, `changes`, `run` | +| RV | Review a strategy draft | `validate` | +| BT | Run an approved backtest/test | `run-subject`, `approval`, `run` | +| FX | Repair a failed draft | produce a minimal new draft revision, then revalidate | +| RP | Explain a report | read immutable run result/report artifacts | +| ST | Session status and recovery | `session` | +| HE | Help | `--help` | + +Direct intent routing is allowed. A request such as “register this CSV and +build a strategy” enters NW without showing the menu, but cannot skip dataset +registration, StrategySpec validation, change approval, or independent run +approval. + +## Required workflow + +1. Run doctor and register opaque roots. +2. Inspect and register offline data; retain the DatasetManifest hash. +3. Clarify and validate StrategySpec. Open questions block generation. +4. Search the packaged snapshot and name selected source IDs. +5. Render one of seven archetypes as `single_test` or `python_bundle`. +6. Validate manifest bytes and Python AST. A direct `bt.Strategy` subclass does + not require `super().__init__()` on this fork. Cooperative custom parents or + mixins still follow their MRO. +7. Prepare a confined change manifest. Show exact target paths, preimage hashes, + postimage hashes, and diff. +8. Require explicit apply approval and a change token. Apply idempotently. +9. Revalidate hashes, require separate execution approval and a run token, then + use only the fixed runner profile. +10. Report eleven normalized metrics, provenance, diagnostics, and limitations. +11. Persist every legal state transition in the session hash chain. Recover only + a verified prefix; never guess past damage. + +## Error handling + +Return stable `BTAG-*` diagnostics without secrets, absolute target paths, or +full tracebacks. A failed or stale token requires a new validation/approval +cycle. Completed, cancelled, and archived sessions never silently reactivate. diff --git a/src/backtrader_agent/resources/catalog/corpus-manifest.json b/src/backtrader_agent/resources/catalog/corpus-manifest.json new file mode 100644 index 0000000..202153a --- /dev/null +++ b/src/backtrader_agent/resources/catalog/corpus-manifest.json @@ -0,0 +1,12734 @@ +{ + "corpus_id": "backtrader-corpus-v1", + "counts": { + "functional_tests": 1152, + "mapped": 1032, + "strategy_packages": 1035 + }, + "entries": [ + { + "archetype": "single_data_indicator", + "content_hash": "b9f2a82df95b3331d27c06e53be794c74cefb22d77ea6cd4380605210e5f312f", + "id": "advanced/44_signals_strategy", + "metadata": { + "category": "advanced", + "jsonl_record": 1, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "13734a38778ebbe18c5add3ede9b93a875f054e27727d98dfd61ddeb9c62c115", + "id": "advanced/45_multitrades_strategy", + "metadata": { + "category": "advanced", + "jsonl_record": 2, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a83736cc9af4506039b4773a515b348470e7305833ef42d9e8ab9929cb0731d2", + "id": "advanced/48_strategy_selection", + "metadata": { + "category": "advanced", + "jsonl_record": 3, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1d2d46fac674337efdf1a7495df006ca12ec1a0403cd65de96325625239766aa", + "id": "advanced/51_optimization", + "metadata": { + "category": "advanced", + "jsonl_record": 4, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "335787d70a88726cdefa2f113b1584b4e302c5322c05588cf4ac829077c4f9c6", + "id": "advanced/59_multidata_strategy", + "metadata": { + "category": "advanced", + "jsonl_record": 5, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "ea02437df7db073a46083406aa2357f48dfc72ef1e0462c6478554d2d8fecac5", + "id": "asset_allocation/0001_gold_tactical_allocation", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 6, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "53710839905b3c662c55db97b935e80d49181fd52db8d0a5bec04c207db3d348", + "id": "asset_allocation/0002_gold_60_40_enhancement", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 7, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "451a128723682e110e14119e165fbbf739d7c68d78734507a3564cb937283057", + "id": "asset_allocation/0003_gold_enhanced_60_40", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 8, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "fbf046b0f6457ff5d8ac779c90a139af67900a3fcc9f713c68f51685d11180c1", + "id": "asset_allocation/0004_volatility_managed_portfolio_gold", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 9, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "5d2ab2bd93d9289ca03d501c7232eadefe91507bccb52a2a7f8374ae34613edd", + "id": "asset_allocation/0005_trinity_portfolio_gold", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 10, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "defb637bc5d6117383a38d5116b09aa93741a6e771653b9055a4d07983e7598b", + "id": "asset_allocation/0006_portfolio_optimization_random_data_gold", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 11, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "3361a07ab55dfdee23276535285aeeb8570a9b04883fb2f352246bff28b0764b", + "id": "asset_allocation/0007_permanent_portfolio", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 12, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "115767e391d948dea668bbcaca614cd35a24ea08f9e0bf9de274ef96d4eb4f76", + "id": "asset_allocation/0008_taa_risk_parity_trend", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 13, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "86d4852440c85ebe6b22d5911517596b1b31fcaefed5b43cb4b5feebebfabdb4", + "id": "asset_allocation/0009_dual_asset_leveraged_portfolio", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 14, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "aab4c65f334441aade7828bda9eefddadd2cd63bce617cc0d6e9e72babeaed2f", + "id": "asset_allocation/0010_composite_asset_allocation", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 15, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "7c948071afa07d5668bbe687181af2c97e3b430bc6d94654973bb5c22dc10ae8", + "id": "asset_allocation/0011_sixty_forty_portfolio", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 16, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "41c5167d75f35e8991338fe25c8fe160c9c02b709f34fec5cd954146a0140961", + "id": "asset_allocation/0012_hierarchical_risk_parity", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 17, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "465ae794b2467010456f6b22b6b4c658252bc8df04fc3227bee2cda86eeb6eee", + "id": "asset_allocation/0013_taa_aggregate_timing", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 18, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "b0922027a6582dcc1e5cbab3b4dede96c4892be0d058cb45b3949d4f17850ee9", + "id": "asset_allocation/0014_anti_fragile_portfolio", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 19, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "14295a289fc7a721976b17c2429b5202a0878b38dde32a55c795d7fdb8dad609", + "id": "asset_allocation/0015_herc_portfolio", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 20, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "02c3f88c2b94eb4ba2ad286042764a79a78845f8a1d74b1ad7f091fcd9d8fbcc", + "id": "asset_allocation/0016_open_to_open_taa", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 21, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "3f64148dc3ac149600e68fddc93747d536df6b49b29bd244b5c88e192e66e514", + "id": "asset_allocation/0017_cppi_portfolio_insurance", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 22, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "a7f5cd497bbeafb75c2183a1117597a32143539d9ce9beea0abe5db5f379e511", + "id": "asset_allocation/0018_optimal_gold_allocation_strategy", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 23, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "7478fd141fdcb63fb72f52efe353f198305740531ea419ce2c03eb882870a4e0", + "id": "asset_allocation/0019_crypto_optimal_allocation_strategy", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 24, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "945e1d9bdfc1964cb1ed502c01c822454ba6b288c986b355591ca9d897a73759", + "id": "asset_allocation/0020_volatility_based_allocation_strategy", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 25, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "6052964f28be2fd06b788ebc5318faf82a33e9753813aa11345c904031420e35", + "id": "asset_allocation/0021_equity_bond_allocation_strategy", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 26, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "70c615cff903332d13f35be1880f1dc53babc979721b56d2767f210267598938", + "id": "asset_allocation/0022_adaptive_asset_allocation_strategy", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 27, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "f869e5d21f488742eaae9da2976289a810bee68d420c08884fb27289175f39cc", + "id": "asset_allocation/0023_tactical_asset_allocation", + "metadata": { + "category": "asset_allocation", + "jsonl_record": 28, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0fc4364e3ce31c6783ed246d0faa76666c6f8740438287c1495155c8c6c976db", + "id": "breakout/09_dual_thrust_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 29, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0ed4017a4933be11009294ac92f35752406d4378fa0825472fef5eaab72825a8", + "id": "breakout/105_donchian_channel_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 30, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5397b9950fddcbe2f9dfb8a1e7fca8daa1201cd55158ef23bf478883dd2c444e", + "id": "breakout/10_r_breaker_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 31, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "78fc190a14948f62ce9088676d791f329f647e59f0f6fbb40aca9d66639876a1", + "id": "breakout/115_volume_breakout_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 32, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "09c0d78abf6873ac38029c8c19ea4a47380b7f83c15a9583c47dd15f193a426e", + "id": "breakout/117_price_channel_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 33, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "40ae2266cef562ea491244d8b73da7f9fc8e29fb68d965590485766d09fff986", + "id": "breakout/66_donchian_channel_strategy", + "metadata": { + "category": "breakout", + "jsonl_record": 34, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a528701e3071ec2c9baf74e21c965b2dfe34a07fcfcb1a5c2ded916cf7119cb7", + "id": "calendar_effects/0001_0005_gold_calendar_effect", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 35, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "23ae0d76fef006ad6840f9453bc1617500a90e82ea989ec4a95f8949c567321d", + "id": "calendar_effects/0002_0007_gold_turn_of_month", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 36, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0aaa624a4c60b46cd862bb53bbdc988bd06254d5575456fdb5ddcbac6552574f", + "id": "calendar_effects/0003_0017_gold_seasonality", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 37, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "739e538c2600bb00b750f22e6c0ccf09c38dcc27873ce040b22c1fdb7df34e47", + "id": "calendar_effects/0004_0027_gold_turn_of_month", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 38, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4be0704f53eb6c52820d2f48aca6635303ff34eb6cfe7d0983805f16b1975503", + "id": "calendar_effects/0005_0039_gold_seasonal_windows", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 39, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "99ddd480bf3d04bfba864a71262c851153b1cc113ddd2a3b6432a27beb5a1abd", + "id": "calendar_effects/0006_0043_gold_seasonality_rotation", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 40, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f29dca96b8811a2b247f3e2e3dd48ee5348562ac43a2ec7a546039f107685d85", + "id": "calendar_effects/0007_0097_gold_end_of_month_seasonality", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 41, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "51464c9aca5d3165e24b4d9cf94c3543ab99eeaa7d8685b0ecf31aad0ec768ea", + "id": "calendar_effects/0008_0103_sell_in_may", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 42, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "20090d32ba930b282d619b9b69220c38dd953a4f07f0e89a98ac422c165860cc", + "id": "calendar_effects/0009_0256_thanksgiving_seasonality", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 43, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "79a25cccee48da8850301700e058d1aebf6748272d8874d7a5d0aaf49f8ac7e8", + "id": "calendar_effects/0010_0258_december_opex_seasonality", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 44, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c33a926255cf1c0aeaebac040c0ee6b2ae77c349c31e496eacd31a50cd80ec91", + "id": "calendar_effects/0011_0266_quad_witching_seasonal_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 45, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bf60c0801c87e71af6d5c0adf69e44d33d3fb615d66f1b4996e5c68cff18a3ec", + "id": "calendar_effects/0012_0275_seasonal_flip", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 46, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b8bbb4948acc08981e912e0882893a90b70e62c5bcf57d5cb3caf83a15260dea", + "id": "calendar_effects/0013_0281_composite_seasonal_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 47, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3eb9c6aebd958550a146d4c0c3b9376fb1078b36e3cf5eed011457ed2c7eaeb9", + "id": "calendar_effects/0014_0364_bitcoin_seasonal_anomalies_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 48, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "419d98d8cf7ecf689cdaa0fb97a6600142895685b6c3e76c9274ea5aeb1c9be2", + "id": "calendar_effects/0015_0366_sell_in_may_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 49, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8687224b49b949abbb52566ce4a22bd09fb0b2e6dee1796fa03a63c3ea3087d9", + "id": "calendar_effects/0016_0387_bitcoin_seasonality_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 50, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7eac20c3452f217bc62933e5d6b8511498d4aca28e7429aacca7874a7dcb8ac5", + "id": "calendar_effects/0017_0401_seasonal_sell_august_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 51, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "602414ea255b4c49096410019dda5406f18fe9d962baae502b495b85e32888bd", + "id": "calendar_effects/0018_0402_seasonal_trading_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 52, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ea7a299ef3e65b796541b97feaedec8900b6de407590e4c9773ad4a2e40a59e4", + "id": "calendar_effects/0019_0406_commodity_seasonality_front_running_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 53, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6b364dd5951c86884e58661f10d22bfdcf382a4ba4db2e4b8cbbc89b1280fce9", + "id": "calendar_effects/0020_0407_turn_of_month_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 54, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "883d2d8207ec111188ccefb817abe69858785fe8f496ec73566b1c0ce9399635", + "id": "calendar_effects/0021_0412_cultural_calendar_gold_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 55, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9183938fb0c68aeb972d104f690d5a6d8870b47dcdd57d43a7e52ddf9d127efd", + "id": "calendar_effects/0022_0016_gold_fomc_effect", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 56, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "48f30c0e71e764608aea8ca951993d734e5bd7a411b403e622d966f42b74eeb6", + "id": "calendar_effects/0023_0079_rate_hike_cycle_gold", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 57, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1bcdb89ff899e440c450dd86c996d7d374aadfbb846f063e509bec7ef73ee412", + "id": "calendar_effects/0024_0276_jobs_report_new_high_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 58, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3dd616d31831fd14e21819e7aae779041730a9483e7afc4de014b1dd1d472de1", + "id": "calendar_effects/0025_0282_avoid_earnings_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 59, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1b417fe8f98e3725a9892f826c1e755139b944e4ade70d10ea6fb346f41ad8af", + "id": "calendar_effects/0026_0306_pre_election_drift", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 60, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9adb9f01cdf94ce500660b8f7d4585acd1c67c491893f1226fce52c17879c6ee", + "id": "calendar_effects/0027_0397_fx_news_trading_strategy", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 61, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6d953127a4b4c0beaaec5831f45088b23010133aa83b11c72fa785e7b2e6b9af", + "id": "calendar_effects/0028_expert_news", + "metadata": { + "category": "calendar_effects", + "jsonl_record": 62, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "346c46b4795a3596f80adb702943a7e38b2faece1bc23c39eb3d46e965d4bdf8", + "id": "carry_trading/0001_0031_gold_rate_carry", + "metadata": { + "category": "carry_trading", + "jsonl_record": 63, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "79fdf107eba44eb2ade35ed30d7e1abcf79f6c74a4b43ecf7194e0b7b7457df9", + "id": "carry_trading/0002_0050_gold_relative_value", + "metadata": { + "category": "carry_trading", + "jsonl_record": 64, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dc5303e264b93d740b04bb50a401a19ada74f17f1e06f4b3795cc23c8b075209", + "id": "carry_trading/0003_0393_carry_trading_strategy", + "metadata": { + "category": "carry_trading", + "jsonl_record": 65, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "23a4c58b1abc19a46d7db87496062120af00dda84f74d72d7ff435b177244f21", + "id": "carry_trading/0004_0394_commodity_carry_strategy", + "metadata": { + "category": "carry_trading", + "jsonl_record": 66, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5b54d8eb38ef4d49179e68212d8996df72c74dbd7305ff9cc30539486b213523", + "id": "commodity_currency/0001_gold_change_point_trading", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 67, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6e6d667e6f0b468a05e4ddc6b28bd949d69d05526e889df0933199206d0f4212", + "id": "commodity_currency/0002_gold_walk_forward", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 68, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7a21ae9ca43cd18c78b3c975bc3a39e9cef94864b9a0198683700bccc562094a", + "id": "commodity_currency/0003_gold_factor_timing", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 69, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a2cdee136192d4d096fa7f87906d08f9c004cbd60d7909dc3dac416ec524094e", + "id": "commodity_currency/0004_gold_cot", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 70, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "77f2004cc34aaedadcf5ee5cb4becedaae529369be7861bb06beb53e06f076a8", + "id": "commodity_currency/0005_gold_currency_prediction", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 71, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c3c1894b8f4434801e94bf2538c127d1acf9bc07ac52b9036a2643fae6517839", + "id": "commodity_currency/0006_gold_commodity_trend", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 72, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2ca12dc729c9349dae4e6fed2582fe33204ebadd1411edbc4d6ea1db306d8fb1", + "id": "commodity_currency/0007_gold_quantpedia_strategies", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 73, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "719542e57ba81096e960c30465a14e8ea198fcd32f94588d0a4e79e3389eabad", + "id": "commodity_currency/0008_gold_strategy_lifecycle", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 74, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ede9e1c4c04f711b7f73f7e2b5704d866918094652fc361d984eb8e9df88ed16", + "id": "commodity_currency/0009_gold_ranking_system", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 75, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "267fbb612add5f9b14d95ce6932fc005ab76ec67ce35761b61a58592b8b81f37", + "id": "commodity_currency/0010_gold_real_rate_signal", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 76, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3c2c1b1c6da37938d9f057924a0d2d1ea319bdc2f31a427788fb81f46d2aabde", + "id": "commodity_currency/0011_djia_gold_ratio_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 77, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6569587df56423b304e74be115fe2a781789287bdca81bef55e22de88121edbd", + "id": "commodity_currency/0012_gdx_overnight_session_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 78, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d4c6894b1ed482796e38366a82070ba86c4346dd2985cca1bf9c6edad6e2ac81", + "id": "commodity_currency/0013_arima_garch_gold_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 79, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c9326f106161a6a5e6ebfb5be705f61b40a768afb702a1603abaef6613489d38", + "id": "commodity_currency/0014_gold_market_timing", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 80, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7247b137e2aec390dda047d10aa813928c731289be1f77ab279567f47df68fe8", + "id": "commodity_currency/0015_commodity_skewness_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 81, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c9315690661908eb2c5155e0e145e4e4516353797086d341601ba7fa8068add7", + "id": "commodity_currency/0016_macro_fx_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 82, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ddfea026a186a3bbfca1d9746e93b1575c1cbbbdc2f23a59ed9badde2716e7cb", + "id": "commodity_currency/0017_metal_inventory_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 83, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cae1efe7263f17631e4165d95576dd851a29e8495219c9c0a500e20ab46943f9", + "id": "commodity_currency/0018_fx_regression_learning_strategy", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 84, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "616c744da2ccd3cf6d7c95026d178bb21ae79af8142f8a5003e7bc30033513ce", + "id": "commodity_currency/0019_0019_ka_gold_bot_mt5", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 85, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4df3d839cfbe9eae0c6599c87b7de49df8c435c078661715810a701a702767e9", + "id": "commodity_currency/0020_0698_silvertrend_v3", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 86, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4c4f2937b1ecdec850f108a87ef215dd49d28517b9311e16ceac7b82a756e76e", + "id": "commodity_currency/0021_0910_silvertrend", + "metadata": { + "category": "commodity_currency", + "jsonl_record": 87, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "5a90f1d9df51171778d400b8364e89aed2f9cb5e10cc47e992926bd5076c23d7", + "id": "forecasting/0001_arima_time_series_forecast", + "metadata": { + "category": "forecasting", + "jsonl_record": 88, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "0920762b7a4f36fb01759b5507d45f61e705176a232d431e598a326e08b32f2d", + "id": "forecasting/0002_1003_forecastoscilator", + "metadata": { + "category": "forecasting", + "jsonl_record": 89, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "d59ccccefa9fceb2d8467e9e605eda282768b7c5eb80df231fe7e5d0f1a6dbe1", + "id": "forecasting/0003_1010_ema_prediction", + "metadata": { + "category": "forecasting", + "jsonl_record": 90, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "efd44b879c12cdf9a548b7f97063de598fd7eff78f5640200fd1b384bbbfb0c0", + "id": "grid_trading/0001_moneyrain", + "metadata": { + "category": "grid_trading", + "jsonl_record": 91, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6fa9ff7985220d40d8297a86ee3edde0893a62a1c59c51ec2166c3da5f880d49", + "id": "grid_trading/0002_very_blonde_system", + "metadata": { + "category": "grid_trading", + "jsonl_record": 92, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b48b6c6e3d78355e563efd34f8eb00539a957041c266d48b4db68465cf334c2b", + "id": "grid_trading/0003_frank_ud", + "metadata": { + "category": "grid_trading", + "jsonl_record": 93, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0948b16a914d8f34b225ec5c9265d6ecd1e805df9997883c47958e6e446c8cd9", + "id": "grid_trading/0004_vr_setka_3", + "metadata": { + "category": "grid_trading", + "jsonl_record": 94, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5bc102829a0ee20c34311911e06d4d30fc9285ec33484bc7ff2b69e6a90cc646", + "id": "grid_trading/0005_loco", + "metadata": { + "category": "grid_trading", + "jsonl_record": 95, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "28d75213480e358d380c55e33cce0f90b75e67f8b5121f1ecf3d0dd5c55e3730", + "id": "grid_trading/0006_0463_rndtrade", + "metadata": { + "category": "grid_trading", + "jsonl_record": 96, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "90ebe87fcbd5e39b7bdaa2b2cede47b5e4ed37c7761a514d4eff97a3c535e9fe", + "id": "grid_trading/0007_0555_new_random", + "metadata": { + "category": "grid_trading", + "jsonl_record": 97, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cfafebc94862df52d5e8c2ee5774aab642de1a28987ea71c459434307bc4830b", + "id": "grid_trading/0008_1196_random_robot", + "metadata": { + "category": "grid_trading", + "jsonl_record": 98, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "200e5eee0f08044d6cf734aa6341c3594ac5444719311ba67307264b8ab2f6c8", + "id": "grid_trading/0009_1198_martgreg", + "metadata": { + "category": "grid_trading", + "jsonl_record": 99, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "c5ce116114dc043a5f85e7dfb1e6a4dc3e5cd392829ef6cb509a18cbbea06b9b", + "id": "machine_learning/0001_candlestick_kmeans_classification_gold", + "metadata": { + "category": "machine_learning", + "jsonl_record": 100, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "d9e58634868cca248e39e521e3d48a442243b9b2574fd7982ddaf70c3751316c", + "id": "machine_learning/0002_extreme_short_term_gain", + "metadata": { + "category": "machine_learning", + "jsonl_record": 101, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "ab8a47534d6c2800f73140f967b9571259c36c7a069b227d27148056999c0577", + "id": "machine_learning/0003_gold_ml_prediction", + "metadata": { + "category": "machine_learning", + "jsonl_record": 102, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "1c2b016d717412e7616e7b9587bafd0b14db36398e58278c6ac02309ffe46105", + "id": "machine_learning/0004_reinforcement_learning", + "metadata": { + "category": "machine_learning", + "jsonl_record": 103, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "8b796a8a9f0832ba3f85891368f9738365013a83acd1a28ccb1a4399f319f544", + "id": "machine_learning/0005_random_forest_financial_ratios_strategy", + "metadata": { + "category": "machine_learning", + "jsonl_record": 104, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "680313962d00c9233b3abbb1af217c95d601aec3d14627acb3403c00d964648a", + "id": "machine_learning/0006_sentiment_signal_strategy", + "metadata": { + "category": "machine_learning", + "jsonl_record": 105, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "98bf4263affe3666ae0ca30531bf1a48854861d44120c8b8789fa8547bf49a90", + "id": "machine_learning/0007_0007_heads_or_tails", + "metadata": { + "category": "machine_learning", + "jsonl_record": 106, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "9af53a9a32c9499a2610dba263fa4b2b58b2c3d737ac2b3f18d804287be1ea84", + "id": "machine_learning/0008_0187_rnn", + "metadata": { + "category": "machine_learning", + "jsonl_record": 107, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "3f0dba24734188c15f717a4f2a4fe7249a7efc1332db2eca5e59e5b81fe8488c", + "id": "machine_learning/0009_0238_exp_skyscraper_fix_coloraml_mmrec", + "metadata": { + "category": "machine_learning", + "jsonl_record": 108, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "27b0bb9895ab668a6d756eb81f11d2466e58b055085987ed3cac52993f7573b8", + "id": "machine_learning/0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec", + "metadata": { + "category": "machine_learning", + "jsonl_record": 109, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "2e62eba43e7aa7936b604f7dd2c80df950a4952ea0cc31c37ad8af98f8484750", + "id": "machine_learning/0011_0384_ais2_trading_robot", + "metadata": { + "category": "machine_learning", + "jsonl_record": 110, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "b1330aed3a787b0ea849e1f82dab6d5d9b0e70fd6614eda8d81d062d928d522c", + "id": "machine_learning/0012_0429_donchain_counter", + "metadata": { + "category": "machine_learning", + "jsonl_record": 111, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "5571f5e518687079a398adf60905c31b5ec99dd3902f31453b9d9c25e2ab265f", + "id": "machine_learning/0013_0514_daily_breakpoint", + "metadata": { + "category": "machine_learning", + "jsonl_record": 112, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "f8c920275e926befea54def79b33e2257377a854799c15bcb4d5e1174e5bc767", + "id": "machine_learning/0014_0688_fuzzy_logic", + "metadata": { + "category": "machine_learning", + "jsonl_record": 113, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "49aca744e00563bc65ed4f0d618ae5e9130d778aaa67110ec7a75fd8943bdcda", + "id": "machine_learning/0015_0715_mtc_neural_network_plus_macd", + "metadata": { + "category": "machine_learning", + "jsonl_record": 114, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "d70717a614acc99cd271bb1ba4b7fad74e7ae5d5bdfc407474498224e8dd6183", + "id": "machine_learning/0016_0726_zerolagea_aip_v0_0_4", + "metadata": { + "category": "machine_learning", + "jsonl_record": 115, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "564674fe7c5a636e73068b470c74220962976d0736f48a2ae161896fbf96f41e", + "id": "machine_learning/0017_0797_artificial_intelligence", + "metadata": { + "category": "machine_learning", + "jsonl_record": 116, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "e3cf1932a1198520b76357fdf1a946287903a3e369d7f571936ba44045d3cca6", + "id": "machine_learning/0018_1086_cronex_chaikin", + "metadata": { + "category": "machine_learning", + "jsonl_record": 117, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "a0b2f2ab8cd624f79053514ed4033c6f72426aa6116b35e63e2de0ae081a0d17", + "id": "machine_learning/0019_1154_artificial_intelligence", + "metadata": { + "category": "machine_learning", + "jsonl_record": 118, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "482ed015be5cfe400615dad1ae659519b9455c402e379f5be93625531c50af76", + "id": "machine_learning/0020_1225_aml", + "metadata": { + "category": "machine_learning", + "jsonl_record": 119, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "dd36ada7883a56424dfc00c4193de9c6ba6eaa30e118a4f6715c28bcc9fcebf1", + "id": "machine_learning/0021_1293_jbrainsig1_ultra_rsi", + "metadata": { + "category": "machine_learning", + "jsonl_record": 120, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e19a4064def5430d6d0f50f0b09e2f89097e37f65e993480b94b600f377027d0", + "id": "mean_reversion/0001_gold_momentum_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 121, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7c9dbd2e8e1aa2a0f10eaa0c63be20727c4b1aaf553424497ad52cc59ee66229", + "id": "mean_reversion/0002_double_7s_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 122, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "22034be69cc54e990ab73568acd4c2d635106b180d8df37838a66672bdc7eb4d", + "id": "mean_reversion/0003_gold_event_momentum_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 123, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "56838f8f2e7db9787b91b0b35dc77601cef2776e1e3ca595803770cd58d19a7f", + "id": "mean_reversion/0004_rsi2_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 124, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "25e75c8d2341918d6178d124154ec44dd11e89371d9fa119982756c595cb50e5", + "id": "mean_reversion/0005_holiday_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 125, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b5cb410aaa551bbae4902800c2a550f84254337854bebafe05ee932766087ea2", + "id": "mean_reversion/0006_gold_event_momentum_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 126, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6c5699dd9db4961394fc67eb79d55c44fbefcf476ebabeb3cee4c5c8aa2bde36", + "id": "mean_reversion/0007_gold_market_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 127, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3ae83f86a612c3cc154138a5581c8b7d5deaed0a6b338ca57f3b7cfbaf1878d1", + "id": "mean_reversion/0008_consecutive_down_days", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 128, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "33ccfd588ee0a8af1e8405b47cfb4eec77d2dc03927e76a35ce0cc5034aa70b3", + "id": "mean_reversion/0009_cointegration_mean_reversion_gold", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 129, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6c76c262eb1dd2c6a746f1d1488104ce020d0fe67f2c28cd3c94887a6aa3181f", + "id": "mean_reversion/0010_double_n_gold", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 130, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2e5cde2df9285a71cb259870a06841bc6f430e9c65806c857b474f08b86197b8", + "id": "mean_reversion/0011_mean_reversion_stops_scale", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 131, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "690286a1e0920dc643c6a4a7124315f991780d2c5b1406d9ad9bcfd4a32ed3ca", + "id": "mean_reversion/0012_mean_reversion_momentum_vol", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 132, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e3ecb3f989952fabfcf85a9c198c19ff164574fe41b4f09adfb735b82464265a", + "id": "mean_reversion/0013_commodity_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 133, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bf912629d67fee5961d80b63cc9c02313b103fe810d0f82b1b4a4871a1584c99", + "id": "mean_reversion/0014_gold_intraday_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 134, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "58854437a8bf498ceea53c7f1dbee678b523b8abe5cf318e1059ec9a285a0955", + "id": "mean_reversion/0015_simple_connorsrsi_sp500", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 135, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "626e6f7cd2477cab9c00e7c40278132920cd8648e62b332d9ab5fc650340533e", + "id": "mean_reversion/0016_intraday_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 136, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2beda78562423f1ff34abeb4a232df44e8f416ff7a04ca5049f5a16f6055b25b", + "id": "mean_reversion/0017_roc_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 137, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e8be59cdb2def45816c6291e6a1066f23ed12c8c76ae551a833038aa1b7bcb6c", + "id": "mean_reversion/0018_n_day_exits", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 138, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0bd02574b81ac322a79c700f4b37402413ed386558e79b3566894c044ff8d7b6", + "id": "mean_reversion/0019_volatility_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 139, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0ce071a9d22df750a51086a06bfd8f5e1895250f45abc0e585bbef4d6f2092b2", + "id": "mean_reversion/0020_connorsrsi_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 140, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aa1e7af62399d89aae7b0188128e8f4549bbdb6fceab0fd1e008c01dea8786f8", + "id": "mean_reversion/0021_connorsrsi_optimization_selection", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 141, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0265c09589ec47d28067ba214b8a6ddd5001e8eb6510c62efcf6e61e758f5c1e", + "id": "mean_reversion/0022_dynamic_momentum_contrarian", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 142, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "50a7488df2841037e05103a1286927803597e67825c3f5d70145597f24f71b33", + "id": "mean_reversion/0023_connorsrsi_sensitivity_analysis", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 143, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a4cf9476aab090f3ddeeb8ce095c50038ef2e07ba34fe07bf041db065ddf2cc6", + "id": "mean_reversion/0024_mean_reversion_guide", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 144, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a3a5f17de05ad5b908e19b54fba600f6d4ebab463a5d2f2d8f17a272a75a2b99", + "id": "mean_reversion/0025_weekly_mean_reversion_rotation", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 145, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d031b4823376596882f1b1dd9a2ec36d4ae6b035c027b980686301a4a6b659c4", + "id": "mean_reversion/0026_index_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 146, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d8dcd6f1b339e52b1f829a7608fa682dfbbb32dbccd58c670ad7e25ebac8b048", + "id": "mean_reversion/0027_mean_reversion_across_markets", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 147, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e15fd4e6a6e4fe023df0e017060f3f0cdfb7ba1fb59eb64d61e488dd378b7960", + "id": "mean_reversion/0028_rsi_oversold_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 148, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "976162065048c5a2de2a7c5fafd277d2f2d92df1cf23d4e2d12a385b365ebf2f", + "id": "mean_reversion/0029_consecutive_low_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 149, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f60e39846f0498c8a67e26ca3522441107010a9c1f49135e37cc586642082d6b", + "id": "mean_reversion/0030_rsi_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 150, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a1bf00e2c6bbad302ea40aed35806fd406ef3bcb946948177766070e8a1d4e3c", + "id": "mean_reversion/0031_simple_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 151, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7e7e8bebf118bec0b3cb97a8e32e198d9dbcc75e8c749476c867ac844a7fc70d", + "id": "mean_reversion/0032_online_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 152, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0f0db060c7aba8ea399ff602c19571f1a78336f531b679dcd20a35d50837cc99", + "id": "mean_reversion/0033_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 153, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "30613fde127ddabb8ec34f93369054c69e34a122a65e4b9b75e4696a94ed3349", + "id": "mean_reversion/0034_weekly_reversal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 154, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "08f6b82fc2790ab9572a00590d3150093146ff26bcaf14616f3aa808cc80baac", + "id": "mean_reversion/0035_candlestick_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 155, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "97a26302627d179250967d7390bb68c7ca5a4100b909d0472af72b17971e4dbb", + "id": "mean_reversion/0036_sparse_mean_reversion_portfolio", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 156, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f51fba0d298a7b6433df977f56a29aaef79f549d2b8c11961950ddd842c7988b", + "id": "mean_reversion/0037_min_profit_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 157, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d493bf56e051840f74829250580c17aac9687c3de2d42068fdd8046163b9d89a", + "id": "mean_reversion/0038_mean_reversion_entry", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 158, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a3c9459e742a508aa532fdf39fe0942a52d5e5b1abd1c7291953445aaeb899d", + "id": "mean_reversion/0039_bitcoin_trend_mean_reversion_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 159, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "89ef33518d9ef0f40add28cd44f9bda58e16c54e2ad47be4e7f3452f2f195ae6", + "id": "mean_reversion/0040_mean_reversion_check", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 160, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e4c1e6298e722185b4005bc6401e07017e7ee97ddf852e4785d5763d7f299fd9", + "id": "mean_reversion/0041_efficiency_ratio_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 161, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ac2f886046ac6e8a248bee1a01833728e480581f93e09f060a8273c733727f71", + "id": "mean_reversion/0042_0046_the_rsi_engine", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 162, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0862fb239cec85c4187d60084a174b997d9390da4eb25bf6260d714df6827209", + "id": "mean_reversion/0043_0060_stoch_cross_ea_h1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 163, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5ccf06d36a44e5e1d799fafe7237395f06d0c237d398c6fbd4b5ed0c17924026", + "id": "mean_reversion/0044_0106_mean_reversion", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 164, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "49230a59f718285ad5cf98429b0e2b1b6a4a81da6dbad68b873a601d30f89b73", + "id": "mean_reversion/0045_0108_icho_trend_ccidualonma_filter", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 165, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2c6e9fc76c16ffaf7ed4a1fcf5c20d1ea0b04b4fad92a931ec9e5add70b4b4e", + "id": "mean_reversion/0046_0110_ma_trend_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 166, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d8e504b64d835b87a643f74f2b42bf5dbd1d0ee6a53c1c9b4026ce6edecd65d0", + "id": "mean_reversion/0047_0132_exp_spearmanrankcorrelation_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 167, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e84047193f409212785b187f478bd3bbcefb83475b1de00e1763911ec6a8dea3", + "id": "mean_reversion/0048_0154_exp_finetuningmacandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 168, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3c5b1b7fa8ab0644a838650c09a32bf18d5a23aa7e8dcdeac7a8493ff73d77d7", + "id": "mean_reversion/0049_0166_nrtr_revers", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 169, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1e2ce940c43f4a4a5c493adfbb7ffad1499ae7011205e54d64296fe678b7c548", + "id": "mean_reversion/0050_0167_extreme_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 170, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "32c8c2acefaa5a3e3d6b094c7a22c5d93c788b88b24e4fe21bce9ff51ad4e29f", + "id": "mean_reversion/0051_0171_rsi_rftl_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 171, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "947da61f941ae2a51265ddfab94183a2268ca11411b099fcdc7f9b5252098a3a", + "id": "mean_reversion/0052_0172_exp_timezonepivotsopensystem", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 172, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a5bbe4accff67287ae78545ca6480c8fae9658c4f51007ddcf4b663ec1491dcb", + "id": "mean_reversion/0053_0176_exp_hans_indicator_cloud_system", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 173, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8bcaab82cc186465dae3eaba631a07a6bfe48e21b609587dce2cbbe13600b298", + "id": "mean_reversion/0054_0177_exp_hans_indicator_cloud_system_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 174, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f63c6c397b41e2cdb561296e3da8fd8aac424d32e615cc3b0ee69cf0b8c5bd75", + "id": "mean_reversion/0055_0178_exp_timezonepivotsopensystem_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 175, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e28c1590e6c005e063d59064485654321582d828f10aea09e856b8bc32f0452b", + "id": "mean_reversion/0056_0181_exp_vortexindicator_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 176, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "685932df0020013c3ff4cbedd47470aa58f3dd19964e00af0561fcfce2ba1a57", + "id": "mean_reversion/0057_0182_exp_colormetro_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 177, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c4be108efd432aa9031bd043091c9e55f30ae81612dcecc43209a7bc98820c83", + "id": "mean_reversion/0058_0183_exp_colormarsi_trigger_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 178, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c65380085ea23b3bf6c6831ddee1e87325df957d7c5b4f121c2534d385e60c28", + "id": "mean_reversion/0059_0184_exp_adaptiverenko_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 179, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6f959e08d79c125d73639502d49e55d11d977e18173efcd9995136471feabe1b", + "id": "mean_reversion/0060_0190_xbullsbearseyes_vol", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 180, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ac8dbeabd29c44768908e3aa3b59def5fcb40702ffbef012013d162896920f4e", + "id": "mean_reversion/0061_0191_xbullsbearseyes_vol_direct", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 181, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "48a3add58d7bb76eab4cf593aa056440cc234ba8bd053126bb8f8817531427b4", + "id": "mean_reversion/0062_0194_starter", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 182, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a5000b35704386a20a7fe390c67aa3d6ce2d1e16de262d0f47cce6e4a9a2df33", + "id": "mean_reversion/0063_0197_exp_finetuningmacandle_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 183, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a7a714ad2ee4597dce46eebdc2d3ef56764ad1cc09ccb5fd574a69cf6c5486d", + "id": "mean_reversion/0064_0229_exp_xdemarker_histogram_vol_direct", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 184, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a20094918d2835b9b2108943d0ddb8d4005a0b8e097fcca6b6cc40a88318bae0", + "id": "mean_reversion/0065_0231_ohlc_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 185, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "14063b5fea5e3a5b98596c9361a0e348bb8e4172f0815a597553103f613c7f63", + "id": "mean_reversion/0066_0232_exp_skyscraper_fix_duplex", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 186, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "648ed222fce65ec602e1f45f056b2c557b2550433741a92c7b7f86dc1c4d4530", + "id": "mean_reversion/0067_0233_exp_jfatlcandle_mmrec", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 187, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9aa18d2e1006382b860eb20865748bc2c22e874822a8012f967619609b705725", + "id": "mean_reversion/0068_0234_exp_x2macandle_mmrec", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 188, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e0d734c4ad8706c04805121ee47ec14f96272da021a96ad9d454ea76c9b9df9b", + "id": "mean_reversion/0069_0236_exp_skyscraper_fix_coloraml", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 189, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bc1e9dbfbe8e4843aa86060640a9903267288ebb6859aba446894fc05107268f", + "id": "mean_reversion/0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 190, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6ca496dc6c9ceaefe78039d12eaf3aeaeb3a7d60ecfd9789af2746fafeaa8af6", + "id": "mean_reversion/0071_0242_autotrader_momentum", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 191, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "410e6f1d491c4c8b360ad312255f47646483c8a2c1f5d928f73d0c91c39ab5d5", + "id": "mean_reversion/0072_0243_exp_i_anyrangecldtail_system_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 192, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0c6ac5edeb92e9e9c1036370c2422329b2a48def144cc53388d85a4a15a5f469", + "id": "mean_reversion/0073_0245_exp_iin_ma_signal", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 193, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8790dbc74db8f57fd26946227ec1d4c314df314cc4e35fcd0bc28f89fed32565", + "id": "mean_reversion/0074_0250_exp_xcci_histogram_vol", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 194, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1ca6c7c12fabf87972aa3ff38af59f7bd0be2b6019c57d201599fa79254ae8c8", + "id": "mean_reversion/0075_0251_exp_xrsi_histogram_vol", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 195, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3aa4af412bea46cc7b11d7120a6973ba8c9dcc2ab02c6bd69098fe8709a78d5d", + "id": "mean_reversion/0076_0253_vr_buch", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 196, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d8266c6c9900a0ed1d6acbc031d243080b86e8534a978a836e79e772f65c551e", + "id": "mean_reversion/0077_0254_exp_iin_ma_signal_mmrec", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 197, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ca211e4b87d3818104625e3c25f508f21c0e27b79afd4cfb1b1a947dc02c93ba", + "id": "mean_reversion/0078_0256_basic_cci_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 198, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "28f5acc117cf46c977f942ff7f457297074e930970c9c71a04fb4bfc6e41dc53", + "id": "mean_reversion/0079_0257_exp_xrsi_histogram_vol_direct", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 199, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1bbdfab14e474ac2e583dd155a848b4b4a65a237d064dde0084e53c5e238302b", + "id": "mean_reversion/0080_0258_exp_xcci_histogram_vol_direct", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 200, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "72ec8b0ee91ed5d67cd28b87694c5c75d9cbb1466ea514dbb2834455aec13f25", + "id": "mean_reversion/0081_0260_exp_trendmanager_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 201, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "eebe5ed3ca090d673609c15974581253ad9b8d5a27b6c6a1206691c191e1d6e9", + "id": "mean_reversion/0082_0262_breadandbutter2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 202, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3d6d2f91b02f4450c64bd5c0069924b1aab718c450fdbab0e9e3691ad02a49c9", + "id": "mean_reversion/0083_0265_daydream", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 203, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e0c41c2c3e1940517d9a9a6429175426fbd590dde59c670605e16ac0751acb0f", + "id": "mean_reversion/0084_0266_js_ma_sar_trades", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 204, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "58ad3e2b8f89428d3b91d8522ae19693def1b4a9dc7118f765db4d25367001a2", + "id": "mean_reversion/0085_0267_ft_cci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 205, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "33eaeb1f5d24273c46eef7397aa3e7571132324c67e2752b9c820c230bd78c73", + "id": "mean_reversion/0086_0268_ascv", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 206, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7836b7d2e139cded90ff8c128c24b8368ab7397ab70ae25f04d038d0cfcc67b5", + "id": "mean_reversion/0087_0271_sensitive", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 207, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "897227e50cbd900bed0057d0b25a0fe8079151044f7528dec187724d94c347cb", + "id": "mean_reversion/0088_0273_1h_eur_usd", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 208, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c796fbe8bf0dbd211c72dad2c93b07012e939f596b113a8e7400c816717ce5f1", + "id": "mean_reversion/0089_0277_ohlc_check", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 209, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8135705d0dd6aef27e5cabca1db46b6486ad490143b856b7195e0e83e43e316f", + "id": "mean_reversion/0090_0279_russian20_hp1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 210, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "55c067460f51ca01a5815248ac84ade0596816b92cce4024ad4cab8194adb4c9", + "id": "mean_reversion/0091_0280_exp_trading_channel_index", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 211, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "70bea761c2e1bbae1366421ebbcd8fd575206ebb26b981df96d24b3f8a2416ed", + "id": "mean_reversion/0092_0281_exp_trend_intensity_index", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 212, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f58f8a4f0e5078523b59946b130be9e9b9e92e1d514e0c0afa2820e23cefa9c3", + "id": "mean_reversion/0093_0284_nextbar", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 213, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fd93bef9e02319777eb20365d13c21a324dcd62553a203a97b325c4fe34ebfc7", + "id": "mean_reversion/0094_0287_55_ma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 214, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e931dcdc2c33153c443d7f017d3142a2ae7939d71f18d42846fc8efed48ad575", + "id": "mean_reversion/0095_0288_above_below_ma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 215, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5369439a8e458a6cf74b5a1adf6dc1612d1da0f6fc60c67dd846a56262ad50a", + "id": "mean_reversion/0096_0291_forex_fraus_m1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 216, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "640a2fbaa14ed0822ad6d41ef2eebd20be3440c7ccfaed045d2f6e269e47cde4", + "id": "mean_reversion/0097_0293_gbp9am", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 217, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "31b0279c45ffa8c0c4c0de5aadfa659df6b2e003b78c079ff8bac44f5ce8e19f", + "id": "mean_reversion/0098_0294_exp_dema_range_channel_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 218, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4b2ec13500c4342bfb070627662b6f751331e803f7f23e47a5f2676aee0281ea", + "id": "mean_reversion/0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 219, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fb2ccb5e16473d9378db91b3b04b84eaa3cbe720ca4447961a43de52f8bd9fd9", + "id": "mean_reversion/0100_0296_exp_candlestop_system_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 220, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "11b88df68897b15e11a336437fa8dcb8d7a3a565aa094900440f4dd5b55aecc3", + "id": "mean_reversion/0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 221, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "02e058f5032f658239094a936bde5e49dd3dd027689e1a0cbb8fb2c916a391da", + "id": "mean_reversion/0102_0298_exp_xperiodcandlesystem_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 222, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4e89ca2d64340a5f809c1913cbc1cb7fb461a67152a47e17b3603eb3d2c9538e", + "id": "mean_reversion/0103_0301_cci_and_martin", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 223, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "eee8dec1239d755e10c6e19bde797fcf5b16ebae12ca1cf630a46daf4961f9fa", + "id": "mean_reversion/0104_0302_one_ma_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 224, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "71661bd3fd1993c8ebef2fa078da5e425f4cbe20ebf71d0845a70a21852a347a", + "id": "mean_reversion/0105_0320_gaps", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 225, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c6762374d0e07d7be7ae6a334ed322c6a7dcd8cec4b96d545b7fb2767ad49c79", + "id": "mean_reversion/0106_0327_cloud_trade_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 226, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0243bb54ad9492bbf13d8d891f6e63c1f20eaad5edf8b0060ba54dae8a0c3c5b", + "id": "mean_reversion/0107_0334_auto_adx", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 227, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a0699f41d0f999b070b08ccffb9b5ad5ef7ba3b9e2df39733f8afc13b623cf4", + "id": "mean_reversion/0108_0345_exp_caudatexperiodcandle_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 228, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d297d6870ed7bfc10736186705974acf351387b1f45fba8ab5388f117c059f85", + "id": "mean_reversion/0109_0346_exp_wami_cloud_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 229, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6bdf5221d4c7adf3d23343ec110592485538266e094aa9e2c10e111afecbbd26", + "id": "mean_reversion/0110_0348_exp_colorxderivative", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 230, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "81713da0feb661f0c239d4c7e0bd425fee3a5d4d574b6aa53002bf7b32d67604", + "id": "mean_reversion/0111_0350_exp_ultraabsolutelynolaglwma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 231, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cab7c38ead1f8962b4ffa055774e1c81c01f3a1182dda6931f9bfc9fc70b2a7e", + "id": "mean_reversion/0112_0352_exp_blautvi_tm", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 232, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "53cef131f09a8e38ff81980d9370a6e0720db2ef0a409d4ab1eeb2b89707ba95", + "id": "mean_reversion/0113_0353_exp_blauergodicmdi_tm", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 233, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9cd5a57fae7a5cc1763177ae91865fbc9cc280d887ed65388d436b17a61d392b", + "id": "mean_reversion/0114_0354_exp_colorx2ma_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 234, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1d407a3a0448f862572b4705a9fe57edf48d80bf1c752b723ed9628878f3032d", + "id": "mean_reversion/0115_0355_renko_level_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 235, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5d910a7e169b3cff213886d455b4ef0e14c7ccc2d40daeaf252cb909fbcda84a", + "id": "mean_reversion/0116_0356_exp_absolutelynolaglwma_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 236, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e6524fa73b0952f42a3108c079a7760ebdac445bab0cb7f40b72a3c03ab6329c", + "id": "mean_reversion/0117_0361_js_ma_day", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 237, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4b6c5bf9c85ec0658fd62e65386d7077a3d28ea92a1386d45b6daeef1a41a23a", + "id": "mean_reversion/0118_0364_exp_sinewave2_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 238, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "24312c327d2a0639e44b125f57a6d17ef1301dbc541ade7a191a53729e9f1f98", + "id": "mean_reversion/0119_0378_exp_atr_normalize_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 239, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5e1959508a12803581a28d2435861bd08c3d550e6985e1d4adecc84c8a13000", + "id": "mean_reversion/0120_0387_exp_average_change_candle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 240, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d40530c9a2b8599c9d40f1307143e3f5a5fa35cd8f0513310eef0a0bc60562ff", + "id": "mean_reversion/0121_0388_exp_xrsidemarker_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 241, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46b2caee4b5de75fca716f8acf0170527ffb54c98977deac81aafa5d2ae9027b", + "id": "mean_reversion/0122_0389_exp_2xma_ichimoku_oscillator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 242, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7624a47224aa9edeff61f112534f3954a3324d7d313fb76b35a2e710808d7151", + "id": "mean_reversion/0123_0397_spasm", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 243, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bc23c0384247df431c9c673d073621cb8686867727213c05d003fb00b478d4ab", + "id": "mean_reversion/0124_0398_exp_kwan_rdp", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 244, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1711ba46a053f7d892515c5bb52cd5dde044123a2ded9e6e75262cd01714f87e", + "id": "mean_reversion/0125_0399_exp_kwan_ccc", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 245, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "298d43f7c9400d0e6e18c507bf7d32ccdbaca3b1608b723561da9015396dec10", + "id": "mean_reversion/0126_0401_exp_kwan_nrp", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 246, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cf29552c8c4d65f8f64a9664467934b19ce7373100c00a32469ce56cc68cf5e1", + "id": "mean_reversion/0127_0406_exp_sar_tm_plus", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 247, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3aae35d3987ad034091e006e2d70aebe19bce37040d84b0af0a161379f6a8c2b", + "id": "mean_reversion/0128_0415_brandy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 248, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a34bea543292796acd3b8c05e455cf362b3ba58d6471ce8f2e8eceac97d7351d", + "id": "mean_reversion/0129_0426_poker_show", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 249, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5ebbc63f9ee986f7c7f0b9f7abb57cda7d606e4f667a8ec0f341f2b3de0c11c5", + "id": "mean_reversion/0130_0468_diff_tf_ma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 250, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6ae93f0d7791fb8f703124b9924c9220416045b407df548089df656912e0627b", + "id": "mean_reversion/0131_0470_price_extreme_indicator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 251, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fa302b64e8a6f7efc52e442247f3220f4562dff13490d106ec76e2341ec52afd", + "id": "mean_reversion/0132_0473_zigzagevgetrofi_ver_1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 252, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1642a65d38e6627e561cc5ae0cab4d27cf0eef25a37af7a3780be34cdc8930b1", + "id": "mean_reversion/0133_0481_js_sistem_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 253, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8cbe2c52240f0d1f6f3c5f248afab943d833216768d1855567a2dbc903f4aaca", + "id": "mean_reversion/0134_0488_larry_conners_rsi_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 254, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2cc9a49a8ebe87758497b5517d4c449b5279d75fb47ca07cf46005d19f3d0f0", + "id": "mean_reversion/0135_0513_20_pips_opposite_last_n_hour_trend", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 255, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8eae4ec935474281fb65f4c23a0c93b4acfb805ef6a575c60ba48730a43d8646", + "id": "mean_reversion/0136_0520_bollinger_bands_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 256, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1cb218bdf048378deef01656d856aea60131af93282bf75fc2b4971f110acf58", + "id": "mean_reversion/0137_0600_bollinger_bands_n_positions", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 257, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "31af95cc34faf39f0c8a03eb41bf2e7fb84eeaf9d6298b89c23f3e8903794557", + "id": "mean_reversion/0138_0600_bollinger_n_positions", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 258, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c2a1d46ea718badda1bf1abfff4613f650eb2e087bbe89624afa65e9be1919da", + "id": "mean_reversion/0139_0603_rsi_and_bollinger", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 259, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1c18698c3f8abed45909512f5f209afff50f742ee8f7c30e5396a6dd4f1f61f5", + "id": "mean_reversion/0140_0616_bollinger", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 260, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d5e019ea1760826cf072fca8660f14f5475f00b6d0deef6a7682ece0bc595b67", + "id": "mean_reversion/0141_0621_20prexp_3", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 261, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c66a5f180e169c1a14b0c17107bada7fdc6620e0b0fe26e95897f08e1a0b386e", + "id": "mean_reversion/0142_0635_ivan", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 262, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2140e3b8a200869f3d49bc071c2caf4bf00166c10f410d72c3ac1a5c428643ad", + "id": "mean_reversion/0143_0636_exp_threecandles", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 263, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e669a20637defa369e9a80901265f1f95d6529ea68fa91a9138c6ccb99a11bc1", + "id": "mean_reversion/0144_0639_exp_cgoscillator_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 264, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "35787826110035346a6a594ab0e4ef20b18921b38e9c15add35bab14ef316583", + "id": "mean_reversion/0145_0652_ma_reverse", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 265, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "41dafd036bd934c789595a398e1d0e355a40643cd25052aa15cf6dff76cc5cfa", + "id": "mean_reversion/0146_0662_altarius_rsi_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 266, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "49cc2cf2acba5859a1c9d2b0c28375b392daec928f228918a197d9dd36fc5f9b", + "id": "mean_reversion/0147_0673_expbuysellside", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 267, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4db7e6809dd1c981b027a961a0eca9b0f87fa75ae7d93352530ffb3f0d111d10", + "id": "mean_reversion/0148_0674_exphawaves", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 268, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e25ec7a00ca44e6ac2d2b65dc724282ae5fc67a9f5ba1c1d8e0a15e6eb0a3bcb", + "id": "mean_reversion/0149_0676_exp_price_position", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 269, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b875f79ed3509b7748540d75028d99d4a512a3114f91137764ecdef8c7f213ed", + "id": "mean_reversion/0150_0694_10pips_once_a_day_opposite_last_n_hour_trend", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 270, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e406e759d654b9e7073270b4dd2d4b325ac250bcd1ba4ce91c942558449ce16a", + "id": "mean_reversion/0151_0697_exp_tdi_2_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 271, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6f39ed430a182e8c6b376c344fea1e2ceb4f0cc80b0904ddc0bffc8ed77bf983", + "id": "mean_reversion/0152_0707_trend_catcher", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 272, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2dfc0eca5b422f980d0ab8f7920470fb9e2bbd9ebf00026b038bc3440c93a430", + "id": "mean_reversion/0153_0721_macd_pattern_trader_all", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 273, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ef350cde46c23810cd7dd5da8aa03fb0c346407c4c45a1d4c87b0faadfb1646d", + "id": "mean_reversion/0154_0723_exp_fractal_mfi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 274, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f7a7e866ef4c39919256a37a5dd9981f9fe44fab1eee5b358b14f9d66b18a0d5", + "id": "mean_reversion/0155_0727_ft_billwilliams_trader", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 275, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a491b18449186058220516ef48f4d6f6f2167d28a6feb2d8d5c8bbe7928d0f30", + "id": "mean_reversion/0156_0730_exp_weight_oscillator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 276, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "18da89951d38c833348dd00cdd74b4a445522961805f2e5ce490eecf585b732d", + "id": "mean_reversion/0157_0732_exp_silvertrend_signal_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 277, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f8ff76fc91ae5dd214126b65b15f1df64cccf060a0f4cc4a6894249914f4811f", + "id": "mean_reversion/0158_0733_exp_bykovtrend_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 278, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c1d79c7550497ca243e74fa2ac032f19eac6fdaf8f352735fd2d524fc960e175", + "id": "mean_reversion/0159_0737_exp_fractal_force_index", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 279, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "af24563b5e52ca8e890b731188a54453576fef814a08a4b3e27c6f0f36efea93", + "id": "mean_reversion/0160_0741_exp_fractal_adx_cloud", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 280, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e7456a36537cc5f7eb0964263f4cf5045c022dd193a7512147b4dddb382c6943", + "id": "mean_reversion/0161_0747_exp_fractal_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 281, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f7409a82c4b263a283852334f3b052e1a4a486c16814a16323c7e2ce5329520b", + "id": "mean_reversion/0162_0751_bollinger_bands", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 282, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "00bc83fa228d729aa41739ccc8b8b19b36b2efca5be971a41f1ab89a44ef072b", + "id": "mean_reversion/0163_0752_exp_zonal_trading", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 283, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "87768c41ba4fde4fcd48da8fcce27726a658c66dab4274e021f193328a296458", + "id": "mean_reversion/0164_0755_exp_colorzerolagmomentum_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 284, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d6f3d4bb0351b1f0023c8f03d35ea80be7a39f59e38da66dab5ec4586c27a62c", + "id": "mean_reversion/0165_0758_exp_2pbidealma_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 285, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a6e765e2098487d0c99f6455a05d92348e390b17bfc87d0b2b2637bf2213cf7d", + "id": "mean_reversion/0166_0760_exp_fishertransform_x2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 286, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4cfb37a0f7e53ff5d3376feb1954f2331a24016149d7cc3a42dbfa3d4dae719d", + "id": "mean_reversion/0167_0761_exp_fractal_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 287, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "27020fa27dbec577053d55efd8c8685cb168a6dd20d733e3322e9136e2a93753", + "id": "mean_reversion/0168_0768_exp_jbraintrend1stop_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 288, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "19c86d2d3806430f09f6ba89592facc77b3bd1771da34c839b394e14bfe19baa", + "id": "mean_reversion/0169_0769_doubleup", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 289, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "79c5d36a43ed9bf722ab6a1f89ad1597e23272c289e28e8ce7f501139614b233", + "id": "mean_reversion/0170_0771_exp_bezier_reopen", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 290, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ea3774fd40a53d64e653890f8c9b34fa11f5a30d76b9667982b780581a63f320", + "id": "mean_reversion/0171_0774_exp_fishing", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 291, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7246713f23a0b8b59c5ebfae41620b388c3d2cfc839fa4c629382eeb9d4dabb8", + "id": "mean_reversion/0172_0775_exp_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 292, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "34b4e4d49d66854201316c98b13d2567fe8f950c0403a4372dbc21df37116645", + "id": "mean_reversion/0173_0777_candels_high_open", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 293, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "981d093a76a2a18b08f6c90db46061605c4c767f5903edfbaf89813f2259f128", + "id": "mean_reversion/0174_0778_exp_mfi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 294, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3a9824275a698e86c882e1ae2cd33100a8b93d6da180ca7cdadc7a41602c829e", + "id": "mean_reversion/0175_0779_exp_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 295, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a738394e48dcb130600dd0b65cea898e4760090a6da389b13540f62201ef4ae", + "id": "mean_reversion/0176_0794_exp_3rvi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 296, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "519110376a2bbc52973b05031c3247908045d151ab687b9251fe618f851cc305", + "id": "mean_reversion/0176_exp_hans_indicator_cloud_system", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 297, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "92fe0dd5fcd9e943a5a7fde7604e56d153525127bf157c04b6c2b29f5e95710d", + "id": "mean_reversion/0177_0795_exp_3sto", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 298, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d7034a9fdc785573dbc65a80e9742eb181d5f81e5d16148da1683bfe41ee048b", + "id": "mean_reversion/0178_0814_delta_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 299, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "50784e10e9092d93b0b642da890f7ce4e6d6f739edf36f7d317d653d92a924ee", + "id": "mean_reversion/0179_0889_vwap_close", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 300, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dac7ab1b530e036579bb7f83741ad260a2cb520cd3ac930529c234759f74319b", + "id": "mean_reversion/0180_0907_stepma_nrtr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 301, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e063eea3119454a3ece0bd9449a8b21994992aab36db222059d492c7a7d54271", + "id": "mean_reversion/0181_0943_colormetro_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 302, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "15527a3eac1ddd03200333786422dd9cdcf6ee1dd693911e88acac3fb386f266", + "id": "mean_reversion/0182_0946_colormetro_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 303, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b9fef579e127555552a2bd1e8077cc65c52ba4c1011c372291f4d5956512c343", + "id": "mean_reversion/0183_0947_colormetro_demarker", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 304, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bd711c8e02ee140e56aa3257a67f5d3fa388112fc3c7292e960dec5248fb5c07", + "id": "mean_reversion/0184_0949_macd_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 305, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "de4d19930079bef34328f9f36b4304e22b29b83233071e53cbf53d16557343bc", + "id": "mean_reversion/0185_0950_anchoredmomentumcandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 306, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bc1a79e9c9cae084ba4ff5cfa1156ac6c1ba46e7cce05df2759238d16b93351e", + "id": "mean_reversion/0186_0951_kalmanfiltercandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 307, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f0fb7693202bd97383c73f3c263a0e78d88ba263daa9d54ff0a5a7f409e330f0", + "id": "mean_reversion/0187_0952_macdcandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 308, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dabb47c93596acb5e32111202c72b3395e6bd5564a39a57cacc4e4e44f86827d", + "id": "mean_reversion/0188_0953_laguerre_roc", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 309, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2af237fa2b1e141dda935936b206d3311927c69e4bf614fba815b51d47b4541d", + "id": "mean_reversion/0189_0955_i_gap", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 310, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "23fdc360dcef4844e04b178f024ae443b191a31d5a2612d6c993502955bc6ba5", + "id": "mean_reversion/0190_0959_dots", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 311, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a7895908df721328b2cfb9203e2caeddfba1d47749f62bcdd02576bd3818e5fc", + "id": "mean_reversion/0191_0960_super_trend", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 312, + "mapping_status": "package_only" + }, + "source": "package_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a11bca4b06ec1a23fceb7369127ab99c167044e547ceb571056eb3944bad20a4", + "id": "mean_reversion/0192_0962_momentumcandlesign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 313, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c96e6bc2bf95958eff6b40543a3d049eb337fed128f2d019dc970d8cb3bda6b", + "id": "mean_reversion/0193_0968_trixcandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 314, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5d56e9e2e4c63623ad842791e9c2dec402e1e8642f707054756fc793a239686", + "id": "mean_reversion/0194_0970_framacandle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 315, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1856f1a850de1ecd8e31eb00fde5d1550b1a21c5475038d49264912e9c9986ea", + "id": "mean_reversion/0195_0974_lsma_angle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 316, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0bf4103d7d241cdc99886821f3d206c101313bc0edbe49cbcd66de1354f27ae9", + "id": "mean_reversion/0196_0983_kalmanfilter", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 317, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5b86ad3f22da488b1f663f93a6b016c4e16c2ab4ea1398304a5ad9890786c21", + "id": "mean_reversion/0197_0990_i_amma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 318, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "619493cf290663575933c9013489bd403b04fe85b7b943a1003596e4e7ee5cd7", + "id": "mean_reversion/0198_0994_ianchmom", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 319, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2f10ea845c0cf3c94a429f1eb8043875fa4615c65b1e7fcb5988c4f489e1f95", + "id": "mean_reversion/0199_1000_colorhma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 320, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aced5fc87e5a5e4b5cbbe116c0bb4741e58ad9da57554f36a06ab6a5a497511b", + "id": "mean_reversion/0200_1005_finetuningma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 321, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4f6b792c104f14d0712006d39ce3683008c45eaa40cb054f42dacbe41c9eabc2", + "id": "mean_reversion/0201_1119_ma_delta", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 322, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "03acfee907d24605b47bb28fdadffa4408e30f2dfbf6a4aa5955507bf3989c92", + "id": "mean_reversion/0202_1134_bobsley_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 323, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "36cc253f6cbce205a7d630baea595c3d675c41c36d1cc29763f726a0bbb14884", + "id": "mean_reversion/0203_1143_kloss", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 324, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "173064bbef5c2b296780d9b450250af16fc2c1753e7b649b2b01a8727be923b4", + "id": "mean_reversion/0204_1146_t3ma_mtc", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 325, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3fbbc359eb05c1506178cad59315354a5095a43d91f6d25b3521d638c9a9b527", + "id": "mean_reversion/0205_1149_terminator_v2_0", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 326, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "de2a872d2f4cdac71bfc83333ecb746854519db381deb0a3df86c10f5f68c5a8", + "id": "mean_reversion/0206_1156_starter", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 327, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a39e37f4ee5feed2b0014b1a6e0e37c894b2384bd827a85d08ce3517f247503e", + "id": "mean_reversion/0207_1160_up3x1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 328, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e55c108b4883a260809e4639941550dabc1eea2b21d1af9459ab4b1df8bc5628", + "id": "mean_reversion/0208_1161_universal_investor", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 329, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3b98bf4c596a6bbbf130d8683187d67700a664b0ac7bc7d62526dbaaba7cfa80", + "id": "mean_reversion/0209_1163_gpftcpivotlimit", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 330, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0c232ee54b5500b3246dd402067dc183a4a66d22e859bee7251131a3691b2ec5", + "id": "mean_reversion/0210_1164_gpftc_pivot_stop", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 331, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "22e36a9bdb63029a9fb9dbc1a5494bfcebc3c5f65b33f370da6030d065f43775", + "id": "mean_reversion/0211_1164_gpftcpivotstop", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 332, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "61efc73f683b35a55019179cfabd7fdce65a2926010f82c03495603a56500ff8", + "id": "mean_reversion/0212_1168_ea_aml", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 333, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "26454cf0cf089e3198f1b8a3ceb89a1f51ad07a2791534a8d79d25e11b5684f1", + "id": "mean_reversion/0213_1168_ea_aml", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 334, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d93d763df0e47a8080c2b9d2514ab7c3b94a6bd5351e5462c2ce471db639a90a", + "id": "mean_reversion/0214_1169_ea_ccit3", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 335, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c2da18c8c239e84aee8a61d17b703bdd4710fb4923b59ee6c2a758c6d5a28fc7", + "id": "mean_reversion/0215_1172_marsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 336, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0cbede4c31d306716bd6e7e16a6e50e1fd80093fadc2e0464fd7d1ed8b929465", + "id": "mean_reversion/0216_1191_promart", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 337, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dd3b419580a302b20ccdfbbc8446777a85526d2b6cd643c4b82b230a2f2265da", + "id": "mean_reversion/0217_1200_night_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 338, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5c10756807aa964b61b6c81aa979f3e49a162729de145da830bfa26f16ed4861", + "id": "mean_reversion/0218_1217_trend_envelopes", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 339, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ee12904ba6c852644b351e53d6de54c4b361330e7d60ef929393eb0efe13e1ed", + "id": "mean_reversion/0219_1222_color_stoch_nr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 340, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b812cd3d7e6b3a752ab2983c28dfe9f9c8bb3c9edce1da4ec9e6911d8e0bd5ee", + "id": "mean_reversion/0220_1224_color_non_lag_dot_macd", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 341, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4e2929fb49c6387b1470e9fb96aa0eea45be6207a75f9da9751f54d79c696a42", + "id": "mean_reversion/0221_1244_bbands_stop", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 342, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "185dc1e245872ee7071be32a8fe1b980b93822befb1001a9d50b8235f92f96cf", + "id": "mean_reversion/0222_1281_asimmetric_stoch_nr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 343, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "03e7208bc7629094ca22c1d5d5d621bd50c6543e56f30b42ac74e67c8fa42b3b", + "id": "mean_reversion/0223_1282_xma_range_bands", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 344, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4cf32c7193a474145120c9e9346de9d9f16ed8025c1882b78d5e4e5015b83754", + "id": "mean_reversion/0224_1300_bb_squeeze", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 345, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "61712e80022a34f72294abe4f72d800c39febcccac47a8a498b8efbde416b39e", + "id": "mean_reversion/0225_1343_three_crows_soldiers_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 346, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f3c33c55fcd1d537faebbb7933b8e80f48743d002feb03069a975e2e7597bdea", + "id": "mean_reversion/0226_1344_three_crows_soldiers_mfi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 347, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2281c2d99fcde7f3aa5f412a17cf68adb53a95d231f726d6e0c4958acf6d2276", + "id": "mean_reversion/0227_1345_three_crows_soldiers_cci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 348, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "642bc744644f7dead753e7899dc5a9f8af50d475d89fd02759b9f187aca610da", + "id": "mean_reversion/0228_1346_three_crows_soldiers_stoch", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 349, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "194da1c3f1625d83b85035b39b999597da10b06041dc080fcb315ad95c434282", + "id": "mean_reversion/0229_1347_reversal_candles", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 350, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c629ddd30e0a3584bf977515de21a50f281576964f30554340ecfc290a3b67ca", + "id": "mean_reversion/0230_simple_connorsrsi_sp500", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 351, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e1d61799cc8d29cfadcd2f81491b643f8651b72e7890552864ef8b2cdb395531", + "id": "mean_reversion/0231_rsi2_double_returns", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 352, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6fb1b0a4d021881ac6fd04f2a0655a1ab0e493cc409b158252f160ca37df377e", + "id": "mean_reversion/0232_crypto_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 353, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cec1693818e6454f8f46713f5c90bfc27bb7fd0ff1ad0e009b0f96252cb0a6a2", + "id": "mean_reversion/0233_improved_rsi_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 354, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a82d651d2a456e2b059c7b45bf225f1b3f4efba99e0c4cafeb6085139228acce", + "id": "mean_reversion/0234_0063_multi_divergence_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 355, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a08cd60c4472fb4828ad02be5689ce02063031d55c4d2547b28662c8729719e0", + "id": "mean_reversion/0235_0143_jmaster_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 356, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "88ea3bf486a92f83e9c62c81628b8ece3f06b745bcdb2d2c232d69cef08fd083", + "id": "mean_reversion/0236_0146_rsi_ea_v2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 357, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "66a56ec58ad4bf636c1b4d1dc2fda8707d696ad6debba1c3a23f9b6962a9ca7d", + "id": "mean_reversion/0237_0328_aocci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 358, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a321fb22cc6800b2d12c29828cb32aa22266729b749202c5e75ed1a53cd03dfa", + "id": "mean_reversion/0238_0369_ea_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 359, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a8e9b50ec88f8f4d8b7db1356a9da1983154c2cfd987c3ff6d47809f2cc5ce3a", + "id": "mean_reversion/0239_0515_kdj_trading_system", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 360, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ea79a28147ca10d53fc699b7aa143279ebdfdf079af60b47b2ac7e4cbf913145", + "id": "mean_reversion/0240_0516_greentrade", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 361, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "135cc12ab3eaf35b464d4bc7d61e94f1dd15c662ca146d4e8b97c8806216bf2b", + "id": "mean_reversion/0241_0524_rsi_eraser", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 362, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e2cbc3be1eec5cc1d62b0da228a8a89357fff19577b937cedfc250e63972e597", + "id": "mean_reversion/0242_0546_anubis", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 363, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6db5cab623212c5066137f49e51c08845e12107187aa03f9ed9e78d10151a5ff", + "id": "mean_reversion/0243_0565_icci_ima", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 364, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b019578fae24011e28e6b454971e0c9018a2f15ba02d975fe8d17741645d2617", + "id": "mean_reversion/0244_0583_istochastic_trading", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 365, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b72fb755fb6571a98df2a7afc78c4a27bc8d04347c4b7d298b06012ddb3f75c8", + "id": "mean_reversion/0245_0622_trade_on_qualified_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 366, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46d13f706e8c24b613b5b96c6988526d1359257bda49760834f6b9697d0ee001", + "id": "mean_reversion/0246_0653_rsi_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 367, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "50d7046fd8fffd181dadfb74b75e852b70e2528563dadf4ebb793eae15be83ab", + "id": "mean_reversion/0247_0714_cashmachine_5min", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 368, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8fec121f816a8c33baa96d550fa4bee6936e6a9b0016cc63226eff2e7de29b15", + "id": "mean_reversion/0248_0722_angry_bird_scalping", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 369, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2413e62e35fb5e6b2ee89413d085164eff825d21123873c39bce720c2c612b4b", + "id": "mean_reversion/0249_0736_exp_rsioma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 370, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "caad4f4121bc56fcb49992e6bbec407fc79002aa8f84a0a54fb8ef0b75dc0203", + "id": "mean_reversion/0250_0748_the_mastermind_3", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 371, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "99fb0985254d9918d7e74878a3750de1cb018665ca4d271de8351936b58912e4", + "id": "mean_reversion/0251_0750_the_mastermind", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 372, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0af7a3231e9ddfe8bb0cffcd2779c4046e3249dcf19b163a3fb44ab11785332d", + "id": "mean_reversion/0252_0753_stochastic_three_periods", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 373, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "04cde3485f385d3b2e16f6728c8fa9e06462296e4454c0216ed817cea64569bc", + "id": "mean_reversion/0253_0754_stoch", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 374, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7fc32e8b098f9a842ac493f9a14093a1aa006bb7fa654b8e14f2c350fa48b338", + "id": "mean_reversion/0254_0783_scalpel_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 375, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b45a3d30318b97ebff7975b1b19aeb327c46f74d4ff626636cd6e883b2bc9de2", + "id": "mean_reversion/0255_0788_center_of_gravity_candle", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 376, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "71f292a2c7ffc1dcd220d522c44520717284e47b80f73f5453e754233152cb7a", + "id": "mean_reversion/0256_0798_mastermind_2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 377, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b82bb868c9f5121a62370e850a5c3f6015f36864146d338e4cff12ad4bef39f8", + "id": "mean_reversion/0257_0809_mfi_slowdown", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 378, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "54562eab6050978ace286345631a97fe7854d64ec87dd2020d8fbed86538cc1d", + "id": "mean_reversion/0258_0810_wpr_slowdown", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 379, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b8eb9d08be4cd81a7defe4e98dba92bbe273be8a4c9309f8f9ff5caf9c2d666d", + "id": "mean_reversion/0259_0811_rsi_slowdown", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 380, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "da17bca80859409642d0f32c1a9fa0cdf10376dbae5e15876eeda2716465a888", + "id": "mean_reversion/0260_0812_delta_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 381, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "77444c20dabc0a859d2f5febef1e15f797cf76763b2ba308ddff93f0b0ee9ed7", + "id": "mean_reversion/0261_0813_delta_mfi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 382, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b6eb97b6038e8159313c8b2a979e937a1ee82a08b36aa3e77c17fb2223110415", + "id": "mean_reversion/0262_0860_fisher_org_v1_sign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 383, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1db501ca7688da4635e0fcde2e2f5c3a5687324d444a2cf9f01026aea03db882", + "id": "mean_reversion/0263_0861_fisher_org_v1", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 384, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "accf4f64154f59d8b548ab17b60722a0c92653dbcacadce71463b7d1783861d3", + "id": "mean_reversion/0264_0873_idemarkersign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 385, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3dd46f2c07bc48724fb8eeb638fda783a3c9eab5bb32c9858bb091293aeb8ac6", + "id": "mean_reversion/0265_0876_istochkomposter", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 386, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ddd91b36276e832f91f0400671483f9cf84a1b9aec82749ee04e30e4c727afcb", + "id": "mean_reversion/0266_0878_iwprsign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 387, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7bb847f3526caac231fd9ceea5f052829ab5faf3ef4aeff3a08daaad945a1a5b", + "id": "mean_reversion/0267_0879_irsisign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 388, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c1e9b1bc5fc69a61d43f2642f329004eccaa8fc68c5416b22672cbdddde591bc", + "id": "mean_reversion/0268_0925_cci_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 389, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3821f493829e56e583bbfc7990f411684144f3283fdb84d3bf1eb63f7b316fbc", + "id": "mean_reversion/0269_0930_wpr_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 390, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "de390ea1b0cca7b481e5879624835d36500aac34bf6314b9c75580571cb325e5", + "id": "mean_reversion/0270_0931_mfi_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 391, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a22b73bfeee7b6ec0ffdb98e6987d03420ccaf54e6a278293b051558528763f1", + "id": "mean_reversion/0271_0932_rsi_histogram", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 392, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2b21a3728237872337f9de60ae6f7d627632daf47048d500f7a01d579fc78e25", + "id": "mean_reversion/0272_0935_extrem_n", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 393, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0e19a092bb1ae321231517c23da3a210e036cd0d269db52ab0f952e8c6271c65", + "id": "mean_reversion/0273_1004_force_diversign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 394, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6e8d62d4fea3f04bb30997c30cb8c2baeb750c270e8be0be47c2e00a23bfe93f", + "id": "mean_reversion/0274_1012_dig_variation", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 395, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8334b575ecf50f06767495340313f8574156626563896740f34f751e61964be9", + "id": "mean_reversion/0275_1013_dinapoli_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 396, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dd1cbe59da14a892173919bc1e6c509d3126d0765614beac9b90671e304f5d47", + "id": "mean_reversion/0276_1015_cronex_cci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 397, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a948323d4c01d01c9451c0de330d6957d85897f1aa75b32934433cb6a267c329", + "id": "mean_reversion/0277_1016_coppock_hist", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 398, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "342dfa1b87e9e759127f935d50b228b5741181a120ebec8186b70b0e9c5aea91", + "id": "mean_reversion/0278_1025_color_marsi_trigger", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 399, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d447b9104784b37bd680cd8b84c9e2fce197dfbe51942926a1e4e5df35abb8be", + "id": "mean_reversion/0279_1031_color_zerolag_rsi_osma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 400, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "78add83cfe1df7373041a5c1e7a433a3a22c8aead117f610636cd1cd34323262", + "id": "mean_reversion/0280_1033_color_zerolag_trix_osma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 401, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f56c651a952e5be42de2e1e1bcee1a08f4363697dacc9ab6a4732878f5d0021c", + "id": "mean_reversion/0281_1034_center_of_gravity_osma", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 402, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6738b7dddaf084f6fc00bd57103d8519d9074af67a331b7874e3767764cc29e4", + "id": "mean_reversion/0282_1035_color_zerolag_trix", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 403, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6ee50fc8b42a28a68370f9cacfc9da950ebb272c0d71e39b01b88d92f32f89ef", + "id": "mean_reversion/0283_1036_color_zerolag_rvi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 404, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3b9b4f7f10b8ad2b477248a04d38cddc226f6218920be4ea287880e3a469a00b", + "id": "mean_reversion/0284_1049_hlrsign", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 405, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b25afecce3485d6763082dc8c093bc423d473bcc3d0b8c35ceb602dd486abc34", + "id": "mean_reversion/0285_1050_leading", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 406, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c2bc0f201ee48e6ba868646b9374407a80e6e5e1e96175a168ebf7a84936b977", + "id": "mean_reversion/0286_1065_tsi_demarker", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 407, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "83b63940c38f4b7346b6dec259ad1b3189ff99459baceecb5ed63462cfb6afaa", + "id": "mean_reversion/0287_1068_tsi_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 408, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "509924361907c6764a1e4d7a3a9729165e0c058ae7602ee145cadc4817ad0a6c", + "id": "mean_reversion/0288_1070_blauhlm", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 409, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d05c79e9334799116031e5f04919cc0e5d4dd468a7a70d301d5cd2cd9b6ddd9a", + "id": "mean_reversion/0289_1072_cronex_rsi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 410, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "37b35b0a274b27ba31a87b1ab51f620bcb2f9c8e588fef7a50db35d412cfd822", + "id": "mean_reversion/0290_1073_cronex_mfi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 411, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b0635520afa02a66f01ad0f9cd187ce7543638cbc68c15f530eb4eef0b95bfe0", + "id": "mean_reversion/0291_1074_blausm_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 412, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e31cf928a19b78a586a12482e587880b35a17e0425c9f66b3631105f6678c2a9", + "id": "mean_reversion/0292_1081_tsi_cci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 413, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5b28cd37359c5f42c5ede3134172f70b7c7ad08cdbb991a2ec168924a73bb2a3", + "id": "mean_reversion/0293_1087_cronex_demarker", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 414, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f4796eca18e3ed3d2c74b525d20c0fa95ccf0a1d09b5c623e8787cfd95a4d270", + "id": "mean_reversion/0294_1090_dynamicrs_c", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 415, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f797baba3b46fc0c03b11c608765f714fd93ba563db4934a3b4d6ee025775d3c", + "id": "mean_reversion/0295_1092_stochastic_cg_oscillator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 416, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "77d0d51bc3126c0ec89df7ade26e1bdbe28b80db48ce0e2e0254c30d83043204", + "id": "mean_reversion/0296_1093_color_tsi_oscillator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 417, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "297344dc81a8b40b8f5aab5b053de93fbe632264d31e2851af08051c8c25adc8", + "id": "mean_reversion/0297_1097_fisher_cg_oscillator", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 418, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c43437d2099cf38c8d4dd0194b59ba766d5a078447c011370bf6c78650a7c6fc", + "id": "mean_reversion/0298_1098_color_jjrsx", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 419, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8880d779d7da6654c338b9e1f180134608e44d9682325d2f904cf563f365a3fb", + "id": "mean_reversion/0299_1101_slow_stoch", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 420, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aae478501323181358203b2ba1b8a48e3be43a8028570da16428a500f86cfc7a", + "id": "mean_reversion/0300_1105_rsioma_v2", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 421, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "70d19d1f5662bd637aad6b865559010e052c8a0b037d7f9a8a947c12c2ec0d03", + "id": "mean_reversion/0301_1108_blau_ergodic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 422, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "092f518936a09c89f894d8fb5749ac9a4a8c0edbbc958acdbb2d095a17a5f3e2", + "id": "mean_reversion/0302_1111_blau_ts_stochastic", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 423, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4e4777297260cdd28a762421efd092330a9c0c6d6642497ed154c56cf6115e45", + "id": "mean_reversion/0303_1112_blau_tstochi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 424, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e36603994756dbe2997938086a0ac097a1027aa496164eeb5ce37d8f0d6216bc", + "id": "mean_reversion/0304_1113_blau_ergodic_mdi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 425, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d80e5691e9264229786af39b5de88dc63a702fc7d3b464e98b18f17799e8a1e1", + "id": "mean_reversion/0305_1114_blau_csi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 426, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9d1769f94464ea876e57eed9b35b7e484f8792fc1cc48a22cd7afde466d97163", + "id": "mean_reversion/0306_1123_renko_line_break_vs_rsi_ea", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 427, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "80851d4f33f97c2dd2a3beba91e6c16dce0f446a0e61d22cf3c840cd73ab00bd", + "id": "mean_reversion/0307_1148_combo_right", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 428, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cb3d68a9bc1ed79d8b5c839fabbe2b67d55354dbd4ed31904a36fb78c67242dd", + "id": "mean_reversion/0308_1158_divergence_trader", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 429, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "48344106f7933f4204e8af079d210ccd1b907ae862238e1a7f0a49f50afdd61a", + "id": "mean_reversion/0309_1215_super_woodies_cci", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 430, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b20126335f219454db2046cc1917588f1771371010b65722071abe092bfdda6b", + "id": "mean_reversion/0310_1227_dss_bressert", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 431, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c93ac6508dd8dee8620884760d5eaee754d165f56b392f6cb420ba6ac351ccad", + "id": "mean_reversion/0311_1239_cmo", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 432, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8924e4a66bd729fd3b331fb89c8fb3b402e4f4a1ee75b9eb9c87cceab1973dbe", + "id": "mean_reversion/0312_1240_marsi_trigger", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 433, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d0f88cb1aec3174c48a9bb5da1c384fa36370a7b6f5039339914ed2bcc1781cc", + "id": "mean_reversion/0313_1250_extremum", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 434, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "962f12eae4a0772866dc18916a98f0a2c950b8e309ca28f09c06cbd7f7065765", + "id": "mean_reversion/0314_1256_blaucmi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 435, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1ffbf02829596a5642104183bb5ddced4ae6bdc3e7328b6b23c072a9b91c1984", + "id": "mean_reversion/0315_1261_qqecloud", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 436, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9d19e6c8a8abb4a2d63aa68b8ecbb68c98fa6c873268ccbf80e40edd3570538f", + "id": "mean_reversion/0316_1265_color_coppock", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 437, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "259032c7ba6b85076316749a381ae178263150ad59749c2bcc8290238500b12b", + "id": "mean_reversion/0317_1278_colorstepxccx", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 438, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c4fe7de67e03d9377b1ad88f187ac2ad776a13990dbd16597e460f7bab08a99", + "id": "mean_reversion/0318_1279_xrvi", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 439, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fbfa92a42259bc9e72af3f7794908452395d515d171c292d9b57b084089e1d2d", + "id": "mean_reversion/0319_1286_ultra_wpr", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 440, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "11f1b7484bb20f9179c5891f0c09e036a49d02d577aa3b04ac3f0864c17d53d6", + "id": "mean_reversion/0320_1296_center_of_gravity", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 441, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3e9a4ffd7c5176e652fd53a5bd362450901130e77cda9f795b2664a5c522fd43", + "id": "mean_reversion/112_macd_rsi_bb_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 442, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4ad80ae4b7e0c6948169a6b534bb35f403abcb198924a52353eac0e0e0e2ec59", + "id": "mean_reversion/26_boll_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 443, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ed62a9ccf1fdb6c5a37d99464260effdcedfd2ab1412b6e9973a197954beb4ee", + "id": "mean_reversion/27_boll_reverser_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 444, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9d5695efb88d8d39e788357e5b5b09a27264c5367a8849d64bda7ca2530ef89b", + "id": "mean_reversion/28_boll_ema_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 445, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b41ad7add76637319a7295b8a7056a901910e3c6ed1bd5ca8b6658056acae9d9", + "id": "mean_reversion/29_boll_kdj_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 446, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bbaa7a326579bb20d25b97cdb518d08267e7c12a9b34d1468e1c23b2cded4b2c", + "id": "mean_reversion/31_bb_adx_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 447, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a374356bb395d6124cbd6daa67a2c744197d1cdcf513c8c96dda3092480ab94b", + "id": "mean_reversion/63_pairs_trading_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 448, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "513677295fd7231ae013e521042e71b2d40941f7f04964b37440981e3d7d134b", + "id": "mean_reversion/68_bollinger_bands_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 449, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3c06548cea62df5b7269a98200cb5fc0a143a94ba743896c4fb344daf53fb32b", + "id": "mean_reversion/83_pair_trade_bollinger_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 450, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6ad1dc0e732252cdcf06e55b10781470a492acc9a9d95444b0cc8124b0e1d8c7", + "id": "mean_reversion/94_mean_reversion_sma_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 451, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e7ec3fef8c29c24dad8907614ae6c77aba3e6b0a477d7a82134cd8a15f14e711", + "id": "mean_reversion/97_bb_rsi_strategy", + "metadata": { + "category": "mean_reversion", + "jsonl_record": 452, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "89e8da6642b67065f9b1efe02c253b4de1c2184c31858e223045c5094580572f", + "id": "misc/110_buy_the_dip_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 453, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e8b8ab2138da2522e1bb0c670963667d5a8ba3e13c712d10f2e114fb0367bf5b", + "id": "misc/11_sky_garden_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 454, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46e76afc5333bf21c9c7b884bcd448d9427ce71d4ccfbfe1b53fa76f1cd1fa5c", + "id": "misc/16_cb_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 455, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b3b7a635a7ee239ce537377a106605c15e75d898f51fec59e6320d33d8910e54", + "id": "misc/17_cb_monday_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 456, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "14b4a66a5c37dc2cbb20110bcd4d7b1dade12d4d65bac48e126d9dad76c03020", + "id": "misc/21_the_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 457, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3747a3813c93cff594ce3c763bc3d58e0ef1b99ce5a37559b8ec46bc31674c88", + "id": "misc/32_stochastic_sr_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 458, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e55f700a258ea28f2e8a94988c52034aeebc3343005f736ef1d2946aacdf956b", + "id": "misc/38_long_short_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 459, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b8cab9a6a3154aca722a3736cc1a1c183df36396afb0c099403e19f77817d306", + "id": "misc/39_btfd_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 460, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1b5b475fb2c7b0fcf262a88c56e39d4bfd175549dfa7bd8612d93ad19e7d2932", + "id": "misc/40_cheat_on_open_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 461, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ebf7b88b68811c8c8c9763e233d99b989eb11242280c4917f64c6fbc2b56e65a", + "id": "misc/46_pinkfish_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 462, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "467e5a3a819d569d798ce619eae776a620dcbcea2b1d8a97dadb542357f40151", + "id": "misc/47_slippage_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 463, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "974b5b1ae90a6c59aabbb2c39b122d5a5d749a49510fa81820b918b0faa0afc7", + "id": "misc/49_calmar_analyzer", + "metadata": { + "category": "misc", + "jsonl_record": 464, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9b01f58f805c503d97c3f09ae6ffc91fb16fd975d6a95007811806a278eccd74", + "id": "misc/50_vwr_analyzer", + "metadata": { + "category": "misc", + "jsonl_record": 465, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "914b8a52123d031b6e40e0ee858f8d2cc9ae4fa4ac26586d0de82614e1424f84", + "id": "misc/54_commission_schemes", + "metadata": { + "category": "misc", + "jsonl_record": 466, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b9be4894d188d6f42e17a580e852fd48c234136207e21d0beb3511c59796af11", + "id": "misc/55_psar_indicator", + "metadata": { + "category": "misc", + "jsonl_record": 467, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "51234085cc43d485fb1f0b95b5e2a01cc97bb1927d6e961431aa9828eff99a8e", + "id": "misc/56_sizer_test", + "metadata": { + "category": "misc", + "jsonl_record": 468, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9c7028a50f9c5ba38c35a04f47158f0b13ccf396443b1676f7199641ed2ce320", + "id": "misc/57_sharpe_timereturn", + "metadata": { + "category": "misc", + "jsonl_record": 469, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d25ad07f3ece0a1c2500818d1a783dacf465d00d249faa4b6c435d5d67c65272", + "id": "misc/60_writer_test", + "metadata": { + "category": "misc", + "jsonl_record": 470, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0d977ec98c4ee52aa4b6741b650b3adfaaad0be75734d7f04b41c541868fc83b", + "id": "misc/65_td_sequential_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 471, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f627ea5e5aa3ce7b1c278a5acd99c7bfdf04303370f41ff9deac0ac0703b54a1", + "id": "misc/69_stochastic_cross_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 472, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3d8f5d6a287c6c4413429ed851ec816c3247c1c2dd8fabb7598d7c75d4b5f892", + "id": "misc/71_double_sevens_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 473, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ac0aa241e7da10e28103ab11d33a48cf55ac23b03eb88a4c18a0030cbd74011e", + "id": "misc/76_heikin_ashi_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 474, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "64cf7da2b5801bc41b4fcbb974c1da3a85d2894e606167b96082cc3307670578", + "id": "misc/77_slope_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 475, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "033ab02814b505eab9f242e248dd77488432336f83a85062411ca731da421f57", + "id": "misc/79_buy_dip_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 476, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "18bb358df48f2a6f76019263c94cd1ee7ae7d2d6460d315838667efbacea5fc3", + "id": "misc/82_alligator_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 477, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c33707d26cf308c7422ad28f531bfc929986423b864bf66ae127cb49b96afa7f", + "id": "misc/84_arjun_bhatia_futures_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 478, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "93155c167a0fe69320c948b9f7d99ee66fbe9efeda77babbb34351111f423b1a", + "id": "misc/85_up_down_candles_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 479, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5707bf12df62b0705d4917df16ae5a3cc32b891be5ed7322a939b0480baa8dbf", + "id": "misc/92_renko_ema_strategy", + "metadata": { + "category": "misc", + "jsonl_record": 480, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46c571cf08e7140514ed05f167a7f3b546f9ed1c9ce0d69275128d48e7e845b4", + "id": "momentum/0001_dual_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 481, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "36b73c1e36b4d4e940079bd432e2fccfe28023626d59baa0cefe47d665986d7a", + "id": "momentum/0002_gold_dual_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 482, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "831ef12d9c44f3d557295ee66959914e7c51c89ce840209eb13676fbf0c3b112", + "id": "momentum/0003_gold_overnight_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 483, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "060661fce62c1cad53400111b3cf897271f43a5733d13425ef5b4a48063223e1", + "id": "momentum/0004_gold_momentum_rotation", + "metadata": { + "category": "momentum", + "jsonl_record": 484, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ef2cf1b926a9cb4acc167e6f54552a9468f4a547e51cdded7858e405989e6e8e", + "id": "momentum/0005_gold_time_series_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 485, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cdff3b91ce881c52433b824b5e27bbb7ed6a23e18b7844a2b016fc0c60eef81d", + "id": "momentum/0006_gold_commodity_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 486, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "65f658bc42b8039aea95c5b89e97008d38d18e11f75d61dee7da16968b413b98", + "id": "momentum/0007_gold_momentum_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 487, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "97bc344d26940939409b73c145bc9ebccb8b8972a4477cd0e5f6ecc3ffebb6ae", + "id": "momentum/0008_gold_real_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 488, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6c452c8aac079a0762764eabb8bbb1bcdf2b4dfea48d50fd76b8a020accaa0f0", + "id": "momentum/0009_gold_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 489, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dff2c795e0e4bcb4cf077e663b6ace92b24ce7f05a081b95550fe0d5a4528734", + "id": "momentum/0010_momentum_rotation_roc", + "metadata": { + "category": "momentum", + "jsonl_record": 490, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0482b04d9d8390ed403a6df5a3382d3ecd9d0356da6777c7b1ebc9d031065f86", + "id": "momentum/0011_commodity_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 491, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "05fa2e2fe3be28fa7fb73318d7cd4ddf9f6d1351002c9ef972641f8a695a3e76", + "id": "momentum/0012_gold_momentum_rotation", + "metadata": { + "category": "momentum", + "jsonl_record": 492, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "98e758a3d2e0ed5a204bf96be8554c2b2c6c79cb737acd33998faa1f0c30bc77", + "id": "momentum/0013_gold_time_series_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 493, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dc07533762f44db686b91f884460b362be65eb38196fa078223b3422e88614f0", + "id": "momentum/0014_52week_high_effect", + "metadata": { + "category": "momentum", + "jsonl_record": 494, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7fb5a34ff3b31e117bf0a8308f4280e6bb76b837764a8c274e2c94b8b2845c87", + "id": "momentum/0015_dual_momentum_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 495, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1de7a3af25f78aaf1571cf91317f17570d4610add20f209f40af92ced910d772", + "id": "momentum/0016_momentum_strategy_insights", + "metadata": { + "category": "momentum", + "jsonl_record": 496, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8950f349d202e3e0e17456549428edbfc539f78ab09649066d2b7bb4a419b60f", + "id": "momentum/0017_alpha_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 497, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4f01ac70a0a4feb19b5fbe856749a42bb1220e120f077aebdd0297b15f09c06e", + "id": "momentum/0018_simple_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 498, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d0133071c3e09894a474ea262354f803b553a7969519d1ebde7c3fc69a9855c5", + "id": "momentum/0019_pca_momentum_quantstrat", + "metadata": { + "category": "momentum", + "jsonl_record": 499, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "435d985b7af3b6b52c6e667771c409c3d31cd04417323332669dc44e725f7b12", + "id": "momentum/0020_momentum_basic", + "metadata": { + "category": "momentum", + "jsonl_record": 500, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1287c9db468567a7eea5a79c252e97bc4ff2ea9ffa6eb29eab3e4d8ee443dc8d", + "id": "momentum/0021_calendar_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 501, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "38505c3f9a56de52691e7c75bc2eee36e8a9d5e60b10ff600f86037286fec739", + "id": "momentum/0022_dual_momentum_vortex", + "metadata": { + "category": "momentum", + "jsonl_record": 502, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "55166d18c6cc08e6b2751d0d0be5b0a06f49187de25452f4c3c6cbc996244479", + "id": "momentum/0023_lowvol_momentum_value_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 503, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c590bbb544125515e4478270c5efdc69f61bc666955db1d424f2b90f34a5654c", + "id": "momentum/0024_online_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 504, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a345526b43aea2ac07ce3b88be84e2eb91abe8eb12282c12871b570e37f7bc11", + "id": "momentum/0025_esg_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 505, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c2031591f24243a5cb374b063779023e503011a5c979986f3bf78238a1bcd65d", + "id": "momentum/0026_momentum_combination_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 506, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "27e6bee5be759b2f131a9840fe6aa62a57213724836a93a1e4ade68641e6d740", + "id": "momentum/0027_momentum_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 507, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "031f94592bc42dd0a245c4ec90f41a4288942a98ef04465703ec02d782fedac7", + "id": "momentum/0028_0145_yesterday_today", + "metadata": { + "category": "momentum", + "jsonl_record": 508, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "41b94271a116247bcd17d8d7f155e1c860e2fa149cba1ae4475608df8b4084b6", + "id": "momentum/0029_0416_momentum_m15", + "metadata": { + "category": "momentum", + "jsonl_record": 509, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f4a10616208c29a9e5f750b7390fb62d3282f61e15fa3986db7b10105772ccbf", + "id": "momentum/0030_1029_color_zerolag_momentum_osma", + "metadata": { + "category": "momentum", + "jsonl_record": 510, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9ef8484bc005697832f462e41cbdc3cc74c7146f1cb9b89476c9224779658db3", + "id": "momentum/0031_1052_elder_impulse", + "metadata": { + "category": "momentum", + "jsonl_record": 511, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aa99e73891ea2e6154c3944cde178225cde9b697fb7873238ac6be81af7002fe", + "id": "momentum/0032_1054_range_expansion_index", + "metadata": { + "category": "momentum", + "jsonl_record": 512, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "12eba59d6990373236e9f5180f654140d5e04b83ac965433a65c7b3e8ab4d6dc", + "id": "momentum/0033_1228_anchored_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 513, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b6b2ec4d13cc2655d1d81b32df89e0e655ed1ee8ee00bf5b04a8d66206f29cf3", + "id": "momentum/0034_1255_blaucmomentum", + "metadata": { + "category": "momentum", + "jsonl_record": 514, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "64044cc3d1edfca8b2cff67d0227d6b533cdcf339cd57bf63f1950909a65f894", + "id": "momentum/0035_1274_colormomentum_ama", + "metadata": { + "category": "momentum", + "jsonl_record": 515, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e132ea12744162b7bd57d35a12fa95678143ba5bb5289dff456de8cdd7ace809", + "id": "momentum/101_rsi_long_short_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 516, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bc9cc2c9c1b648661d9cc6798ee267ea1775b915b743e8dc0b2c4fd6f6e4ac7f", + "id": "momentum/113_rsi_mtf_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 517, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6962e394b3416ca31840ffafc9e1b20d0ffbbe2bd8b28d34bedfc20fd5d28e47", + "id": "momentum/19_index_future_momentum", + "metadata": { + "category": "momentum", + "jsonl_record": 518, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0fc4b22b182e913784c778e34e78060075c08807ef4464499c826408541aa763", + "id": "momentum/64_atr_momentum_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 519, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ee4cfbc16c711a95693318f959e2f5167f5a96aff48bf1c5663daaf50b3eefef", + "id": "momentum/67_two_period_rsi_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 520, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ccf5a58add6b5d9b7f075f9989ca5d3ef8429993efe5667748aa8ffed4c9f9f1", + "id": "momentum/73_simple_rsi_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 521, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "34733a8c899a4a13eeceb6072c08fa426e57f6b9728d912e3a8c9a13a9ca8c67", + "id": "momentum/74_macd_gradient_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 522, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "268aa362c254f13de9948d65ba5c5cbd64263028d3905978fa95fb28c4d28f7f", + "id": "momentum/78_percent_rank_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 523, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f6d8794fc0b208dbee1fad9fd97a7c05add60c831926c34fd4d7b5c9706832f6", + "id": "momentum/80_rsi_dip_buy_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 524, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "23cbfe56cdf3e486cdaea8ac5e358497cb82801b3818d374addccd20237630b7", + "id": "momentum/99_momentum_strategy", + "metadata": { + "category": "momentum", + "jsonl_record": 525, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "37e39419d22fb72ab4fb504a30cce5c8bdf167ad96e30a75bb14bb5b86d65c7d", + "id": "multi_indicator/102_williams_r_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 526, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "ebe0ad47968e24df007ce61e84dabf71c4b714ad1a68498d231662a8ab43703a", + "id": "multi_indicator/103_stochastic_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 527, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "c310e7aba8b0a47f41994f71b5fc1598b762446e28e1ee86eec3a8b414ae3aa4", + "id": "multi_indicator/104_cci_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 528, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "573aff1d617a5235ae0af6c972c5b355457c31b1cba22366163a727ac44893ee", + "id": "multi_indicator/106_parabolic_sar_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 529, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "5695cfbd0647c94cba3409f0417136aa5164cb38b83b10fa4e111d96464e34ff", + "id": "multi_indicator/107_trix_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 530, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "2e52d4a2255d9a46ef631f36c76dbb0e40c43017432da6730db2be5da608ee42", + "id": "multi_indicator/109_ultimate_oscillator_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 531, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "16634ac11e19d6e645fb9c301430fdfcae59a481f37215ee2264d11001937320", + "id": "multi_indicator/12_abberation_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 532, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "de545d6bd2df1c5b4f6d713c26fe543b904e6d7a2544ee531768ed6d9c38ea29", + "id": "multi_indicator/25_abbration_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 533, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "6f6b46e3c6b9c129d312b731abbaf68aa67bdf6ae2864241f96aa972bebf5dfb", + "id": "multi_indicator/95_udvd_strategy", + "metadata": { + "category": "multi_indicator", + "jsonl_record": 534, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "fb714e34afb63b5f2c02a680d470850ad9803aa4ad3de5d40e2cabd583f6a44b", + "id": "multi_indicator_system/0001_0092_kaufman_efficiency_ratio", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 535, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "b741c893c4f5bc6a429e02ddf3ebdb37dca4cd0af1f3fab1e68bf3f155290837", + "id": "multi_indicator_system/0002_silvios_ea_best26", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 536, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "5b3e45e038ed5442aba4b5d661b4faeccbb9d6ea090b909a4f5218418443b875", + "id": "multi_indicator_system/0003_indices_tester", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 537, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "9ad6409f182fc457ae3551037391af2352d089fe27769d6d3ee86ed49a3edd94", + "id": "multi_indicator_system/0004_quant_probability_ea", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 538, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "7537c2a128dcfab3d0e558c107b032aa4e1d8493a25965a4ac48c6bd70e0fadf", + "id": "multi_indicator_system/0005_raymond_cloudy_day_for_ea", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 539, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "2a91527b8900fab13da59d6fa33f913a8b6cd68ba5a3ae09e732e08f66c98cc2", + "id": "multi_indicator_system/0006_ict_concepts_ea", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 540, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "fa381e572b66cc59d47f21be40122c4140701063342dea99cd5080250e498b77", + "id": "multi_indicator_system/0007_day_trading_pamxa", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 541, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "a879371c84ddc64399a578c1a4b1345d846bfd60536246eedf5634d4ecc531ef", + "id": "multi_indicator_system/0008_three_indicators", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 542, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "1f15c1e0d7efbc7ece2e21fbaecd12e5ee65189cc6d66a6cab601c958dc92d2d", + "id": "multi_indicator_system/0009_mamy_system", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 543, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "2a4ad059dcb5925059b7eb1798d69b88ae2a1e5474eb8567157f2530ef665119", + "id": "multi_indicator_system/0010_lego_ea", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 544, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "b8f72bc97f4251fa4b8a7a36d29c9be88a1480dca87a87bae1aaceab245e992e", + "id": "multi_indicator_system/0011_mysystem", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 545, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "ee58ded71ead656e7810ecd20af8ca4771efe828e4f6b392e95257d7653db8c5", + "id": "multi_indicator_system/0012_arttrader_v1_5", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 546, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "3aa287dfb688bbb67a4ca103b438a0d4a843c07a297b14bbb588e8ca0e514a27", + "id": "multi_indicator_system/0013_invest_system_4_5", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 547, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "33d2568b919213f7f513ecfaa6d4317da273aa03bd9a2d1effc25a1a3d47c419", + "id": "multi_indicator_system/0014_steve_cartwright_trader_camel_cci_macd", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 548, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "18f5253f97385f80fa51ef8012a57ca75ee4250488c37296dd9547b1d0fbd85b", + "id": "multi_indicator_system/0015_billy_trading_system", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 549, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "ead9ea5d7fa03b9802dd68dc08e98fad696c1126c69f723813ad2b9245c92829", + "id": "multi_indicator_system/0016_macd_stochastic", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 550, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "63820163f2222442e9e7ef6f1b3ff5f5793dd2b792281d79fc552baa9f38b967", + "id": "multi_indicator_system/0017_harvester", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 551, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "951f9d0c9ebb362aab3926abac6c2a192e7332559f45d52840475e2670274a88", + "id": "multi_indicator_system/0018_expert_rsi_stochastic_ma", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 552, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "dd04ecef0e45676bffa3ff7f33a1b4009ed4fded21160c791189a797744bd41a", + "id": "multi_indicator_system/0019_statistics", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 553, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "9568d4f8eaf113d3fe0cfabeb717b2b777dc39a1c53d655614e84a73f2b8ce12", + "id": "multi_indicator_system/0020_mql5_wizard_macd_parabolic_sar", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 554, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "760b291d48171e15b70d3e28a7ece5a827fb620e8cf3ce29383760f7c2fb4c0f", + "id": "multi_indicator_system/0021_macdcci", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 555, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "751b7f70a112e956961f058c4313fd5e4c85ed11ec26ea0acd1f3339ed468806", + "id": "multi_indicator_system/0022_universum_3_0", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 556, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "13f81302ecc0959abae2f6b67d956c35a1d0cfa9d57582ff4a2549bcd63aebfc", + "id": "multi_indicator_system/0023_mtc_combo", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 557, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "728375c302c7ec053071f4f83276328d6c1f1aba42ee1a237d1ef3c7e8c38cef", + "id": "multi_indicator_system/0024_robotpower_m5_meta4v12", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 558, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "150618f5a3d3d37030a7a5b48dcadd429265475b4c6c0372e7305ba2c3924fec", + "id": "multi_indicator_system/0025_day_trading", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 559, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "19f7f4abf0ec543d5c026f68a2fe839010f2d1cb7342fbf2ba0eb520e2f362db", + "id": "multi_indicator_system/0026_well_martin", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 560, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "53692fc6f6982ca531991ce2cfa2a8d669d9f08a14807db8882b27917740beba", + "id": "multi_indicator_system/0027_sar_adx_sma", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 561, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "7050e59d180be67a1f40b125809363778cfdb624b7518f281664eefe991ff1a8", + "id": "multi_indicator_system/0028_perceptron", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 562, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "7f3a0e6994082632ba258cf293eb7c94bf7a872f06c10c564b96160a9f9f013b", + "id": "multi_indicator_system/0029_binary_wave", + "metadata": { + "category": "multi_indicator_system", + "jsonl_record": 563, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "39fb96aaef2d664596425c48f71e52c6513363b1cef75b9c7dabb978a9b297a3", + "id": "options/0001_options_expiration_week_strategy", + "metadata": { + "category": "options", + "jsonl_record": 564, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "d715cfa9e3b1576cb1fc6649cbcbd330256a0337fcb7593eb5ce987ba798ad95", + "id": "options/0002_options_expiration_week", + "metadata": { + "category": "options", + "jsonl_record": 565, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "a564db16680d60310584c0c5e6e660339f2ba40654ef4eeabf6f37f8dc5fae40", + "id": "options/0003_low_volatility_options", + "metadata": { + "category": "options", + "jsonl_record": 566, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "e439b4d2bd288283b9272702979c82947538384284c18f2a5d4c47dc50e07cd1", + "id": "options/0004_options_valuation", + "metadata": { + "category": "options", + "jsonl_record": 567, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "86509509bbf34bff5570d8e5f4ca369319bdb32bc678ea0a25d4135226fe8a15", + "id": "options/0005_gld_put_write_strategy", + "metadata": { + "category": "options", + "jsonl_record": 568, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "f4eba9563d737ad15e176f89bde8ad8063640e8c87fdafd82752a037b52b973b", + "id": "order_types/05_stop_order_strategy", + "metadata": { + "category": "order_types", + "jsonl_record": 569, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "order_risk", + "content_hash": "528554ee16b192076f4a75f2ed7a56c727163a239109de71dd8177fbf3b63e76", + "id": "order_types/37_bracket_order_strategy", + "metadata": { + "category": "order_types", + "jsonl_record": 570, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "order_risk", + "content_hash": "1fd93ba39ca176bd871b332caa7c4a32df3849b4f4768514f1775221c637544e", + "id": "order_types/41_oco_order_strategy", + "metadata": { + "category": "order_types", + "jsonl_record": 571, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "order_risk", + "content_hash": "e0cc148a2af735fe3e4c9a9289065fc1d36060ff18298fde84456c2b439de374", + "id": "order_types/42_stoptrail_strategy", + "metadata": { + "category": "order_types", + "jsonl_record": 572, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "order_risk", + "content_hash": "76c655463d2ab16152e14392c84f213ea5f22d6027f872648689d6d00d8bcb76", + "id": "order_types/43_order_target_strategy", + "metadata": { + "category": "order_types", + "jsonl_record": 573, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "order_risk", + "content_hash": "c4513257dc406099b5964aaac6bade1c833ff63ba60eaccab1ad46c1a19b1cf2", + "id": "order_types/61_order_close", + "metadata": { + "category": "order_types", + "jsonl_record": 574, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7dce6bdfba0b95fae0a139ef9618a850a056793f430ed5a1c7c0e7e45ac660da", + "id": "others/0001_gap_n_go_fade_from_50_day_low", + "metadata": { + "category": "others", + "jsonl_record": 575, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bb2a6c3760145796bbc1a9b6e8b2c2a96171fcdd667e99c0ca5d1c36a8130f79", + "id": "others/0002_monday_drop_bounce", + "metadata": { + "category": "others", + "jsonl_record": 576, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b3d5e99647b13da91649d5661721c2f7b7a5c5798fd7ae82fb8180e58f33413c", + "id": "others/0003_52_week_high_effect", + "metadata": { + "category": "others", + "jsonl_record": 577, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dfca97206989edbff9864e7b8fffec0178c62288092e0820ec574b10db273fea", + "id": "others/0004_multi_timeframe_trading", + "metadata": { + "category": "others", + "jsonl_record": 578, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1e501916cac7335499a9f64724299a73b6fbd0754a67eedc704e6ad1bf0ba40c", + "id": "others/0005_gold_aca", + "metadata": { + "category": "others", + "jsonl_record": 579, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a031d832864ab7fe4b9b4f70709e09718be7fd949d0a451fb64feaa35bd20184", + "id": "others/0006_mixture_model_bottom_prediction", + "metadata": { + "category": "others", + "jsonl_record": 580, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a0728404fa03a4d6469dbc1637f988dcb6edb62922bb532a2d1c981aa4e7f8e1", + "id": "others/0007_sgv_market_correlation", + "metadata": { + "category": "others", + "jsonl_record": 581, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e927bd266c0c4edebd3bb0901c4b509afd6d68107ba5a25c6a5395fde765ba83", + "id": "others/0008_market_timing_indicator_comparison", + "metadata": { + "category": "others", + "jsonl_record": 582, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4c9853712cea4efa7dfe569ae8f59b5c46a3b851c37f6785d8554ba61eae9e98", + "id": "others/0009_strategy_decay_stop", + "metadata": { + "category": "others", + "jsonl_record": 583, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "590d4252511ab3fd70282104b29d52f82ffc119cd307020a82e8cd6282650a98", + "id": "others/0010_intraday_momentum", + "metadata": { + "category": "others", + "jsonl_record": 584, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6b6265ae070506d573e837c8595cb55584a0e5ec653e42425a08c377cb35db59", + "id": "others/0011_simple_hedging_time_exit", + "metadata": { + "category": "others", + "jsonl_record": 585, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "367697ef66ae1e40721fb84f437956f66266f4efe5d28ee069c23c498e5f9fed", + "id": "others/0012_cbi_bullish_signal", + "metadata": { + "category": "others", + "jsonl_record": 586, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6914a1dde92bf0bde6a9b34fd94deb2e687cda3ab793ce59375a2cadde258e6d", + "id": "others/0013_dividend_aristocrats", + "metadata": { + "category": "others", + "jsonl_record": 587, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "be06075c3ffd43f30e307e557acbe4413433eedadf69407ade94b352377b332d", + "id": "others/0014_friday_bounce", + "metadata": { + "category": "others", + "jsonl_record": 588, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "47a1f5b81be4c799d05a1b43f8b68b418f41ab7cba02d0b34835b39006f81d6b", + "id": "others/0015_breadth_divergence", + "metadata": { + "category": "others", + "jsonl_record": 589, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c8ca028c2ab39df849bde8ad7fdd3dbed259450f1d00f10bf7fbebbca3219999", + "id": "others/0016_january_opex_weak", + "metadata": { + "category": "others", + "jsonl_record": 590, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5d3a296b11894609b17a8569fe049c3be8a8ada47cae98c3621978258915b233", + "id": "others/0017_omega_ratio", + "metadata": { + "category": "others", + "jsonl_record": 591, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "43271185001bd97a9d60de2d3d92053149fa4448254e7fa47e75b243627b49c9", + "id": "others/0018_zweig_breadth_thrust", + "metadata": { + "category": "others", + "jsonl_record": 592, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c97416a3da1e63a8a99c846412d821e91b2bafc2ac0b4de69cb1ad06c7378db9", + "id": "others/0019_pattern_detection", + "metadata": { + "category": "others", + "jsonl_record": 593, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "863dcad18c18df151b7e2126fe0c56f65e3acdd0b1a124a72b9f8bc719cad092", + "id": "others/0020_fifty_fifty", + "metadata": { + "category": "others", + "jsonl_record": 594, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5b9aba8ddeecf22081bb2d6ceed4b8914474910e7975663e898767743301c074", + "id": "others/0021_end_of_quarter", + "metadata": { + "category": "others", + "jsonl_record": 595, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7f1ef79c07e8307bdb5c4e4313cf35ba91ebf2e106a5bcbfe53caff1be9b9886", + "id": "others/0022_top_wobble", + "metadata": { + "category": "others", + "jsonl_record": 596, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c1b4982e024827ec0c0b2ca179b4e7a5e561cdc577846cd97ca800a1ba320bad", + "id": "others/0023_modified_hikkake", + "metadata": { + "category": "others", + "jsonl_record": 597, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0082c58b6b1b109e3a6afefa4c75a87c6ca4c0d526a5d5798c1d2a1cf7bfdae1", + "id": "others/0024_rut_spx_divergence", + "metadata": { + "category": "others", + "jsonl_record": 598, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "787258326632608ea12a2d5472d557f29c11f4bd02a1c189bad470b72e7d1fea", + "id": "others/0025_memorial_week", + "metadata": { + "category": "others", + "jsonl_record": 599, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "49791c47b26ea0258d7f30608f0f160c1da5d73ef34b88bd8cd9d6fbb60e1a35", + "id": "others/0026_day_of_month_timing", + "metadata": { + "category": "others", + "jsonl_record": 600, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c8ec505ca4ae773cec61cdf3ed4d87d7e9054f7468f2c4374d2b0bbbf2a294d5", + "id": "others/0027_swing_trading", + "metadata": { + "category": "others", + "jsonl_record": 601, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "29ad135d0aa26f39152164abbbaab43a889324f26ca33a7ffadb9e88d2036218", + "id": "others/0028_wide_range_pattern", + "metadata": { + "category": "others", + "jsonl_record": 602, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "02e18e3e94d38931d313efe4cf6fabb617d939c0042350c5292f8a317d3450d0", + "id": "others/0029_sentiment_analysis", + "metadata": { + "category": "others", + "jsonl_record": 603, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7683d28a22ee5e2b6d4b4bdbdd91d6f6a8536cb36b998f3ade0aa8c0b19a6944", + "id": "others/0030_unfilled_gap", + "metadata": { + "category": "others", + "jsonl_record": 604, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4be98df3d34f4f0b478a5c0d9cf59fe4a449713db9e6d7758aee2e99e31088f4", + "id": "others/0031_end_of_month_treasury", + "metadata": { + "category": "others", + "jsonl_record": 605, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5221d49d1bc7654720a46ecfcbf4b3cfa4690f63919e2eaff73851ba2e10f091", + "id": "others/0032_indicator_period_optimization", + "metadata": { + "category": "others", + "jsonl_record": 606, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "40870f2043dc5529266ee05d04ba21733bf698be48e35460199011b250b615b5", + "id": "others/0033_distressed_stocks", + "metadata": { + "category": "others", + "jsonl_record": 607, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8f1d5c457d0414db155043bb8ea5fc5bc8ad787b700321e95a9e67d59717df0a", + "id": "others/0034_skew_kurtosis", + "metadata": { + "category": "others", + "jsonl_record": 608, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b2ec4e647364578e19dac18db38125c2340005c74cccf492c774ee0cca0419f6", + "id": "others/0035_consecutive_down_rebound", + "metadata": { + "category": "others", + "jsonl_record": 609, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1dbb82e1bc6416ba5cb260fd8916879ca6d595e6f610220190dca162ce73ee8c", + "id": "others/0036_gap_down_in_uptrend", + "metadata": { + "category": "others", + "jsonl_record": 610, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bee2bbe3f783d549e43067124041e16d9492ad2d6115c9e9a052c3a7401cf77b", + "id": "others/0037_overnight_intraday", + "metadata": { + "category": "others", + "jsonl_record": 611, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8f91e193e931d42095d3ecd7bed78a846b6e7d90ffcbb90b970f135f8c0a468a", + "id": "others/0038_big_up_month", + "metadata": { + "category": "others", + "jsonl_record": 612, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9b5f9b4e3c1b546c869ea6641f09d27d7c954c82af9606eaa8745140df84c88b", + "id": "others/0039_exit_rules_testing", + "metadata": { + "category": "others", + "jsonl_record": 613, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "eaf3d380327cf6bc4c34a0e045de566976c7779dcb2410f21ed85624f54b3881", + "id": "others/0040_gap_down", + "metadata": { + "category": "others", + "jsonl_record": 614, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f9aa7045b6462d9bc10eed88aed68ac6e65323db7a721d3d9d6328a95c8cd915", + "id": "others/0041_market_neutral", + "metadata": { + "category": "others", + "jsonl_record": 615, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9c5918da0a328f5a8f669a396402c61621f2d51978145fcf60df4893e7944059", + "id": "others/0042_probability_cones", + "metadata": { + "category": "others", + "jsonl_record": 616, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "93d131d03979966ba763b9b349726729937c14aa66588b89bc3325969579617a", + "id": "others/0043_dead_cat_bounce", + "metadata": { + "category": "others", + "jsonl_record": 617, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5fca2d7240620b8f081f8f4d00ad25229baf663a15dcbbe21b9b1ef1ab7a7e97", + "id": "others/0044_cheap_stocks_factor", + "metadata": { + "category": "others", + "jsonl_record": 618, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6a9942b27694e024886d6995fb384642cb4b24bd324db604f64e82d784e40bc2", + "id": "others/0045_overnight_sentiment", + "metadata": { + "category": "others", + "jsonl_record": 619, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c518ba002fccd90ffa8f88dca2bb917b45579038a025220ba07cb17612d1b52", + "id": "others/0046_markowitz_optimization", + "metadata": { + "category": "others", + "jsonl_record": 620, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3433a9677cb79ebf7ebc85a2f618e4b5e360d054a780ca19c7bc74ef8a0b7abc", + "id": "others/0047_global_growth_cycle", + "metadata": { + "category": "others", + "jsonl_record": 621, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "93070bc9393cc78b34444e7f095d2c27a0aa0f736425ff3dd6807e07d148b93a", + "id": "others/0048_long_short_equity_strategy", + "metadata": { + "category": "others", + "jsonl_record": 622, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b7401fa4b66b9c45839e70a7afe114ab69abf8622fac04c6da9417ade8510e2f", + "id": "others/0049_january_effect_strategy", + "metadata": { + "category": "others", + "jsonl_record": 623, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c52402b6c5b68107f3ec1267a1ec9ed6603e008dec2dbb0a6368710ed06d4627", + "id": "others/0050_ulcer_performance_index_strategy", + "metadata": { + "category": "others", + "jsonl_record": 624, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "419f1a711eb38d82c7b19a5304c9fd2783da5536c95cc97eef6d6040018dc573", + "id": "others/0051_short_term_overbought_downtrend_strategy", + "metadata": { + "category": "others", + "jsonl_record": 625, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ff19c27a3caac88fe891521278ae9767fb659032e253c7b9e2e99e49cb00c7a3", + "id": "others/0052_kelly_optimal_f_strategy", + "metadata": { + "category": "others", + "jsonl_record": 626, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2246c6e71b3aa521cdf685457ef495983a29d31739d847e4e0f0860a4fdd0e38", + "id": "others/0053_high_inflation_factor_strategy", + "metadata": { + "category": "others", + "jsonl_record": 627, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f703c6438d160ec9750a3ff2723d448355e82342baa500f431acc197e5670115", + "id": "others/0054_lrema_strategy", + "metadata": { + "category": "others", + "jsonl_record": 628, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d699534e0a7b9e5dc19126d2521be44b2f261022c50e7fb81a9c01d25d4887ce", + "id": "others/0055_som_investment_strategy", + "metadata": { + "category": "others", + "jsonl_record": 629, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "86e68048239b04a7dca70fedf16e101fadd16b8e3c52e819ffd4e9600fa15d8c", + "id": "others/0056_hurst_exponent_strategy", + "metadata": { + "category": "others", + "jsonl_record": 630, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5d829a24519005ba9c8762d3da34ea4a3c489ec4a4ca9e9bac3de13f9637592", + "id": "others/0057_market_cycles_out_sample_strategy", + "metadata": { + "category": "others", + "jsonl_record": 631, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8b86a6abbe8756c4c259573d7f1aa92d512a5438797fc5a645c924a65b48a55d", + "id": "others/0058_factor_market_cycles_strategy", + "metadata": { + "category": "others", + "jsonl_record": 632, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "acf56264f07e8045dd420ef666826039c5e5e3823544772b71763f9949fcb626", + "id": "others/0059_avoid_bear_markets_strategy", + "metadata": { + "category": "others", + "jsonl_record": 633, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "14ac8894fa7640de3afc289e6c6758a6fcca672a58ac9522b80edbd08f3339b3", + "id": "others/0060_turbulence_index_strategy", + "metadata": { + "category": "others", + "jsonl_record": 634, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46d6a8dfe8e9b2a60f34deb138e331a437a40d995184546df2eebaa0901cdf4a", + "id": "others/0061_latent_trading_factors_strategy", + "metadata": { + "category": "others", + "jsonl_record": 635, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "db730afbdd319a04962f3a1e1446c19ca6c537100e469531fc5384275c356336", + "id": "others/0062_signal_quality_strategy", + "metadata": { + "category": "others", + "jsonl_record": 636, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "467dd5f7dddac585f7bb1a61795719afc14bc788b17961c3657ef70c1de985f7", + "id": "others/0063_treasury_return_predictability_strategy", + "metadata": { + "category": "others", + "jsonl_record": 637, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "57ef7a7090c497bdb1c4aa8acf3091693b1e3a39ec0d9c9a9ffea8e9bc3e7e76", + "id": "others/0064_country_valuation_strategy", + "metadata": { + "category": "others", + "jsonl_record": 638, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "30caa2f942a2f5d694bb4cdc8245f4145428e62853e87eb4ece33cb1edca65fe", + "id": "others/0065_military_expenditure_strategy", + "metadata": { + "category": "others", + "jsonl_record": 639, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dfd256d0aec4385c49349a62e294ab1732aa95a380649cdabd2d3479df1efd21", + "id": "others/0066_macro_data_strategy", + "metadata": { + "category": "others", + "jsonl_record": 640, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "627237638c35a8cbf0b04db508633c59d810e862fa84eecf5126b5027f8b2803", + "id": "others/0067_correlation_break_hold_strategy", + "metadata": { + "category": "others", + "jsonl_record": 641, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8124e478e65b53db3216d7fb965ecc681df81411ae76356f8c8f42232c2b43ac", + "id": "others/0068_first_day_month_strategy", + "metadata": { + "category": "others", + "jsonl_record": 642, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a03f58731104280649a7ae542071b456ce4b5f5ee4996cc45160d665102c0f09", + "id": "others/0069_leveraged_etf_strategy", + "metadata": { + "category": "others", + "jsonl_record": 643, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "23fc634fd77da9f461bc4dc34d30be44de2c48f71bf343c4b5f640b575d4fa7a", + "id": "pairs_trading/0001_gold_kalman_filter_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 644, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "7f7d407e3ad17a458311cb168bf558cabe2b74400d2eb2449875d9954d8c21a9", + "id": "pairs_trading/0002_gold_silver_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 645, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "c9b7448b166f33456e225d5cf59629f6185bde4c456b4bc5d5ef2784c360adfd", + "id": "pairs_trading/0003_gold_cointegration_spread", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 646, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "4d76c90476a494edb3d4aa31499ab8de6b126892d5a6a1e12d6a6b7b073f3c43", + "id": "pairs_trading/0004_gold_multi_pair_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 647, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "564d2b373b67330fca14a36996d227e6ef80e287bedac364de74ecaad71102b8", + "id": "pairs_trading/0005_zero_crossing_pairs", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 648, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "4184342121b395a6a915a94f1cdd760d7f599eb3751fbdd67839f216d25ee6fc", + "id": "pairs_trading/0006_cointegrated_gold_silver", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 649, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "eeda2a1dbbb816ce3812a3e3addec0e1a971539eddca8cbd010e7b6d99d84484", + "id": "pairs_trading/0007_copula_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 650, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "4ec70a7e5d3fd8d6dfca37fd6fe68ae0af8f5e5e54438e4fbabc34761e2f5dac", + "id": "pairs_trading/0008_pairs_trading_strategy", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 651, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "19fa68daca571334143f20c98c2969228f949d34e34751b0cbb2118f315c4b6a", + "id": "pairs_trading/0009_practical_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 652, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "734bc73b4c9247ec33f7ffa7cb26a305460c1536646cdbf6e8c7402061d12477", + "id": "pairs_trading/0010_pairs_trading_basic", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 653, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "045e3b409e7522b2b4519b95c7c01d19789fda29bfc1bfcaab1216f0054ec959", + "id": "pairs_trading/0011_copula_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 654, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "64eaada7eec190407f5fd581c7941495f4eca94cf1373fe579c7f47152b1e5bc", + "id": "pairs_trading/0012_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 655, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "70940c486d1ae4fdcb8e14fda248a6f373ed9ae45c82854c3ac2a9709286bef5", + "id": "pairs_trading/0013_distance_pairs_trading", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 656, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "3fc2c1fcec979202ed517d6d751882313b5961d53e805b9d50ca401d90f6daf2", + "id": "pairs_trading/0014_cad_crude_pairs_strategy", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 657, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "6e57f05959059c5c1c42a1ded38be439f95bb471b2ef0b8af7d5ed9f4451112d", + "id": "pairs_trading/0015_renko_kagi_pairs_strategy", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 658, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "e7f6fd3c060a60125ac15c7ffa3dbba19dfc6f3d8892ead7b556749f96f32f29", + "id": "pairs_trading/0016_pairs_trading_strategy", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 659, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "0b9a562a2f815df3dfc4d8e1027d2db57212f60e91319565596c24e2313e2901", + "id": "pairs_trading/0017_0152_lbs", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 660, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "56219e0207f8e96b7102d52c9604f0fcd0a88d22b3309b2f1acca329d9f7778e", + "id": "pairs_trading/0018_0548_pending_orders_by_time", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 661, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "0bb95cbc6700eda7eba3d0f494921c26fa2c976c42ad41beb8198a21f20842f5", + "id": "pairs_trading/0019_0549_ea_trix", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 662, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "0cda3858370065237249c30a8757cec71f8681b3ed03e964c90e351e539174ba", + "id": "pairs_trading/0020_0765_simplest_hedging_ea", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 663, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "a66c9f5e5e7375bf24ec993cedde4189a79579ecdfebcfbb08dca14a1c53242b", + "id": "pairs_trading/0021_0924_laguerre", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 664, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "pairs_spread", + "content_hash": "ce628158459c54aab730863d198036a2aaaa986c817815f3d4c28accdcbdd73c", + "id": "pairs_trading/0022_1141_vlt_trader", + "metadata": { + "category": "pairs_trading", + "jsonl_record": 665, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "7bc6d43d1ae45c4d3f078ae3a0fd5903d0780f1aa5ef52cd69b58bcb5ddf12b4", + "id": "pivot_fibonacci_system/0001_mostashar15_pivot", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 666, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "597eff318da8c5e9d8a21610a6ed15b480649c5f4bda651da30dcf98cb5311b0", + "id": "pivot_fibonacci_system/0002_simplepivot", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 667, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "f97a9df0df7752710465147c26a1b0fb78520b34d1d05f89deb56efea5c05841", + "id": "pivot_fibonacci_system/0003_pivotheiken_3", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 668, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "43be6ece85cdfdcfea20e579572bd762854aab792868c63cf5cdd50b8679d593", + "id": "pivot_fibonacci_system/0004_fibo_isar", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 669, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "8b5531f372db7a1373ad86d9dc554222f9e4a0188f33b9c41cb06c8ff6a4ec1a", + "id": "pivot_fibonacci_system/0005_fibocandles", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 670, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_indicator_system", + "content_hash": "c346477f77d80ea5b2747a2ce3deee02bf3784b4aaf648b3f49d069799ab4fca", + "id": "pivot_fibonacci_system/0006_volatility_pivot", + "metadata": { + "category": "pivot_fibonacci_system", + "jsonl_record": 671, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "405625d7438e26f9b0202edfad3f0017bc8c2b8795192d7454d71de74a2a035f", + "id": "price_patterns/0001_0033_simple_three_inside_pattern_ea", + "metadata": { + "category": "price_patterns", + "jsonl_record": 672, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "90843f18b0a0c1194c9f20af89131950e449acfc70b989f22be8ebae298ab312", + "id": "price_patterns/0002_0343_exp_xperiodcandle_x2", + "metadata": { + "category": "price_patterns", + "jsonl_record": 673, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "483193fc7d603d5e23a778a80be4a766ec9ea747f6e9114eb5441b869ade283d", + "id": "price_patterns/0003_0344_exp_xperiodcandle", + "metadata": { + "category": "price_patterns", + "jsonl_record": 674, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c35fabb480614b9934ad37cb1a72e30662f6315d7b43a05a48bc37ac4aa5e2ee", + "id": "price_patterns/0004_0380_executor_candles", + "metadata": { + "category": "price_patterns", + "jsonl_record": 675, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f8e64376ef1d9bca4eaa52d7d8499a6760152482eebb4edc998e7a129f5bb430", + "id": "price_patterns/0005_0495_doji_trader", + "metadata": { + "category": "price_patterns", + "jsonl_record": 676, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d7251607d7f209d56c90812ea51092ec013e80b497206fa742e13a74d4009695", + "id": "price_patterns/0006_0510_n_candles_v5", + "metadata": { + "category": "price_patterns", + "jsonl_record": 677, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c2f8307dfdd631057366ce25767bd6c74ac69be30882603d9d1a97b57d0b07b8", + "id": "price_patterns/0007_0581_n_candles_v4", + "metadata": { + "category": "price_patterns", + "jsonl_record": 678, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ccd2ff3f600a635eafcbf9ae34e555d611616ead0db55912a20eeae6340ac98b", + "id": "price_patterns/0008_0584_n_candles_v3", + "metadata": { + "category": "price_patterns", + "jsonl_record": 679, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "82110fa0d7a9b02a9af4443c194093c85a34d21d12c00d993f3ebf9a9eb081ec", + "id": "price_patterns/0009_0587_eveningstar", + "metadata": { + "category": "price_patterns", + "jsonl_record": 680, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9bedf86cba2df3538ae10b7a865278d6eb8f68d4e0baf15015f57ab4ee715593", + "id": "price_patterns/0010_0588_bullish_bearish_engulfing", + "metadata": { + "category": "price_patterns", + "jsonl_record": 681, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "75accc941358ff661937600e917f46e288ffec51e9d9ca9be5086998532c029f", + "id": "price_patterns/0011_0615_n_candles", + "metadata": { + "category": "price_patterns", + "jsonl_record": 682, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0780f74345a4563315bb32ea85058082ab8b5ae6a5c701354f7add5fa0fdfb3e", + "id": "price_patterns/0012_0617_candle", + "metadata": { + "category": "price_patterns", + "jsonl_record": 683, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "795e8f024e535173ced3089b6583589c2e9e6d3780b37d20fb7b83c77edab347", + "id": "price_patterns/0013_0843_candlesticksbw", + "metadata": { + "category": "price_patterns", + "jsonl_record": 684, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f821835e64edee066a38f9790ac8c1a10359f3b11577b68738c044f25443d30e", + "id": "price_patterns/0014_0923_3linebreak", + "metadata": { + "category": "price_patterns", + "jsonl_record": 685, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "823cf95286421490a1130c5a16d4aa3c3c2c7b924961ff42e127ab6c4119bca6", + "id": "price_patterns/0015_1204_heiken_ashi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 686, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "376710368dec9e35992f61c18cd86847bf94da7fbae06f9444a2c2e7ef8d568f", + "id": "price_patterns/0016_1236_2mohlc", + "metadata": { + "category": "price_patterns", + "jsonl_record": 687, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "26dc36b498907d6afaf095bc16dc823ff878f480d27fda1fff51b47414fb0e67", + "id": "price_patterns/0017_1311_darkcloud_rsi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 688, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "191547134a1d0f02af7354b21ae36c3c7502be572e3171d7c93d38205c81da4d", + "id": "price_patterns/0018_1312_candle_stoch", + "metadata": { + "category": "price_patterns", + "jsonl_record": 689, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "228a18e5971174a183ae0eca83d13905ad607b491943e2ddf221f15c1ee4e66f", + "id": "price_patterns/0019_1318_morningstar_cci", + "metadata": { + "category": "price_patterns", + "jsonl_record": 690, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c9c89be1d76f2068566764919405c4723a1ca72d574e05a0027ee5749b89fccd", + "id": "price_patterns/0020_1319_meetinglines_rsi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 691, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c8e8f48a8a935dba81723df83e4ec969bf7248c640a6a773d3d0de6e6d8ffd7e", + "id": "price_patterns/0021_1320_meetinglines_mfi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 692, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e3cff2a29f3de279a4cbe653983d8cd745bb05f33ba812dd0d213af20c566b63", + "id": "price_patterns/0022_1321_meetinglines_cci", + "metadata": { + "category": "price_patterns", + "jsonl_record": 693, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c1b846568a11ffd38f1376b54c8c7d2bfa3f1a64ff3a4db8792dbc18d9e2ba7", + "id": "price_patterns/0023_1323_hammer_rsi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 694, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0533cc10f1b0f9bf8ca4a5124a93e5392783895b0cc14903eef45a4b0c51a642", + "id": "price_patterns/0024_1324_hammer_mfi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 695, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6955e4b89486c7e9d0bb76f62640a5cfb37213ff06e6f86a9c7a4061891e87a7", + "id": "price_patterns/0025_1335_harami_rsi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 696, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d231b74e2c0f004edfc8c747a01db99d69f21dcfc1432ccd2b2e3e004635da32", + "id": "price_patterns/0026_1336_harami_mfi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 697, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1254fbaf0168d2b3abb609968965d8c41e6f4c66ffbc9dd973db981d7f68c050", + "id": "price_patterns/0027_1337_harami_cci", + "metadata": { + "category": "price_patterns", + "jsonl_record": 698, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8387f2df71536487540dec9089ee50e2065f8dda5815e545d5a08e42a6651a29", + "id": "price_patterns/0028_1339_engulfing_rsi", + "metadata": { + "category": "price_patterns", + "jsonl_record": 699, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1ed834de9f998b149933e68662cf9a2cc1d2d91da2d9120adcf2e300274dc1ce", + "id": "price_patterns/0029_0002_price_action_intraday_trading", + "metadata": { + "category": "price_patterns", + "jsonl_record": 700, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7bca9e5734b1e4cbc0a257d791dc37ee5cd72115e20bc784ca9344ccf9e963ea", + "id": "price_patterns/0030_0014_simple_price", + "metadata": { + "category": "price_patterns", + "jsonl_record": 701, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1fa5448b026966d0dd6204868a82744245747c03a1e8755bec7b28fdb3d44a6f", + "id": "price_patterns/0031_0359_price_rollback", + "metadata": { + "category": "price_patterns", + "jsonl_record": 702, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3077952d291da7eac35f7295a95ea31fc42d9f88d485c1f4187e005258260874", + "id": "price_patterns/0032_0716_10_pips_eurusd", + "metadata": { + "category": "price_patterns", + "jsonl_record": 703, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1ba751943dd16700327141558dbd827af2e9eae0c9e8790197bcf78438e02128", + "id": "price_patterns/0033_0787_open_ticks", + "metadata": { + "category": "price_patterns", + "jsonl_record": 704, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "80f52b62f9d95a16d00ed912d412da1dac6479133c3f6b4e68b69ea256d3bc1b", + "id": "price_patterns/0034_1061_exchange_price", + "metadata": { + "category": "price_patterns", + "jsonl_record": 705, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7c6f7ed40e832e3a2743cb166b8ac3df18e2cdd862e5397bb7c2983d418d5752", + "id": "price_patterns/0035_1077_simplebars", + "metadata": { + "category": "price_patterns", + "jsonl_record": 706, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a2cc78e244bd1aa7ae24be6baba3e7dbbe127e1a16978e1f1c53ad03226c7580", + "id": "price_patterns/0036_1234_adaptive_renko", + "metadata": { + "category": "price_patterns", + "jsonl_record": 707, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "70d4c8f4b3669ad98fff11b18b79d124b748257c83f58777f37899f4034e42f6", + "id": "price_patterns/0037_nr7_pattern_breakout", + "metadata": { + "category": "price_patterns", + "jsonl_record": 708, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f6fbec63c3570b1e068bc3ea7643d42a5085a1cf83a16374b507b944f43ed991", + "id": "price_patterns/0038_nr7_price_breakout_entry", + "metadata": { + "category": "price_patterns", + "jsonl_record": 709, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e2069e303ad3d8039e0f944e2dcb166f7836141a1e0eb4bd4d18d6ea40386bdd", + "id": "price_patterns/0039_nr7_breakout_filter_exit", + "metadata": { + "category": "price_patterns", + "jsonl_record": 710, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6611e6b63afb61058400daad1b768ec7bf732ba4b0dfc95e2d8afcf4fa8603b8", + "id": "price_patterns/0040_0195_support_and_resistance_trader", + "metadata": { + "category": "price_patterns", + "jsonl_record": 711, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9ea26498668584ba4fb56b7427f2287db1239cfd2058a1b38d1bf797f9953d90", + "id": "price_patterns/0041_0469_close_price_fractals", + "metadata": { + "category": "price_patterns", + "jsonl_record": 712, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4c8ae26ac64ab3c400bda87209625147b72c8adfc571f6a81b37485a7a1f769a", + "id": "price_patterns/0042_0537_e_skoch_pending", + "metadata": { + "category": "price_patterns", + "jsonl_record": 713, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "992679a44e52dddc470714480208b949e88073218f1ac7ab35429321b8653830", + "id": "price_patterns/0043_0597_fractals_minimum_distance", + "metadata": { + "category": "price_patterns", + "jsonl_record": 714, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e2a355d0210147c3390cc26a1203c360e7d74dd5df9a5fad61d3f5cd49726ea4", + "id": "price_patterns/0044_0853_darvasboxes_system", + "metadata": { + "category": "price_patterns", + "jsonl_record": 715, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "f41c39c1b5243b520d620a242534bce1a51078831e487e473f8f483c4e4d0ff6", + "id": "risk_management/0001_probit_risk_modeling_gold", + "metadata": { + "category": "risk_management", + "jsonl_record": 716, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "2e4d00354c3c65289fe18095bc6350bfb833c24c28606d467986accbe638367d", + "id": "risk_management/0002_gold_multi_market_hedge", + "metadata": { + "category": "risk_management", + "jsonl_record": 717, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "10ad44bde4c40d6b88403437f026524db8e6bc8033e4a6127350d0cae3cc98be", + "id": "risk_management/0003_tail_risk_ma_warning", + "metadata": { + "category": "risk_management", + "jsonl_record": 718, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "c08c4e759e39edfc4fff798adb0b5096dc3cd9ab4fcfc0b740408991e02bea3e", + "id": "risk_management/0004_drawdown_protection", + "metadata": { + "category": "risk_management", + "jsonl_record": 719, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "19eb77b2fa7fcb499bb04d92ace214b3c7dc4ee4b7b026a3caa2c19e2215718e", + "id": "risk_management/0005_bond_risk_premium", + "metadata": { + "category": "risk_management", + "jsonl_record": 720, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "1e4c7c56b5ba70b79b5be3e04c6d4005b5f3bb64e19c7e12d76efe46d551b85b", + "id": "risk_management/0006_managed_futures_hedge", + "metadata": { + "category": "risk_management", + "jsonl_record": 721, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "d679af84cc604cdd7fdc647da982dff78da0492de171c0228245c2deb3b5b48e", + "id": "risk_management/0007_crisis_hedge", + "metadata": { + "category": "risk_management", + "jsonl_record": 722, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "f65acf43cc3951da83fbaaa4b6ab616fe3cc1a52982bde93a4bb25c3ed8cf6c6", + "id": "risk_management/0008_risk_on_risk_off", + "metadata": { + "category": "risk_management", + "jsonl_record": 723, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "68fbdd9d415d3a908926c01e675338f7c5958078f9f0a7214cff3246fb62418a", + "id": "risk_management/0009_risk_premium_value", + "metadata": { + "category": "risk_management", + "jsonl_record": 724, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "8fec90125b05c7e734f73312bfb8722d9309b712a031d09b6c817fca3ec162ac", + "id": "risk_management/0010_grid_trading_delta_hedge_strategy", + "metadata": { + "category": "risk_management", + "jsonl_record": 725, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "fd57eb81cccc9c2973c5db7f9e2bdb9fe91ffdb6acc33bc481507428c2644bb2", + "id": "risk_management/0011_0040_moving_average_crossover", + "metadata": { + "category": "risk_management", + "jsonl_record": 726, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "b289c749728a2bb3d06c062cd463b0d4a8c554cbb75c6b944af86a6184db6155", + "id": "risk_management/0012_0150_smoothing_average", + "metadata": { + "category": "risk_management", + "jsonl_record": 727, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "97bb87cdbe8659966030e6ffff308c3713d00676c367b9a353c48deb549bd755", + "id": "risk_management/0013_0300_crossing_moving_average", + "metadata": { + "category": "risk_management", + "jsonl_record": 728, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "f9acfe0d0f5acd2b2b2a07598b94d596e451d760e6c2a971b9f2f7cb347b0dfa", + "id": "risk_management/0014_0375_modified_moving_averages", + "metadata": { + "category": "risk_management", + "jsonl_record": 729, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "0ce81c15802275287878f4f4440df350196493f3d908f737917a968711fddd10", + "id": "risk_management/0015_0407_ea_moving_average", + "metadata": { + "category": "risk_management", + "jsonl_record": 730, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "6c46bee999155a265d1eff1df1e9cfc62a804052d75cf1f1bf5593da8b0d09f7", + "id": "risk_management/0016_0705_moving_average_trade_system", + "metadata": { + "category": "risk_management", + "jsonl_record": 731, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "11db148e04e3d1007a5143ee7b60ad5e8f3b8b5dec1e7c2ed20fdb0e90c8866e", + "id": "risk_management/0017_1120_moving_average", + "metadata": { + "category": "risk_management", + "jsonl_record": 732, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "9afcaba5e6c7657bba35c3e4722817aedd3cb0d06912a1ba07c6287262a0fe56", + "id": "risk_management/0018_1273_corrected_average", + "metadata": { + "category": "risk_management", + "jsonl_record": 733, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "order_risk", + "content_hash": "7a4bb44d90e7e6300c50a647eeaadee86827f5ee945f2067ff07b738e0b202aa", + "id": "risk_management/0019_1276_movingaverage_fn", + "metadata": { + "category": "risk_management", + "jsonl_record": 734, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "a917e5a4e7e706fddc367527aae3c8903166a1b8a0d07141802fa4bdbce6673a", + "id": "rotation/0001_gold_asset_rotation", + "metadata": { + "category": "rotation", + "jsonl_record": 735, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "15c0f63ea4a6dc0e3e54610c7e7fa5d3e032c8fb4c90e372f6b5bc7688c1c28d", + "id": "rotation/0002_safe_haven_rotation", + "metadata": { + "category": "rotation", + "jsonl_record": 736, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "913ad1bb9b3c444f9812ad9c68114d78eb0678444f547ffa605c9527d3cb2841", + "id": "rotation/0003_timing_bond_rotation", + "metadata": { + "category": "rotation", + "jsonl_record": 737, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "604247182afbfca48b989db2daf653117915a8527e35bdc044bdac06de264465", + "id": "rotation/0004_monthly_rotation_ranking", + "metadata": { + "category": "rotation", + "jsonl_record": 738, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "a5169d6e25bfd329fa4476f0f267aa8097a6ad636d1c5808e968bf0530f352ab", + "id": "rotation/0005_three_factor_etf_rotation_strategy", + "metadata": { + "category": "rotation", + "jsonl_record": 739, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_asset_allocation", + "content_hash": "40720b0980d60e1f23b0922d119b6defe7405a9870558d8bc71a088f186152f5", + "id": "rotation/0006_rotational_trading_strategy", + "metadata": { + "category": "rotation", + "jsonl_record": 740, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "precomputed_ml", + "content_hash": "c873df07018f9d29db187a0e123261144156f75bdb5572f92c50e10b18f49cfd", + "id": "sentiment/22_fear_greed_strategy", + "metadata": { + "category": "sentiment", + "jsonl_record": 741, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "precomputed_ml", + "content_hash": "8145576ccca95bf437f8f8ca05a602ab5bc07f98fa4754cf0cf9c4f21b9e7879", + "id": "sentiment/23_put_call_strategy", + "metadata": { + "category": "sentiment", + "jsonl_record": 742, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "precomputed_ml", + "content_hash": "8bc36dda7dff85d2921b5abdd0a40be0da8f5de59d04ca5d516a47d846c0dd35", + "id": "sentiment/24_vix_strategy", + "metadata": { + "category": "sentiment", + "jsonl_record": 743, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "precomputed_ml", + "content_hash": "397d282cfa4b14993c2023bb4ff84da56245f267441c1c6e527322fe2ee7a674", + "id": "sentiment/33_btc_sentiment_strategy", + "metadata": { + "category": "sentiment", + "jsonl_record": 744, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8ad8080e0311d9a4fc3d773173ea59f932aa799321e9c20ab532cd55e80a74b7", + "id": "special/01_premium_rate_strategy", + "metadata": { + "category": "special", + "jsonl_record": 745, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a95c55af121869f2fb1550f7ee06d263b9b8a8a2d0cefc2394c74df3e80acbc", + "id": "special/02_multi_extend_data", + "metadata": { + "category": "special", + "jsonl_record": 746, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "70f1b23f6ec98d9fe8cbd9f6e1fb8c85c5e60ad2b3fd9042ba406d0cd807d39f", + "id": "special/04_simple_ma_multi_data", + "metadata": { + "category": "special", + "jsonl_record": 747, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4359d9f56510b95a58066bbe300e7f7ba92293b8217b5ace5572d71c79c41d6a", + "id": "special/13_fei_strategy", + "metadata": { + "category": "special", + "jsonl_record": 748, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "74547943515cbf44bfcd30cf3ee3334efea5cf3ff922bb9dc83df05712d6bd3e", + "id": "special/14_hanse123_strategy", + "metadata": { + "category": "special", + "jsonl_record": 749, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4f980efef12218cabb6e233fa98acdcb4d8c35778802182058174a698a8c0775", + "id": "special/18_etf_rotation_strategy", + "metadata": { + "category": "special", + "jsonl_record": 750, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "389532f093ffd99ebf7fa9f70576c7d7d1895260ce45cc1788c71ad7ca04631c", + "id": "special/20_arbitrage_strategy", + "metadata": { + "category": "special", + "jsonl_record": 751, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "4874fa8905179a3a036b6a1e5fe2005fb399dbc56587012816af05e7b4f39d1e", + "id": "time_based/118_data_replay_bollinger", + "metadata": { + "category": "time_based", + "jsonl_record": 752, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "38539f6ca26e5c3241b2079dc83bbb56f5de4f9f9c704634de27fe1489d02823", + "id": "time_based/119_data_replay_ema", + "metadata": { + "category": "time_based", + "jsonl_record": 753, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "0838661af09e5413e34f1596c78bde931a41e2198495cd334e1fd5a2c9132247", + "id": "time_based/120_data_replay_macd", + "metadata": { + "category": "time_based", + "jsonl_record": 754, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "4632d69c533363ffbdfc09b30421995cac98ce39ffd57345812eaa31f732f522", + "id": "time_based/52_data_pandas", + "metadata": { + "category": "time_based", + "jsonl_record": 755, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "0c0aff12ad8f6bcd486fcce123f932fd8d235d13816ae3bfa04281eb3a4f6f20", + "id": "time_based/53_data_resample", + "metadata": { + "category": "time_based", + "jsonl_record": 756, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "d59415e19dd9ca7a36e8fe240ece1784558011c2a73af98eb82198e5d4efc36f", + "id": "time_based/58_data_replay", + "metadata": { + "category": "time_based", + "jsonl_record": 757, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "b327cabbb2f72a9825a9acd0a0af9f4ca9e4e5e1cb754e7de2d0b6723c331f06", + "id": "time_based/62_timers", + "metadata": { + "category": "time_based", + "jsonl_record": 758, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "multi_timeframe", + "content_hash": "8ac89def96a6e1a7e18a4736e932e2bd9e94a1ee7bf86dc493f2ec5cd78913d2", + "id": "time_session_system/0001_simple_pending_orders_time", + "metadata": { + "category": "time_session_system", + "jsonl_record": 759, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "ba2438ee727dff1990d4840361ad5ea84ac62d84e5e045e7a73d391b901b8adc", + "id": "time_session_system/0002_night_flat_trade", + "metadata": { + "category": "time_session_system", + "jsonl_record": 760, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "8d885f87dd1b9dc2a58c8fc37740e7df089aff9cb402165edc4497dd43850e3a", + "id": "time_session_system/0003_opentime", + "metadata": { + "category": "time_session_system", + "jsonl_record": 761, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "821433e114325cdedee4a051bd4fb6eb49538b9184a43e3830cfe68f7bc2d82b", + "id": "time_session_system/0004_21hour", + "metadata": { + "category": "time_session_system", + "jsonl_record": 762, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "bc2a0ea409f4314940111aec3c9e55e6d8f82ffd7ebbb3387fed5f7218f49cbe", + "id": "time_session_system/0005_opening_closing_on_time_v2", + "metadata": { + "category": "time_session_system", + "jsonl_record": 763, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "684ebe8b75e8172cfd1c26988d60d0ce2ba3633c1c14a96c0bd5fcaa8dd37d9b", + "id": "time_session_system/0006_times_direction", + "metadata": { + "category": "time_session_system", + "jsonl_record": 764, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "multi_timeframe", + "content_hash": "395a24337e4d0e52b0ddd794126e3fe5358978cf1d9c43bdb27bb604dae761f8", + "id": "time_session_system/0007_open_close_on_time", + "metadata": { + "category": "time_session_system", + "jsonl_record": 765, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4b31acfbbde44e41986472e719873b242c7b25619012ebea4a84740ba6e0c43e", + "id": "trend_following/0001_sma_trend_following", + "metadata": { + "category": "trend_following", + "jsonl_record": 766, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d65ea458e1915c94810dce06b829a98aa233984b993e0f7fc3155452d4f000e8", + "id": "trend_following/0002_gold_hmm_trend_following", + "metadata": { + "category": "trend_following", + "jsonl_record": 767, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "de7f2b5ee7ccf8d6d78e87f4634ae1a1baa6f8b18f812203eab543837ff758be", + "id": "trend_following/0003_risk_parity_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 768, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "055e88b9c02351b38366397580ac13a1aa59111dd7badc5b7823c99eb4adf7c1", + "id": "trend_following/0004_decomposing_trend_equity", + "metadata": { + "category": "trend_following", + "jsonl_record": 769, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "85fb149879c47d3a9d9fbde39b18ce8edfbaf1faaef4763db00095919be404cc", + "id": "trend_following/0005_trend_equity_decomposition", + "metadata": { + "category": "trend_following", + "jsonl_record": 770, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "efbbf5a7000d2356d3613524d76e1558bc8f44d441bacc6f1bbf67e6a144b0cc", + "id": "trend_following/0006_trend_equity_primer", + "metadata": { + "category": "trend_following", + "jsonl_record": 771, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "83ac5188d406088062e1328f6b7391dc0928dc21c0e09e941703a832403e427e", + "id": "trend_following/0007_trend_equity_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 772, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "479f5c8d9258b57a61d13eb496ac6e8d2baa597ae84e44b2531842e798969134", + "id": "trend_following/0008_trend_following_macro_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 773, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "69143665ed28fcbc8a9c3f38dbd5bfa3959b96ec751345614414bbe400169b05", + "id": "trend_following/0009_crypto_trend_following_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 774, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "155795717dc6b52c982be12a3cab07aa2e29a024df61db4e6a6ff8286839b329", + "id": "trend_following/0010_mean_reversion_trend_following_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 775, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "330fbe8018f6a1afa8dae79a91e998978a94ae8e8eb1e3e4cc82e2be11d0ce30", + "id": "trend_following/0011_fast_trend_following", + "metadata": { + "category": "trend_following", + "jsonl_record": 776, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "43cdf176932e1441eeadadf273046af1b2c2a2596c721cf56726d8e05591e6e8", + "id": "trend_following/0012_trend_factor", + "metadata": { + "category": "trend_following", + "jsonl_record": 777, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f99cfb73d998dc22c3355507eab9bcfae00825424f6c8a10a86ef5635f9d92d2", + "id": "trend_following/0013_0003_vr_breakdown_level", + "metadata": { + "category": "trend_following", + "jsonl_record": 778, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2b607289d9ed66e1410261c0221486f58b85f873cf62083167bebff7e435291", + "id": "trend_following/0014_0022_yy_cross_2_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 779, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "95a0ab527f11a3f045341c4e4c229c1c29adad2920de4e2984270c2fe369fb26", + "id": "trend_following/0015_0029_simple_yet_effective_breakout_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 780, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aaae52a101ce0e1f45b0f77052d5f1943b9fa9a614f3a2d95948fc1c7b4eaee9", + "id": "trend_following/0016_0036_breakout_strategy_with_prop_firm_helper_functions", + "metadata": { + "category": "trend_following", + "jsonl_record": 781, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "57d985bc7985816da5ff9a97171500de78594b4cfbedd3681e8a262e10264558", + "id": "trend_following/0017_0044_wpr_bb_atr", + "metadata": { + "category": "trend_following", + "jsonl_record": 782, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c939b693a0f8423d379a1d637675e0085bd85a58bb9548402789360e06e79ff", + "id": "trend_following/0018_0061_ema_rsi_risk_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 783, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e4cd3d00ae041260ece57364541bf6685355bf7fc0c3538872b09a980ca93806", + "id": "trend_following/0019_0131_cidomo", + "metadata": { + "category": "trend_following", + "jsonl_record": 784, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "76c6ae75f8cf63275fe8bcbcb21b98ece04f56b8aec83956a233d8db2c9af83d", + "id": "trend_following/0020_0136_ema_lwma_rsi", + "metadata": { + "category": "trend_following", + "jsonl_record": 785, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "94cefc0120629eb30fecb4664df06b4e686c6cde4e78251a6bd4baf3a34bcc18", + "id": "trend_following/0021_0157_bago_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 786, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "02e8fe50117d7904b4a7fad611f93d3f4846639d2a68dd4491c399ff11d7fe42", + "id": "trend_following/0022_0173_rsi_expert_v2_0", + "metadata": { + "category": "trend_following", + "jsonl_record": 787, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f01adf4dbfd54ce574ef4c967243f1558995ec94d704f00b896e116e759950ee", + "id": "trend_following/0023_0200_xfisher_org_v1", + "metadata": { + "category": "trend_following", + "jsonl_record": 788, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "08e8f133a8dbc163d9bb0655f17a0ef1b0706f13e7d6226cede01dfb2c44dd5f", + "id": "trend_following/0024_0247_flat_trend_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 789, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "71e272e203a0d09ce27df4dbcfd34f0254b82172aef993250440e3d5a2626a24", + "id": "trend_following/0025_0248_ssb5_123", + "metadata": { + "category": "trend_following", + "jsonl_record": 790, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5e72dd9fb452e45ef8c585b17982d4b40f008be5e1501c713749278bccb5431e", + "id": "trend_following/0026_0252_ravi_ao", + "metadata": { + "category": "trend_following", + "jsonl_record": 791, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "20ef552bf4b0271cfa952badfcd06b130f6c586548451bb58979d14945b6deeb", + "id": "trend_following/0027_0286_rsi_expert", + "metadata": { + "category": "trend_following", + "jsonl_record": 792, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a1175dc98c9b4c1daeb1ecfacc1383bc73f0ddd66e228b419219440e204fc6b5", + "id": "trend_following/0028_0303_3sma", + "metadata": { + "category": "trend_following", + "jsonl_record": 793, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "51ceebd7d34dad08f1e036a35308627e0834d91eca9492224ac51ba86dd08360", + "id": "trend_following/0029_0304_breakdown", + "metadata": { + "category": "trend_following", + "jsonl_record": 794, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2133842772a04a62f656d2a785d36d731741b7386e3e06e8df08d641cc8eb0bb", + "id": "trend_following/0030_0317_dematus", + "metadata": { + "category": "trend_following", + "jsonl_record": 795, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a157092a8b47d33ac90968382e3c200e1c9772fe359af6f9352c5fd9d0f5e0e4", + "id": "trend_following/0031_0318_sidus", + "metadata": { + "category": "trend_following", + "jsonl_record": 796, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4d0ba471657045d39a30e28f295452a03d6924c0a7a29e6ceb493f9909f1d0e7", + "id": "trend_following/0032_0363_two_ma_bunny_cross_expert", + "metadata": { + "category": "trend_following", + "jsonl_record": 797, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e6ae0527bdf2896f60e59e255ba29f5c2024ecaf4bb3d448e0b0bb2eb3ac0ef3", + "id": "trend_following/0033_0408_universal_macross_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 798, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d79ce42b8d52cb24657a04717a24460d845bfdf55d0fbdce13c8324c7280e3c6", + "id": "trend_following/0034_0424_ema_wma_v2", + "metadata": { + "category": "trend_following", + "jsonl_record": 799, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "48d4beb469d55d3239b8e9e6dd4f342e04a9002626ca6d33dd8a06ac6e44bbce", + "id": "trend_following/0035_0445_ichimoku", + "metadata": { + "category": "trend_following", + "jsonl_record": 800, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5594cdd2547d564e563e83d64b31a5802ac8c331e1612ed4978b9c29f1906f4c", + "id": "trend_following/0036_0451_macd_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 801, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9982ab94e6223be78e51975d4d8a95b2bb077341a3fd0d1fe76c173c576e8868", + "id": "trend_following/0037_0456_channels", + "metadata": { + "category": "trend_following", + "jsonl_record": 802, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d87dbe73920ce29604a95db098bafed50f3965ff74b6fad1f7ce1ed06abe4ecc", + "id": "trend_following/0038_0459_trend_me_leave_me", + "metadata": { + "category": "trend_following", + "jsonl_record": 803, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d5f3b1152a530c168ec7655780f7ad1165d97f4331e215806c67a8954fa96244", + "id": "trend_following/0039_0465_time_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 804, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "653983de96a39536654576d2fe61fd81c36f7a1dac50f101c977525ccf6dd1a1", + "id": "trend_following/0040_0467_percentage_crossover_channel", + "metadata": { + "category": "trend_following", + "jsonl_record": 805, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a0c4fc49605e77491d3df0c7bffac7932a428bbf3f5040563dab1b0f34c9d44a", + "id": "trend_following/0041_0500_ema_6_12", + "metadata": { + "category": "trend_following", + "jsonl_record": 806, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b443ebe6e32e18b67b08762b8d8a9a74f12d39fdfd24e85f5eccb10d150c5293", + "id": "trend_following/0042_0541_flat_channel", + "metadata": { + "category": "trend_following", + "jsonl_record": 807, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "673d99f796e6b6e3da970b0c3242c4bee8fa91210bf6e3eecea967312b0a9ea7", + "id": "trend_following/0043_0560_trade_in_channel", + "metadata": { + "category": "trend_following", + "jsonl_record": 808, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9fad1c1b6f69b041ddf643d0afa9ab754dbba426c72bcc227b9231ad195aeeda", + "id": "trend_following/0044_0575_eurusd_breakout", + "metadata": { + "category": "trend_following", + "jsonl_record": 809, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a5ac458715e65df81dbea84b915f7b086937f77fc13296daa811da1822cac5a8", + "id": "trend_following/0045_0578_rabbitm2", + "metadata": { + "category": "trend_following", + "jsonl_record": 810, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "334a5f16e22b3d66cb71a3170a5ef3eb178d5c204c421f587c6a624ce0f6cb36", + "id": "trend_following/0046_0579_nevalyashka_breakdown_level", + "metadata": { + "category": "trend_following", + "jsonl_record": 811, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1779f2557144279a98500d89b694c467ad905aafae9c4059d9f9b27f5bb931ba", + "id": "trend_following/0047_0592_two_ima_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 812, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6aa47f618944a08cd44f72c1614bee6e3fd67e7ef5b75586323ae5e6fd67718f", + "id": "trend_following/0048_0624_rsi_trader", + "metadata": { + "category": "trend_following", + "jsonl_record": 813, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aa119a4dab27a91c8e08f9b8be1dfaac4fe3dce020d282ab66e1591fef1d72af", + "id": "trend_following/0049_0628_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 814, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7a994e9ebf6a410513022887b43e686fc15e7a677762c09333666a245addf27c", + "id": "trend_following/0050_0630_elli", + "metadata": { + "category": "trend_following", + "jsonl_record": 815, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d36de7960f1d1d1734eba480b7058887c247437756e9ff8a032f7ec28f15c88c", + "id": "trend_following/0051_0631_doublema_crossover", + "metadata": { + "category": "trend_following", + "jsonl_record": 816, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0f0190001a06e5f0f2615ed3ed0708c113c1b0eca78e4aa92e1cb412511b7467", + "id": "trend_following/0052_0633_ema", + "metadata": { + "category": "trend_following", + "jsonl_record": 817, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1671594496e0f11acd2409003dfa8bef3c325b90c02f686363e8f51e71d7c213", + "id": "trend_following/0053_0641_currencyprofits", + "metadata": { + "category": "trend_following", + "jsonl_record": 818, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9d0022ba83dad672119b452925a6329aab400866c662570138340861300b02ab", + "id": "trend_following/0054_0644_brakeout_trader", + "metadata": { + "category": "trend_following", + "jsonl_record": 819, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7ea992a954dab59aa4d0c14510b0b0e1f19d8e3a057cf0393367c0875f81c4f3", + "id": "trend_following/0055_0646_supportresisttrade", + "metadata": { + "category": "trend_following", + "jsonl_record": 820, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d6af69c3df11d69098d88c72d20425bdd56ce70acd99a04070715678478cb41b", + "id": "trend_following/0056_0648_get_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 821, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "39ebe21dd39f7d0b87e7fffbc5d1ebc369807c3ee7cffe7b35ad9ce237bdeee9", + "id": "trend_following/0057_0649_true_scalper", + "metadata": { + "category": "trend_following", + "jsonl_record": 822, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2b6b3f9e96c2138e6f5773dee4a0d281c4a3d80fd34e3885aa8b0b2cb1326dda", + "id": "trend_following/0058_0650_ais1", + "metadata": { + "category": "trend_following", + "jsonl_record": 823, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4fb8252da5af5dbf520b82c9563d06366ee1f050f6de1380b2e55e9614e3e080", + "id": "trend_following/0059_0669_hercules_atc_2006", + "metadata": { + "category": "trend_following", + "jsonl_record": 824, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3c84f61fecf8478d208e4359049272eb364bddb47db8c3e7c3da86c0b6cba044", + "id": "trend_following/0060_0676_exppriceposition", + "metadata": { + "category": "trend_following", + "jsonl_record": 825, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6cb1b4572b3997cf5af66d9237d58a27b4ef3441c2a4cf649c637e544eca57b9", + "id": "trend_following/0061_0677_ema_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 826, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "43cd04148f6df1d02b530d1d8d41c957fdd6816f609510691739f9a74d02e6dd", + "id": "trend_following/0062_0685_rabbit3", + "metadata": { + "category": "trend_following", + "jsonl_record": 827, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "44b43872ea595785bbd403afa44703a7686bcbcdd617af6f24f1a66bea33abb7", + "id": "trend_following/0063_0686_ma2cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 828, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "245ca1803e1530b7e6977f6c9660efd2367e958a0c2b467e48b973848b0d85d0", + "id": "trend_following/0064_0687_adx_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 829, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6255db4fd34c0da6d70c66ec7c347047add82bbe298ef090d2a50f958ca22c4e", + "id": "trend_following/0065_0691_polish_layer", + "metadata": { + "category": "trend_following", + "jsonl_record": 830, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4a8c0194295ef0067f686848ffc27ccb63a7471b4d409c4a273071974216f091", + "id": "trend_following/0066_0695_5_8_macross", + "metadata": { + "category": "trend_following", + "jsonl_record": 831, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8bc11f819b39ee3d0b5ef4150cfd01ed4da14f535904796a4af5e04bc3df7df6", + "id": "trend_following/0067_0696_kijun_sen_robot", + "metadata": { + "category": "trend_following", + "jsonl_record": 832, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2f238544166d3ce54f8bbdf1938e8ec992b1a21badb9f987e54c363dc21f3585", + "id": "trend_following/0068_0734_breakdown_level_day", + "metadata": { + "category": "trend_following", + "jsonl_record": 833, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d3f34d37c2017cb9cd05f2a27589b3cf7e1531cd2203c8ee56b71510db2a0e2c", + "id": "trend_following/0069_0735_ema_wma", + "metadata": { + "category": "trend_following", + "jsonl_record": 834, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6e9b0994b7406cb37071115a1b22aced5767dfd7f344c65ca380047b0d67271c", + "id": "trend_following/0070_0739_trend_alexcud_v_2", + "metadata": { + "category": "trend_following", + "jsonl_record": 835, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c6bf872eff7f28f59889f9a98395a9e1a5d548c736152d3bcee59795cc16832b", + "id": "trend_following/0071_0743_ma_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 836, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "557a3ee04fa9d48eac54b2ed1b2493bb5f8e1d1e7ee5cd754f84f525b5e554cf", + "id": "trend_following/0072_0759_crossma", + "metadata": { + "category": "trend_following", + "jsonl_record": 837, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "640d1efffc766428fc464595f3856d3c31a206926dd67f379148f991db720d34", + "id": "trend_following/0073_0772_simple_fx", + "metadata": { + "category": "trend_following", + "jsonl_record": 838, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "720edac1f25b3dd477730af81b1aaf774ed199caf084742c7229b64f19d5820b", + "id": "trend_following/0074_0776_original_turtle_rules_trader", + "metadata": { + "category": "trend_following", + "jsonl_record": 839, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3aa60332bdda12f4c960aeab2a558f728f801c87088bf480c0dfbc3b8741bf9f", + "id": "trend_following/0075_0784_dvd_level", + "metadata": { + "category": "trend_following", + "jsonl_record": 840, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1ce243ce15320f756bac237e46f8884de0a81ffc703e7b96f43b9bbf86335a0d", + "id": "trend_following/0076_0830_fibonacci_retracement", + "metadata": { + "category": "trend_following", + "jsonl_record": 841, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f036326870233c5e1eb8ed2cfefee3f01426f739abe7b19f7b5eae879fe5951d", + "id": "trend_following/0077_0854_pchannel_system", + "metadata": { + "category": "trend_following", + "jsonl_record": 842, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d65b4fa5a0fe64b7368e49d9cae8b1125260f7f7b95fa5806fe3c7cd2855c3d6", + "id": "trend_following/0078_0855_donchian_channels_system", + "metadata": { + "category": "trend_following", + "jsonl_record": 843, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fbe6ad16f511a73eea6dbad41ad3347cea62b4d222cbfb624bf2ea68bdfdb031", + "id": "trend_following/0079_0866_ma_l_world", + "metadata": { + "category": "trend_following", + "jsonl_record": 844, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7e878291b847821d78ee7335488cac462f4b9a511d2bc7aac085b60f63bf0787", + "id": "trend_following/0080_0868_longshort_expert_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 845, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5361662368a673169326dc1eaedaa5fe469c8708a4104af748a6dfe374250122", + "id": "trend_following/0081_0884_roc2_vg", + "metadata": { + "category": "trend_following", + "jsonl_record": 846, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7d3e891f4db9eb83a3d42d81cff0a669bce822b9ffd6f1d5c9bd2ce8b5289d80", + "id": "trend_following/0082_0887_cci_woodies", + "metadata": { + "category": "trend_following", + "jsonl_record": 847, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d9cffdaae17f9d0715385ccb25ff3e7f4919c7211a366f0e919cdcea0a0cf63e", + "id": "trend_following/0083_0890_trend_arrows", + "metadata": { + "category": "trend_following", + "jsonl_record": 848, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "41c80a003bb5f4747ad30a3d73e783695d1246d7ceb162b29ffe6110f3092990", + "id": "trend_following/0084_0905_wprsisignal", + "metadata": { + "category": "trend_following", + "jsonl_record": 849, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e5a3166e8dcd11a541b534cf08f590229a49182a82a6e8927e2ace07bd7fde6d", + "id": "trend_following/0085_0906_supertrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 850, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d9c564c5d2d5a75e3e11d9d7ea8c876018136b154954716a6407949693cb76dc", + "id": "trend_following/0086_0909_stalin", + "metadata": { + "category": "trend_following", + "jsonl_record": 851, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "130f20158c75f206a954fa7d2eef8481c152837181105191e3d8f381a1297389", + "id": "trend_following/0087_0911_sidus", + "metadata": { + "category": "trend_following", + "jsonl_record": 852, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2be2d65b3826de3f0c9fbc158e0c56d77d930405c533159751cc3be8b9c5b907", + "id": "trend_following/0088_0913_pricechannel_stop", + "metadata": { + "category": "trend_following", + "jsonl_record": 853, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8b5676f088688c7d2f7d02bba85715f705bf31641d6adf87ee3e0e56c2dde788", + "id": "trend_following/0089_0915_lemansignal", + "metadata": { + "category": "trend_following", + "jsonl_record": 854, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "10cd3ffc66c0dbc625fd00d9d7f7d0713ac3d8505e0716d81ea61c6db4d3a376", + "id": "trend_following/0090_0921_bykovtrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 855, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4e65a35868d22a4479243d333b8f44da567f59e4af4c29b9f6c155fc172dcf88", + "id": "trend_following/0091_0922_asctrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 856, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c034e4f40846d92857dc63e00bb7ed758c67b453d56ef9eb97e74e4805b683b9", + "id": "trend_following/0092_0926_stochastic_histogram", + "metadata": { + "category": "trend_following", + "jsonl_record": 857, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d581a6cd0103a0cfb17f676355fdb92a58e13b8fa9ff342218ea7ff16b6655f2", + "id": "trend_following/0093_0928_rvi_histogram", + "metadata": { + "category": "trend_following", + "jsonl_record": 858, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d63832443620c44c2bd4b37d94753c210aed8121f51427e3b46717334db292db", + "id": "trend_following/0094_0966_digitalf_t01", + "metadata": { + "category": "trend_following", + "jsonl_record": 859, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "17af3280deb1e32a0c2cd63e18280043d7e25474ce7736b3baf39a08e6567191", + "id": "trend_following/0095_0972_colorzerolagdemarker", + "metadata": { + "category": "trend_following", + "jsonl_record": 860, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f5a2dfc727dbbf96a9c3d6435949ca93aad7c3e325186d3a88d201882c604c6e", + "id": "trend_following/0096_0976_laguerre_adx", + "metadata": { + "category": "trend_following", + "jsonl_record": 861, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b2026288aefd473e191e11b2cc7d2ee18519ca53656bb41f332e28e15bd43e02", + "id": "trend_following/0097_0977_laguerrefilter", + "metadata": { + "category": "trend_following", + "jsonl_record": 862, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5af69882bd4cd00227ba741dd5cbf3241e5ace103073551cbcbe570b883c4002", + "id": "trend_following/0098_0982_derivative", + "metadata": { + "category": "trend_following", + "jsonl_record": 863, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "698e0cabba6f15d5b6d68a3e682e68130d59aa04155dc999051173b3b59968bf", + "id": "trend_following/0099_0989_instantaneous_trendfilter", + "metadata": { + "category": "trend_following", + "jsonl_record": 864, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1603f5f6fdca6168f30d72b872f8924bedd43933e4be3ab8ac3626fae34af65b", + "id": "trend_following/0100_0991_colorzerolaghlr", + "metadata": { + "category": "trend_following", + "jsonl_record": 865, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "124d956c80325883a317be7a9d5412bd2b5d033cd558d14580383024fe3e8ab2", + "id": "trend_following/0101_0995_i_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 866, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "718235678871582e45a7ff37d0d5107877081a2f8e62f7271dca9224fb9ca9a7", + "id": "trend_following/0102_1002_fractalama_mbk", + "metadata": { + "category": "trend_following", + "jsonl_record": 867, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b3bd46ad576afc4fe66e20a194362ec814876e0113510a5ca097e99990abcb4b", + "id": "trend_following/0103_1011_ema_crossover_signal", + "metadata": { + "category": "trend_following", + "jsonl_record": 868, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "913aeb7ceb75010a82149a5a143b0824229052fc4c5e72275ba948293a62763b", + "id": "trend_following/0104_1019_color_schaff_wpr_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 869, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "83ca13271d79814febe87642e29ce80bd5586d9de6c814f2a409b1d91a590cae", + "id": "trend_following/0105_1020_color_schaff_trix_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 870, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b0e7e8738e3a80660d22113df1cb7064bf53ac1a9348485ca528e8ecdf7697e7", + "id": "trend_following/0106_1021_color_schaff_rvi_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 871, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c37be0461022f5d665adf7ada0aa06404b9454c12d7a39351c346acb07ccf25", + "id": "trend_following/0107_1022_color_schaff_rsi_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 872, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3bdbb022048450ac6f796957578d946c7fcefd6f296fc95f76f0b4ee38fd9a99", + "id": "trend_following/0108_1023_color_schaff_momentum_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 873, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "91f0dadc335b01bc07d65fa23dfa1b778c7b3bb1fb52bdf847c220a797c01038", + "id": "trend_following/0109_1024_color_schaff_mfi_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 874, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "58269e04a833ae1df47e1199417e60a345f34acc632e6a4a39c036623751208c", + "id": "trend_following/0110_1039_adx_crossing", + "metadata": { + "category": "trend_following", + "jsonl_record": 875, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "43f9b9283f8b2e59d61b8416cfe005d6afead4eb17f152cd80d69942d72be368", + "id": "trend_following/0111_1069_jbraintrend1stop", + "metadata": { + "category": "trend_following", + "jsonl_record": 876, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "69f578c4a54051b6e7b7150cb3cca92a45af47519aaaa9175b7346f193450b1a", + "id": "trend_following/0112_1078_kaufwmacross", + "metadata": { + "category": "trend_following", + "jsonl_record": 877, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "735c688a15c1c1401b9c5d67417cb68ebdf356869550804154afd8ff5acf0946", + "id": "trend_following/0113_1083_hulltrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 878, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1107abd30ea135680212501032c8261c68f44a00521b232bddd8573898132a5b", + "id": "trend_following/0114_1085_trendmagic", + "metadata": { + "category": "trend_following", + "jsonl_record": 879, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4e3a402d899651b8ba00e2a7850ac1c19e2affdb82ff1c047ee676a3915b16b8", + "id": "trend_following/0115_1103_altrtrend_signal_v2_2", + "metadata": { + "category": "trend_following", + "jsonl_record": 880, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "97e4a84bb546d6535e62f02f50e71a5b0764093d19ba02d64a640e7225ba64ef", + "id": "trend_following/0116_1107_macd_sample", + "metadata": { + "category": "trend_following", + "jsonl_record": 881, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e76a6056de4bb60c6e859b57f4dbafa092611388b1939f423f2c036c18729032", + "id": "trend_following/0117_1128_macd_waterline_cross_expectator", + "metadata": { + "category": "trend_following", + "jsonl_record": 882, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5c7271659ec13c7caefc2fe344f20b37aab725725e929197d2888c3a06ebf0d4", + "id": "trend_following/0118_1129_breakout_bars_trend_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 883, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b400387ceae01ef854e72cd685d7abcf8522cdd711ce683d1e320bbe043f5057", + "id": "trend_following/0119_1140_ea_malr", + "metadata": { + "category": "trend_following", + "jsonl_record": 884, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cdd721bc724ab8825c2bae2bfc4e27c271e74c53f2e562524b0464531b14795f", + "id": "trend_following/0120_1159_up3x1_krohabor_d", + "metadata": { + "category": "trend_following", + "jsonl_record": 885, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "915f95b586df58169a52c097ff8fb7c48f1e7df967436f6a0ba176130f22b7c4", + "id": "trend_following/0121_1162_trendcapture", + "metadata": { + "category": "trend_following", + "jsonl_record": 886, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e9b2d51aa4b38fe603ed94cdb63c66a0e42000673e44e8c01c4d767baf483a26", + "id": "trend_following/0122_1165_tradechannel", + "metadata": { + "category": "trend_following", + "jsonl_record": 887, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0b387f0338243c1d794d5b591af94ba2acdd84fb601573b1ee03fcd25a98c1c4", + "id": "trend_following/0123_1166_ma2cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 888, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5f7b745315b631dd21d76c56503a6c7486ad88df75f726c5d3d660b8f652908e", + "id": "trend_following/0124_1172_ea_marsi", + "metadata": { + "category": "trend_following", + "jsonl_record": 889, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d97cebd000a97e4ee1352fbe44698820a2da38bada226baf492d5c06354af0de", + "id": "trend_following/0125_1188_2ma_rsi", + "metadata": { + "category": "trend_following", + "jsonl_record": 890, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2cc9cc1a127c24c0e3ad15783a432aa20db4328ec902a8436e4f67b4e6e7a8cf", + "id": "trend_following/0126_1189_adx_v1", + "metadata": { + "category": "trend_following", + "jsonl_record": 891, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ec1af95bfd365ea82b6f35088cc63a25f2e953dae5a89b163949bd8106e2b8b1", + "id": "trend_following/0127_1192_bb_dema", + "metadata": { + "category": "trend_following", + "jsonl_record": 892, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0efc5f2f271797c9d3365d710fe6657b644d6424e2fe43578ef01a772c8658f0", + "id": "trend_following/0128_1193_dual_trix", + "metadata": { + "category": "trend_following", + "jsonl_record": 893, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "21bea6e45dfbb2445091046c85c6ead5053a75097867b743f7194a1ebc25d7ad", + "id": "trend_following/0129_1201_puria_method", + "metadata": { + "category": "trend_following", + "jsonl_record": 894, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c0531376861c382ce555fa9893f644493e6268a3f215bb8608c0a5f2d6290816", + "id": "trend_following/0130_1202_rkd_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 895, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7ac0f527ec68961b9bc3a80b1ee5e2da0f2d5e192bb24c5585971210ea4ea378", + "id": "trend_following/0131_1210_candle_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 896, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fbcfff203f40493a8048c19cd178cf21d7e2522630dcb9224daae58df3d92c18", + "id": "trend_following/0132_1213_mbkasctrend3", + "metadata": { + "category": "trend_following", + "jsonl_record": 897, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "69658494ae0cd3ad2bbf6791f28653b91f9dfdbb3ec29d67650db362bc0bd4e6", + "id": "trend_following/0133_1219_multitrend_signal_kvn", + "metadata": { + "category": "trend_following", + "jsonl_record": 898, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "190a991d6608d250b85b569c19225ccfbe3e9112642ae36f01955ed7f2365063", + "id": "trend_following/0134_1220_colortrend_cf", + "metadata": { + "category": "trend_following", + "jsonl_record": 899, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fc355a7d37a48c277c72e6e511e863a40029bb4edfdea57585bb8cf5a898d595", + "id": "trend_following/0135_1221_color_lemantrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 900, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2f37bc0aac7d98426305ee0c6a25fdc7156d624f830a9ff97502d4e32e62d71", + "id": "trend_following/0136_1226_adx_smoothed", + "metadata": { + "category": "trend_following", + "jsonl_record": 901, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "75730b33dd74aa2c096f479d84ce18f6cb6573260bfa5238c1ff93334867a9ec", + "id": "trend_following/0137_1229_vortex", + "metadata": { + "category": "trend_following", + "jsonl_record": 902, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "de1ad19fde6ac5a1a8685f68ff7d0fc92e37c70c458150d7f66db6252121ba28", + "id": "trend_following/0138_1231_trendvalue", + "metadata": { + "category": "trend_following", + "jsonl_record": 903, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8863399bded66c7b9669dc1f854fa3eb967e80a8c3d6677b302b9c8d9518f802", + "id": "trend_following/0139_1232_supertrend", + "metadata": { + "category": "trend_following", + "jsonl_record": 904, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d3fce669fc0e56b90a1d8e5ea87fac8cb3b8e12aa565736877669b626a73a0cc", + "id": "trend_following/0140_1257_atr_trailing", + "metadata": { + "category": "trend_following", + "jsonl_record": 905, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "16f75f5c96fddced47102fc48f33b00eb08d85641df6495e16b1905ac7e9109f", + "id": "trend_following/0141_1263_trend_continuation", + "metadata": { + "category": "trend_following", + "jsonl_record": 906, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0a11dfec1688ed2092142db1ca71c3e597a979811e4f856173af8e2d02124b65", + "id": "trend_following/0142_1266_adx_cross_hull_style", + "metadata": { + "category": "trend_following", + "jsonl_record": 907, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b10c72bdb01cda4ab53826ce3b37dcf9d1252625278601145e739be6cbae85a0", + "id": "trend_following/0143_1267_color_schaff_trend_cycle", + "metadata": { + "category": "trend_following", + "jsonl_record": 908, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "41d2595719f6dfdf21d128a75fd2c13702742ffe3876c38ed9b6ec221342320a", + "id": "trend_following/0144_1268_rd_trendtrigger", + "metadata": { + "category": "trend_following", + "jsonl_record": 909, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cc375e0a9413aee5a6884da1db8725ade414581132ad08172c885bcce21815e4", + "id": "trend_following/0145_1271_vinini_trend_lrma", + "metadata": { + "category": "trend_following", + "jsonl_record": 910, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c75d99e2f77b8ec37272ce528695219960c91faec4dac7173cb769b50183ebf6", + "id": "trend_following/0146_1272_vinini_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 911, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7d97a0f83988e3ab88188e0e61210f3a256bb546b094e9916ee10b4b0ce62a8b", + "id": "trend_following/0147_1275_oshma", + "metadata": { + "category": "trend_following", + "jsonl_record": 912, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "313e2f8e914d04de3676b3da286c18a26b8df9c479c4abc3e90d4e428e0ac67b", + "id": "trend_following/0148_1283_xma_ishimoku_channel", + "metadata": { + "category": "trend_following", + "jsonl_record": 913, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6bb8505d9185e5f7737a148066dfcdcef34c748d3d44cb3b59b0b94a72672247", + "id": "trend_following/0149_1285_rsi_cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 914, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4554600c6486e358885795004d48072feaad601c9409f7a46e6db0e0bab75fdb", + "id": "trend_following/0150_1288_ma_rounding_channel", + "metadata": { + "category": "trend_following", + "jsonl_record": 915, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "37c3ba1ad5364f16cf52f27cbabb837f0ef4d263f94909ca47b6c825eb944042", + "id": "trend_following/0151_1292_candles_xsmoothed", + "metadata": { + "category": "trend_following", + "jsonl_record": 916, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bd53660339da502f222b0baf532ccb895a361de8885dae5bb5bc469ac0857657", + "id": "trend_following/0152_1308_engulfing_cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 917, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8cd19d132fca389b94baa5020e175167dafa33b815f48943798951b5bdb647eb", + "id": "trend_following/0153_1309_engulfing_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 918, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "58579e18b045502d41ffbed674bda5a58a111024a1a487a4b47afd5e8ef563ae", + "id": "trend_following/0154_1310_morningstar_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 919, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bae7d58d2be4b68ea3d8489c02faaf8e7feab8984ca7924cad386c9ebe5e5ba4", + "id": "trend_following/0155_1313_morningstar_rsi", + "metadata": { + "category": "trend_following", + "jsonl_record": 920, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7681013bc78ebeebeb7754210577620667a14bff1b7ae24eb342427dc46dccff", + "id": "trend_following/0156_1314_morningstar_mfi", + "metadata": { + "category": "trend_following", + "jsonl_record": 921, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "adb234e560a235a20f9023947a4ed5cb9069aa7fde0258fa634afc4ad6778fa1", + "id": "trend_following/0157_1315_darkcloud_mfi", + "metadata": { + "category": "trend_following", + "jsonl_record": 922, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "28b0096277418014fe8209094485cd59dd40d7ebbf30928f7273d1afe8145d84", + "id": "trend_following/0158_1316_darkcloud_cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 923, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "53e5e1d2b0cdb8f555458d922dfc926af47bd0ba24d0126707e00534d44e3af4", + "id": "trend_following/0159_1317_darkcloud_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 924, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9815381439f5bc6a95237888c0111cd975218738db9d4cee8c6fdcc91b71b79b", + "id": "trend_following/0160_1322_meetinglines_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 925, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3f38790169bb650dbe6f19a0a1bd7cf0a42be2229401b830490630125c1c238f", + "id": "trend_following/0161_1325_hammer_cci", + "metadata": { + "category": "trend_following", + "jsonl_record": 926, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ccb3caed9f57e364337393a892700d4fffd9b113effc7f91bac16555e6555623", + "id": "trend_following/0162_1326_two_ema_time_filter", + "metadata": { + "category": "trend_following", + "jsonl_record": 927, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fa6aad69222f2c8c536c11cedbba5b57e2b7460020e84e4ba9223b679f80fc84", + "id": "trend_following/0163_1327_macd_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 928, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4278c25b93e3c219837c19705b531a5524a23b927099cb79bc10b2f234faea71", + "id": "trend_following/0164_1328_two_ema_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 929, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ff9551e65e4f74d128f52d7f1b41f1d44221377487190b50b7f9fb8971d320a6", + "id": "trend_following/0165_1329_price_cross_ma_adx", + "metadata": { + "category": "trend_following", + "jsonl_record": 930, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "48ab86dbbfcc94a3418d58b4cbd137c9f9b26c3f32a798d1960fa4897bd801ee", + "id": "trend_following/0166_1331_price_cross_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 931, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b5e028a699171015fbfa4a8c6b16bd1075cbbb7231bd1cf255cf47f499379fa7", + "id": "trend_following/0167_1334_hammer_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 932, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "481df75e4d01a039e0dd16baceb9412167c683b7a42638e40396a5f6d1ac9144", + "id": "trend_following/0168_1338_harami_stoch", + "metadata": { + "category": "trend_following", + "jsonl_record": 933, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e1dc2cce2b1bca605a5bf0837fd38e2a947c2669e655da40495e881623e8b05b", + "id": "trend_following/0169_1340_engulfing_mfi", + "metadata": { + "category": "trend_following", + "jsonl_record": 934, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "639b7069e22aa1da1251eee70a868221de10ea71139bd7b31498b6331117180f", + "id": "trend_following/0170_1348_alligator", + "metadata": { + "category": "trend_following", + "jsonl_record": 935, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "06caedfb1a22870d840d3f0a1802471919188d8d597ebb1c2456da876147ea7d", + "id": "trend_following/0171_xauusd_trend_pullback", + "metadata": { + "category": "trend_following", + "jsonl_record": 936, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46f8ca15b9dbba6867528723ee2dc3fbd5e00322e7f3363abddca50cdf27744b", + "id": "trend_following/0173_stiffness_trend", + "metadata": { + "category": "trend_following", + "jsonl_record": 937, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "191b7f613f4785bdfd5053725efb34bf5e43f6292599308172797fa20a080acd", + "id": "trend_following/0174_death_cross_reverse", + "metadata": { + "category": "trend_following", + "jsonl_record": 938, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6c9a065a8f52840b235284403ca48e0439b6dc417ea7ea094dd275839f1a8980", + "id": "trend_following/0175_golden_cross", + "metadata": { + "category": "trend_following", + "jsonl_record": 939, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "89bee3d16db35bcb3646eaff78ae959ffbec0173d7099ad252edd81a68f352bf", + "id": "trend_following/0176_persistent_rally", + "metadata": { + "category": "trend_following", + "jsonl_record": 940, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "98f83926ca96512a077dfd016a86c6f6d947563924e6065d42409dc4e31aa40d", + "id": "trend_following/0177_0127_macd_cleaner", + "metadata": { + "category": "trend_following", + "jsonl_record": 941, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7c024232fbc37e97399390aa43c77813b216eda55de88ed20dce02c155225d1b", + "id": "trend_following/0178_0134_tdsglobal", + "metadata": { + "category": "trend_following", + "jsonl_record": 942, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cca1566c58b88b7f361f13bba5d5b31602333a6846ce888a042e20dce0ff09d7", + "id": "trend_following/0179_0135_puria_method", + "metadata": { + "category": "trend_following", + "jsonl_record": 943, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ef7abc201efcfa92cf6d305b18c06dfa8f972af3166efcdb34bb79abc1969dd6", + "id": "trend_following/0180_0137_bulls_bears_eyes_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 944, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0e657fd2d70c77c77b79511542d0f0bbb0e20b544b51d4715d8f7177a6ab5921", + "id": "trend_following/0181_0140_macd_no_sample", + "metadata": { + "category": "trend_following", + "jsonl_record": 945, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1702dede3e8218158349f5e3f977206d72cab8f54e31e0a2b0c235de76693f02", + "id": "trend_following/0182_0151_precipice", + "metadata": { + "category": "trend_following", + "jsonl_record": 946, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4a5f7c1c8f08e6df7d9847b8f217b61698b51b4b9feecfd797589c432334ae32", + "id": "trend_following/0183_0165_alligator_simple_v1_0", + "metadata": { + "category": "trend_following", + "jsonl_record": 947, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3370c1eca305c2cd5899173f2c082f0171cc340ca2eb89c83960b2db3b0f31aa", + "id": "trend_following/0184_0175_probe", + "metadata": { + "category": "trend_following", + "jsonl_record": 948, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dba5cf1c90046d879e396563b4dc459975431cc5143aaa58a536cc3cd97c4e20", + "id": "trend_following/0185_0189_constituents_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 949, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c1c6969b3d13664d24625f8847f8654f1d33e05c134587efe2432e9b3da25c3c", + "id": "trend_following/0186_0193_ao_executor", + "metadata": { + "category": "trend_following", + "jsonl_record": 950, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1c125b980d29eb2f1a24928bf71e116d0c7187cc6a68638abfa857a7001cf5da", + "id": "trend_following/0187_0199_glamtrader", + "metadata": { + "category": "trend_following", + "jsonl_record": 951, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5707e5d029d1f718008e406d1966f405cd86e329ba612c2bca8e3aa5f9989164", + "id": "trend_following/0188_0239_bars_alligator", + "metadata": { + "category": "trend_following", + "jsonl_record": 952, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bc93cd073f91a193e2edae0f482920ca3cd903647fb6e15e8538c3e33e12eb6f", + "id": "trend_following/0189_0244_gordago_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 953, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "629848849aae3b3323e7e5bf7dc4c7ae925fec5b593706c6bab536ae8d7a6190", + "id": "trend_following/0190_0263_neuronirvamanea_2", + "metadata": { + "category": "trend_following", + "jsonl_record": 954, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d029f5b6b0a594ebfb039fbe160b877df935e8124483e28fcb8898d781ef4ff0", + "id": "trend_following/0191_0272_ketty", + "metadata": { + "category": "trend_following", + "jsonl_record": 955, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fb33ac9b7d387557dc3eafd51f66333178c28e9369bd428d87f17d995c11645d", + "id": "trend_following/0192_0305_zigzag_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 956, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "75ab8bc19426cd22cfeca3a07e62fd548f3dcfac9e05df2b5d07ec637347cf4d", + "id": "trend_following/0193_0395_expotest", + "metadata": { + "category": "trend_following", + "jsonl_record": 957, + "mapping_status": "package_only" + }, + "source": "package_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "358d3c1da5a34bc27b057df3e653ebafd1f3fbb0b4a798c4336c24490dc21354", + "id": "trend_following/0194_0417_fx_chaos_scalp", + "metadata": { + "category": "trend_following", + "jsonl_record": 958, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8085e50245f66dc854c5c4233181a755d9c6a63fc188f048d34854b008961fab", + "id": "trend_following/0195_0454_macd_simple_reshetov", + "metadata": { + "category": "trend_following", + "jsonl_record": 959, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "093cba606c760d8eee1c276e67a301dfba3f88f536efda9f0a4231f7c2772b27", + "id": "trend_following/0196_0455_umnick_trader", + "metadata": { + "category": "trend_following", + "jsonl_record": 960, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d9d5065bd261b1fbc83d8be326d08ee572aed73072516de7899e148045875a3e", + "id": "trend_following/0197_0479_arrows_and_curves_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 961, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "84dc2186290287c5270497d07435844637a77a052e0c75065d6b400e17bb780d", + "id": "trend_following/0198_0494_sar_trading_v2_0", + "metadata": { + "category": "trend_following", + "jsonl_record": 962, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c38d818b77ff579133c1fb80b013a1f97e47bd9b0b6df928e55133a9ba1555ea", + "id": "trend_following/0199_0497_ma_shift_puria_method", + "metadata": { + "category": "trend_following", + "jsonl_record": 963, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "34ae3dfe38a76d04fceded6a3027c807d9b0c75d3a69a99d880bb366fc4d6476", + "id": "trend_following/0200_0498_momo_trades", + "metadata": { + "category": "trend_following", + "jsonl_record": 964, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "22c1d5bff4675c167ecba1df66f7abedcba9c2df6cc5459f2016e53da3259387", + "id": "trend_following/0201_0499_ichimok2005", + "metadata": { + "category": "trend_following", + "jsonl_record": 965, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fa4e15aeb3cf016e89485780bc9e4ffa5640272971e7dd93deb8a5fdf27c2fe1", + "id": "trend_following/0202_0509_beergodea", + "metadata": { + "category": "trend_following", + "jsonl_record": 966, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ba8ba584d8b0025f68d3843e4f1eb89ad1eafdd6a4f4959ed7a254c2c75e37ec", + "id": "trend_following/0203_0525_osmaster_v0", + "metadata": { + "category": "trend_following", + "jsonl_record": 967, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ae6b453bc24ac8788b5b9a7dd814f0c4120f03b7bdfaae330064e4819ed1ebf5", + "id": "trend_following/0204_0528_js_chaos", + "metadata": { + "category": "trend_following", + "jsonl_record": 968, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9ddb422c7ae1e359b2d956b131cd165fcda2f100021a0ce9b2dab88c900b2901", + "id": "trend_following/0205_0532_disaster", + "metadata": { + "category": "trend_following", + "jsonl_record": 969, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2efa30fcfa415227d9050a1c8b362a61a7e6c645b58b82de4dff9d674f56c6ae", + "id": "trend_following/0206_0533_mamacd", + "metadata": { + "category": "trend_following", + "jsonl_record": 970, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "027a7d0d55b0993e752bc3cc612508f6fa6f6246872bcafc96fde10ea880856a", + "id": "trend_following/0207_0536_nova", + "metadata": { + "category": "trend_following", + "jsonl_record": 971, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2982f58965cce26753f1435bee1f78382926332ccb35b71f6bbd608046aa76a0", + "id": "trend_following/0208_0539_alligator", + "metadata": { + "category": "trend_following", + "jsonl_record": 972, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "860adfcf97789cbab383d41e11fd2e9d0235b305c4ccc807c1245f308cb1c702", + "id": "trend_following/0209_0542_vortex_indicator_system", + "metadata": { + "category": "trend_following", + "jsonl_record": 973, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4646b05eef67f5fac1c1cd9173fbb53fa5a0c04070c689b3edc4e3ce9aa4e697", + "id": "trend_following/0210_0545_mt45", + "metadata": { + "category": "trend_following", + "jsonl_record": 974, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d6368147eebde9b9dd8d718d41ca62e4009cc2ebc71d0f7683d5bdcc3c207cdf", + "id": "trend_following/0211_0551_burg_extrapolator", + "metadata": { + "category": "trend_following", + "jsonl_record": 975, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e8e11db84d8bd88c7ccd32e43cfc62e82a612f3a2bcec596728c63eb5b040b73", + "id": "trend_following/0212_0554_up3x1_investor", + "metadata": { + "category": "trend_following", + "jsonl_record": 976, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3f0c7ba90770a808cec4b46fe29fd8adbebbff723f9da88e35bccb9f2fecc2a1", + "id": "trend_following/0213_0558_nevalyashka", + "metadata": { + "category": "trend_following", + "jsonl_record": 977, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e8d9e186323af0ec4e1b6a933cf04587738c90d964852b325201f7f8b106c53d", + "id": "trend_following/0214_0582_intersection_2_ima", + "metadata": { + "category": "trend_following", + "jsonl_record": 978, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2709772a644b22400730cf117051043c738b11676e68c7a87d3886efa31fced0", + "id": "trend_following/0215_0589_vlt_trader", + "metadata": { + "category": "trend_following", + "jsonl_record": 979, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8cb0c8de1d43a6320048eb0a26886d68fd0b58984ae3056238031fe242a286e3", + "id": "trend_following/0216_0596_pipso", + "metadata": { + "category": "trend_following", + "jsonl_record": 980, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fdef58f0f76a2af7ba8e28b130606eef59c248b72a55f24fb25283a7acc3684f", + "id": "trend_following/0217_0601_cheduecoglioni", + "metadata": { + "category": "trend_following", + "jsonl_record": 981, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "94078f95adb37921fa1973cac40e450637d7660b89164a631caef600b2ea2cc6", + "id": "trend_following/0218_0611_morse_code", + "metadata": { + "category": "trend_following", + "jsonl_record": 982, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9ba6a92944995b04e5d446449c34e2bda75afd1d9ddc155a16549b0811d2efa7", + "id": "trend_following/0219_0625_nup1down", + "metadata": { + "category": "trend_following", + "jsonl_record": 983, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "016f53484a5f7061a1824e95c083b8830e199bcb8158c2efb303692e3ff956c0", + "id": "trend_following/0220_0645_t3ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 984, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e0e129cd87d9aad3fe890223f92fe209e00abc3053b1490850899fca4210f4cf", + "id": "trend_following/0221_0651_e_turbofx", + "metadata": { + "category": "trend_following", + "jsonl_record": 985, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0f75e08c7ea71394d51f3afbad0ba5b3361ffbb82dfcdd9da9d7943571442efb", + "id": "trend_following/0222_0657_simpletrade", + "metadata": { + "category": "trend_following", + "jsonl_record": 986, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "45f66b8e0aae3406457652d83931a5342de51d172b3512f18c76bccfbde18869", + "id": "trend_following/0223_0659_big_dog", + "metadata": { + "category": "trend_following", + "jsonl_record": 987, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3aacfb4d893a866c25f59c2a72f95025af14395d39c96d6534271ce3486549ac", + "id": "trend_following/0224_0660_autotrade", + "metadata": { + "category": "trend_following", + "jsonl_record": 988, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0a9277ea1bc31d2536401243671fa2d1bcb870c832b3b4d3cdf26967a5baac7a", + "id": "trend_following/0225_0661_2ma_4level", + "metadata": { + "category": "trend_following", + "jsonl_record": 989, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2aa2e7aaa1c88e42899b89c5754f9f9605c36a7bdbc16a4360f1efee0cabea1", + "id": "trend_following/0226_0663_gazonkos", + "metadata": { + "category": "trend_following", + "jsonl_record": 990, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "df367c4d3754c69f70af3c86ab5bdaab72c13b2ff614b4103fb41eee210be177", + "id": "trend_following/0227_0665_forex_profit", + "metadata": { + "category": "trend_following", + "jsonl_record": 991, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a0db9c06f3c26285bdf841129979990528f35e9a829c19800c7f571871d9df8d", + "id": "trend_following/0228_0675_macd_signal", + "metadata": { + "category": "trend_following", + "jsonl_record": 992, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1f462fec58eeea2f552cb55a723d6207c47fa71babbb7ad21e7ff72e01e52b0a", + "id": "trend_following/0229_0689_backbone", + "metadata": { + "category": "trend_following", + "jsonl_record": 993, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ae8be447a679d45e1d8637c9f6f2985cd625852ef4ed68767ebd9dd2f0a410a3", + "id": "trend_following/0230_0701_mare5_1", + "metadata": { + "category": "trend_following", + "jsonl_record": 994, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f589174abe375ee8e527a03bb6198c05c890e39215bbca746069a67719eb7ad3", + "id": "trend_following/0231_0702_simple_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 995, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "234f19412a14ae810bb997075735fc7bf45c0f55e2d9798b2ad29fbb22136b0a", + "id": "trend_following/0232_0703_tdsglobal", + "metadata": { + "category": "trend_following", + "jsonl_record": 996, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2812522831a08f0d4f4a5a5168e6251eae6d83f2dca0c077da4fabf84276af9e", + "id": "trend_following/0233_0708_robot_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 997, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "801b1bda63c6a9a24db8195e89ccfcdf8fa0f7355a09b4fc1059da6e5eb2dc26", + "id": "trend_following/0234_0710_up3x1", + "metadata": { + "category": "trend_following", + "jsonl_record": 998, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b6f8798b13f11c8b9514f6930d110fedc2a1a5efdf44b1886599227a0374dfda", + "id": "trend_following/0235_0711_bull_vs_medved", + "metadata": { + "category": "trend_following", + "jsonl_record": 999, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e1cafa59e4277b0dc685d5f25afa811b298129fed65b42059022539b610a351e", + "id": "trend_following/0236_0712_up3x1_premium_v2m", + "metadata": { + "category": "trend_following", + "jsonl_record": 1000, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e0dcf16289c68cfed78413ade9fe340be9f0b7098620fbfd0af5cde636c609ad", + "id": "trend_following/0237_0724_ride_alligator", + "metadata": { + "category": "trend_following", + "jsonl_record": 1001, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b083ad387f1eb5b17b18e7d8fc0b19706cab8146e3be3d7f3fae6c7aaa14214b", + "id": "trend_following/0238_0740_adx_system", + "metadata": { + "category": "trend_following", + "jsonl_record": 1002, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "558a2cb220c85e21698130791b03ec0b45355dd8dc167937b9de0cdddc4806bb", + "id": "trend_following/0239_0742_prophet", + "metadata": { + "category": "trend_following", + "jsonl_record": 1003, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0f7912dcddddcd37e1262d119e1fc5d925c95219fc12ad39094d7022a7030efb", + "id": "trend_following/0240_0746_escape", + "metadata": { + "category": "trend_following", + "jsonl_record": 1004, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ba1ffc57438cd2cb3292cc8acdb0df4999048e9a705766345d78f68a99e77147", + "id": "trend_following/0241_0756_go", + "metadata": { + "category": "trend_following", + "jsonl_record": 1005, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2e032c004545818fce0b60ab0dacbc9518b68aae3880f99fbf52df3871afb892", + "id": "trend_following/0242_0757_expert_macd_eurusd_1_hour", + "metadata": { + "category": "trend_following", + "jsonl_record": 1006, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a373e69edbd25be985d243238cc0c2b081ed366d487e5db535fb8068890e3aff", + "id": "trend_following/0243_0799_e_regr", + "metadata": { + "category": "trend_following", + "jsonl_record": 1007, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "37e34ab31c5a9c6faf05c0908532013e23fe46ca6855dbabc93c9b3987c0606f", + "id": "trend_following/0244_0800_20_200_ants", + "metadata": { + "category": "trend_following", + "jsonl_record": 1008, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "56414c5a4aef86be498f76b6f18ed01f0ba75d92350e5a2966553d37697da433", + "id": "trend_following/0245_0808_trigger_line", + "metadata": { + "category": "trend_following", + "jsonl_record": 1009, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "add8dbd5e86f782f130c7bb6582f599422534d44434c60ce93c5496c7069cdfd", + "id": "trend_following/0246_0816_i4_drf_v3", + "metadata": { + "category": "trend_following", + "jsonl_record": 1010, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1dd444fcdb87c7d81ac5f6eae1e11a37d164761baf82f776c503ed091bfc0c3d", + "id": "trend_following/0247_0819_i4_drf_v2", + "metadata": { + "category": "trend_following", + "jsonl_record": 1011, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b54e1df33d304bcac4336684ed1879281b577b52978aadf1ab2fa92771a002cf", + "id": "trend_following/0248_0851_aroon_oscillator_sign_alert", + "metadata": { + "category": "trend_following", + "jsonl_record": 1012, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0ecf13e4655fe5b94cd832f30d91de456f02298fa9e1cc9aab530c5ccd0af338", + "id": "trend_following/0249_0852_adxdmi", + "metadata": { + "category": "trend_following", + "jsonl_record": 1013, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f1822f6df461605f41a7661e89af3bc58b4980e8ed8ea047147ed6fdc65a6bad", + "id": "trend_following/0250_0862_bsi", + "metadata": { + "category": "trend_following", + "jsonl_record": 1014, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dd8f2230194b3cc64062c39c794892fb3778eaefa39d49b202f98ce79f9d8549", + "id": "trend_following/0251_0872_frasmav2", + "metadata": { + "category": "trend_following", + "jsonl_record": 1015, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5821438aa24ae3d4bb0b459697748db2ebc60e33278c02d4071702fd1e04e5a7", + "id": "trend_following/0252_0894_aroonhornsign", + "metadata": { + "category": "trend_following", + "jsonl_record": 1016, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8b855ea331453765ed8e6b669f179188de54c149fc9d561bb782d2224fe0282e", + "id": "trend_following/0253_0903_nrtr_extr", + "metadata": { + "category": "trend_following", + "jsonl_record": 1017, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "52e9c3932c676f7b67aaffea64358a636b516efe58afcee3d5d9ccac63ee456b", + "id": "trend_following/0254_0904_nrtr", + "metadata": { + "category": "trend_following", + "jsonl_record": 1018, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bb218e16ca14f0886c471694138b264409be5fd5ea98210d1d61ed1b4b5c4d74", + "id": "trend_following/0255_0914_nonlagdot", + "metadata": { + "category": "trend_following", + "jsonl_record": 1019, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ba4f95bc6e67d7918ec9cb1090a2fce7e5d738f3b778277e29314e6017e8b287", + "id": "trend_following/0256_1043_forexprofitboost_2nb", + "metadata": { + "category": "trend_following", + "jsonl_record": 1020, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "430c343e36ceca4fa02ad91850add42ab5cdd9d9e5cc05d6d29961a75f3320b8", + "id": "trend_following/0257_1047_simple_trading_system", + "metadata": { + "category": "trend_following", + "jsonl_record": 1021, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dcca5911690fe970d0839c07f8fef455b400cf40d277f223ae7e8317deef0ac0", + "id": "trend_following/0258_1048_fatl_satl_osma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1022, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a5c7d50bd8e7bf276fef2ad682d55dee55d76090f2b596fa39d0006d6ad0c65c", + "id": "trend_following/0259_1051_modified_optimum_elliptic_filter", + "metadata": { + "category": "trend_following", + "jsonl_record": 1023, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "175c12ec865b460a60c16641b926c61200bf525eadf831cc3f186ce74c7fede7", + "id": "trend_following/0260_1053_ozymandias", + "metadata": { + "category": "trend_following", + "jsonl_record": 1024, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "65ab79716cbfd1b7f4346bb7c154f622b902e42278eaca18189c5e606480a144", + "id": "trend_following/0261_1064_ma_by_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1025, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f4571e288f3a3f8e9d5845d7ac49611c60178d4f93b75ff39a071a0d17bca114", + "id": "trend_following/0262_1066_slope_direction_line", + "metadata": { + "category": "trend_following", + "jsonl_record": 1026, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "01eac3b6c844c495a98bf8f022c620daf139cdba5f1322b1fcad974e0266ae2d", + "id": "trend_following/0263_1067_karpenko", + "metadata": { + "category": "trend_following", + "jsonl_record": 1027, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "57d7f254a00c20f3217eb7276fcce395fb5c4dcabaebabca7ca2cd7ca097f3ca", + "id": "trend_following/0264_1075_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1028, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bb0a0df9bfe9c74d02b84f122b0d43ea4928ec9153ce84ad7371cfa0c891ff87", + "id": "trend_following/0265_1079_bvsb", + "metadata": { + "category": "trend_following", + "jsonl_record": 1029, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5acd811c029f001e74fd4d4f5925234675872d6112b58a2d8d175eaea1b32f5c", + "id": "trend_following/0266_1080_bnb", + "metadata": { + "category": "trend_following", + "jsonl_record": 1030, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "65adb1719c1d7e06c3ae7c0b7393ee16704a067e75622ebef348c2998cfd2db5", + "id": "trend_following/0267_1082_tsi_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 1031, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "319e5e13a947958e1271d19d99adb978d35ea7d5fd8a1eeafcdbfd4dea686692", + "id": "trend_following/0268_1084_wlx_bwwiseman_2", + "metadata": { + "category": "trend_following", + "jsonl_record": 1032, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "737f9a8447bca4a1caf507c1f63ef8468b4c31b88d9dc98baebbba6ca27a52c9", + "id": "trend_following/0269_1088_cronexao", + "metadata": { + "category": "trend_following", + "jsonl_record": 1033, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0af92ca4fd8bc7f8cbc660911846a6a08020537d0d87b0d9a358a5767c34ef43", + "id": "trend_following/0270_1091_highs_lows_signal", + "metadata": { + "category": "trend_following", + "jsonl_record": 1034, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "daa26b936815c5c5ba3b349f11bc80ce8b92b5f4aa710a4133e77326533f07e8", + "id": "trend_following/0271_1094_afirma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1035, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "23623e36e0e7506dac0d23562642fe4b9bed4457f91e2ac3509b4fa4338b6cb9", + "id": "trend_following/0272_1096_xd_rangeswitch", + "metadata": { + "category": "trend_following", + "jsonl_record": 1036, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "19d2c4cfc48199a2aae006893b6f8518ef0eac9e3a5e36fae2505b029f2f3cb7", + "id": "trend_following/0273_1099_simple_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 1037, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5937239120e9ba1221736c4cf3d6d5e98d31c871e6a1ed45a91a4caad6ee37b4", + "id": "trend_following/0274_1102_bw_wiseman_1", + "metadata": { + "category": "trend_following", + "jsonl_record": 1038, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c7d234d691b85ae1c650f890a0b9df57efba825b7ce77d1e316122fbc84f8bcb", + "id": "trend_following/0275_1104_digital_macd", + "metadata": { + "category": "trend_following", + "jsonl_record": 1039, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0ba7e51fc204d353c14dfada7de4e2ecf620c2567935fc68435d8fcb87742902", + "id": "trend_following/0276_1106_t3_trix", + "metadata": { + "category": "trend_following", + "jsonl_record": 1040, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e3f623cac4aec4d06234a3e6ce37dca39dea0616d29bf3611497ef88e35a9ff4", + "id": "trend_following/0277_1110_cs2011", + "metadata": { + "category": "trend_following", + "jsonl_record": 1041, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "64cd852958ab5e2d3734fa8c04b78903e6e8e7a073a0d1202ed617e7c72ca003", + "id": "trend_following/0278_1122_irea", + "metadata": { + "category": "trend_following", + "jsonl_record": 1042, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5672d5200d1c44cf715c64ede64aac5fd82fa973cd188b1cb538d8d38e53ea23", + "id": "trend_following/0279_1137_jpalonso_modoki", + "metadata": { + "category": "trend_following", + "jsonl_record": 1043, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "51107d52b9ea965194ccec7dc371f10bc1e94e039cbd5f686789942f39fa0950", + "id": "trend_following/0280_1142_smatf", + "metadata": { + "category": "trend_following", + "jsonl_record": 1044, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5c77d8c8068429777f6dcf4c18437abcafb82d243de20398ba931c2322a832db", + "id": "trend_following/0281_1144_20_200_expert_v4_2_ants", + "metadata": { + "category": "trend_following", + "jsonl_record": 1045, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ef1b003108867cd5f1c3e0d8b7f7988ca486382d18d1fb960590e2c07e69cfd0", + "id": "trend_following/0282_1152_go", + "metadata": { + "category": "trend_following", + "jsonl_record": 1046, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c881597fff328789b41cbf009e2f639895e4c8a4a2e034d46244dd2e547abeed", + "id": "trend_following/0283_1153_e_turbofx", + "metadata": { + "category": "trend_following", + "jsonl_record": 1047, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "899762eb1e9beb2daf15dd0f70991e8c3c13d738d7e3e01cd8ceb2a91d496dce", + "id": "trend_following/0284_1157_she_kanskigor", + "metadata": { + "category": "trend_following", + "jsonl_record": 1048, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b5845264e196a64dd64aa95a2f17a58da69ab9d5f710a845517055736cb1500f", + "id": "trend_following/0285_1171_jolly_roger", + "metadata": { + "category": "trend_following", + "jsonl_record": 1049, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d852aefc026f9c09dcbf0f044ac6de2af186a4c60020a7371d278e4a7fc0ee8b", + "id": "trend_following/0286_1186_20_200_pips", + "metadata": { + "category": "trend_following", + "jsonl_record": 1050, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "09c660130f287bd2c8ffa741e24d99a7c9a709c44a979e442296bf44267ca38c", + "id": "trend_following/0287_1186_20_200_simple", + "metadata": { + "category": "trend_following", + "jsonl_record": 1051, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "15e5bdef2af41fcd53ef700f956966290a986e6cfa187cbf1b4551aceda3e040", + "id": "trend_following/0288_1199_index_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1052, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "68de71b4809dece983bf5fb57d7e20fc5172e177d1fd367fc2e69420aba4dc43", + "id": "trend_following/0289_1203_simple_ma_adx", + "metadata": { + "category": "trend_following", + "jsonl_record": 1053, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "45e16262c7102c04b5341c34e6683d751f32807063477fc0753465093088b5ae", + "id": "trend_following/0290_1205_simple_ma_ea", + "metadata": { + "category": "trend_following", + "jsonl_record": 1054, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "91804042dde383fe474ae04cbdf2d8e9285f343f02f2a5a0a9bed16a22f8afbd", + "id": "trend_following/0291_1209_figurelli_series", + "metadata": { + "category": "trend_following", + "jsonl_record": 1055, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "342435269c33e5e341165ceb6aed6f28ee408f1c347c0186629f67917f0b228a", + "id": "trend_following/0292_1214_tma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1056, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "59faf8b0aaebf12b7c6e7f07b2ce0639178195f2846b72b59126e9a83945f273", + "id": "trend_following/0293_1216_beginner", + "metadata": { + "category": "trend_following", + "jsonl_record": 1057, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f49d869c74e7b5aded6b68ec991a6dd1f5cab59eaa153eeb60e1ad7756e9f397", + "id": "trend_following/0294_1218_stepsto_v1", + "metadata": { + "category": "trend_following", + "jsonl_record": 1058, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7dd91ecac58674ac87b83222faad31a076e4709370a0fb8a81c7836c0888c692", + "id": "trend_following/0295_1223_color_metro", + "metadata": { + "category": "trend_following", + "jsonl_record": 1059, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "08f0f905c9e3454684def95d05b67999c750757972d312b4283760787b840a7f", + "id": "trend_following/0296_1230_macd_xtr", + "metadata": { + "category": "trend_following", + "jsonl_record": 1060, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ffe17c78a5257179cfdc5769f641d3f6e6c3b253d9695f3166326371724dbd49", + "id": "trend_following/0297_1233_mama", + "metadata": { + "category": "trend_following", + "jsonl_record": 1061, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d3b9f600443c6c3c2f569428c98dba7240a56ecd4930e53412fc55472389fef8", + "id": "trend_following/0298_1235_oracle", + "metadata": { + "category": "trend_following", + "jsonl_record": 1062, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "008e4005eb174733784e7ecd91335ceebd21a56927e80025357a3d4c9bd15ad3", + "id": "trend_following/0299_1237_2pb_ideal_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1063, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c140bbcaf5469982b0b8f5a19e2134cae3c96964684c224a0d27e549acecbbd1", + "id": "trend_following/0300_1238_coeffofline_true", + "metadata": { + "category": "trend_following", + "jsonl_record": 1064, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2de526ecf2bfd0b91eb47485857eb7d1b25f1f5e1f0130e7768c86f83030d899", + "id": "trend_following/0301_1241_buysell", + "metadata": { + "category": "trend_following", + "jsonl_record": 1065, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f594b44c0635f047ceb672f9320da1b3f87d6dc44aa35981e00f2562b7072957", + "id": "trend_following/0302_1242_bulls_bears_eyes", + "metadata": { + "category": "trend_following", + "jsonl_record": 1066, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "22c52fcb9b1d380d6fedc2e14514c57e03ca580fec25a2132eef864d10559b6b", + "id": "trend_following/0303_1243_bezier", + "metadata": { + "category": "trend_following", + "jsonl_record": 1067, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ea30f19370b724e2bbc2bb6ec98a896c8beeb6abb56ea1740c4ffa960b34feeb", + "id": "trend_following/0304_1245_3parabolic", + "metadata": { + "category": "trend_following", + "jsonl_record": 1068, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6603ca7e9c9a6da4a3b83b50875a2a34e6a66fde4756299ae12f9ac3c77d9166", + "id": "trend_following/0305_1246_aroon_signal", + "metadata": { + "category": "trend_following", + "jsonl_record": 1069, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c78c8a5cf946ddb7cc7fc8a8b92d56b4b1d580afe1dca0420775a8d9e96fa631", + "id": "trend_following/0306_1247_amka", + "metadata": { + "category": "trend_following", + "jsonl_record": 1070, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a173897114905c43aeeffcda29bddb4e87f721349a7483cca7309ddd558e22a5", + "id": "trend_following/0307_1249_arrows_curves", + "metadata": { + "category": "trend_following", + "jsonl_record": 1071, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1549b1e03f9486c9d069ed339ebf5725e08b30d6e251e469b036e0e46481cc68", + "id": "trend_following/0308_1253_brake_exp", + "metadata": { + "category": "trend_following", + "jsonl_record": 1072, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f8d5ccc6bee7b671dbdca5904fb79c222086b0421a91b0842cd00fa1e5015191", + "id": "trend_following/0309_1254_brake_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1073, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5e8803e1417334b741c877ed1fc02a4c4225d3d5d1c21565846788e35f0dfa0b", + "id": "trend_following/0310_1258_brakeparb", + "metadata": { + "category": "trend_following", + "jsonl_record": 1074, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7b09da7245a9b7e239cdcef29b1ed5700d3be50416835f44df0f61ced0fef5e7", + "id": "trend_following/0311_1259_muv_nordiff_cloud", + "metadata": { + "category": "trend_following", + "jsonl_record": 1075, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "0797020c7806feb57a018187fc41b715a0d7b6626a24959181f40ef097c9038c", + "id": "trend_following/0312_1260_color3rdgenxma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1076, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1a285a588e87b4523e61f9eb91daa76f512c40ddacef7d349529be6f975a01a0", + "id": "trend_following/0313_1262_f2a_ao", + "metadata": { + "category": "trend_following", + "jsonl_record": 1077, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "965881c07c2769b33ca4b6b28c6f5f16020c7264c08cbdf9f506e7c403afd745", + "id": "trend_following/0314_1264_jmaslope", + "metadata": { + "category": "trend_following", + "jsonl_record": 1078, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "9e32d1f64b57bbbc48c493ab39096a106fc10381c40f089f12ac9b90727c9bbc", + "id": "trend_following/0315_1270_colorxadx", + "metadata": { + "category": "trend_following", + "jsonl_record": 1079, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b68f1d0740698e46813cf6b1b95e6f19890a3e0def17ddb0bdea820a885ce8ce", + "id": "trend_following/0316_1277_colorjvariation", + "metadata": { + "category": "trend_following", + "jsonl_record": 1080, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f4cb9f9159f926777cde890d963a38450a969b7292234407a64e732a790324c9", + "id": "trend_following/0317_1280_3xma_ishimoku", + "metadata": { + "category": "trend_following", + "jsonl_record": 1081, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ff94116789fbff6e65703c6d7d648803a61731ee3d402ea18732e5a123eea1d6", + "id": "trend_following/0318_1287_linear_reg_slope_v2", + "metadata": { + "category": "trend_following", + "jsonl_record": 1082, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5f4fe079718be419b3f3e85ebfe413c0296366347ee7c0758092a4182d6967be", + "id": "trend_following/0319_1289_zpf", + "metadata": { + "category": "trend_following", + "jsonl_record": 1083, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7d7ceb51952f5d959938f45cd0f390ef92db28b6b59eaa34bfcde28cf82c14e2", + "id": "trend_following/0320_1290_rmacd", + "metadata": { + "category": "trend_following", + "jsonl_record": 1084, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7688fc46bfb77fd1e510efea74f662edee1ba962cabac5b650b63c0e658ea251", + "id": "trend_following/0321_1291_ma_parabolic", + "metadata": { + "category": "trend_following", + "jsonl_record": 1085, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5b3b30cb731ff6177abe529ec023a1366712bd89a5a08894393d19b74c16859a", + "id": "trend_following/0322_1294_2pb_ideal_xosma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1086, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6fe1c0faf40bdf3a7e2a499b2c0caeb2a641d20dd62390c43620d97a396f4758", + "id": "trend_following/0323_1297_bulls_bears", + "metadata": { + "category": "trend_following", + "jsonl_record": 1087, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7cdcdfdf12f80ffb04ac4fd8389fc424f5c0a8714e922c2259f0d350fd0de50d", + "id": "trend_following/0324_1298_xmacd", + "metadata": { + "category": "trend_following", + "jsonl_record": 1088, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ace90b07f3fc6b2f6f1626549255d7bf0df2da9ae012d91e0a84bc5443cc2b0e", + "id": "trend_following/0325_1330_three_ema", + "metadata": { + "category": "trend_following", + "jsonl_record": 1089, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "bd186bbb022e00e35927bd0ba44d1ec2abc5ed6f38af69e0f48bfdf52723d54e", + "id": "trend_following/03_two_ma", + "metadata": { + "category": "trend_following", + "jsonl_record": 1090, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "80f02fa3d891f8ed5b933102d6ad6e9fe3081e1bdba42ab04d01b12339a42951", + "id": "trend_following/06_macd_ema_fase_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1091, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8c8911d9f51921bb4b37b109dd798bb6768ae02d7f05e3b4f11029df0f01d102", + "id": "trend_following/07_macd_ema_true_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1092, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e677fb62443ddefe7f1a126c3fbab86f304323a307a385aa37cf16ca9381ba09", + "id": "trend_following/116_triple_ema_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1093, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5eb13fa3b16f85ec396fb63513565351bbc58780e0bf99eb82638b2e63e339b6", + "id": "trend_following/15_fenshi_ma_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1094, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4fa321e859e56198584264899eaf58e0333b150d25da51c853e2d7750739a9ca", + "id": "trend_following/30_macd_kdj_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1095, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d9dd24f06ba124217ff914a30d739841b18ae68f016f344a05110a4b50707a02", + "id": "trend_following/34_turtle_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1096, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2daeb48bc28bddba8e658d3567c8d0ad24b5cc15f4fbb085df1805ffce1e370d", + "id": "trend_following/35_sma_cross_signal_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1097, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a59622dcc4588320513df71f970332a1edfba99d21c6920e329d3c51fb1e9bc5", + "id": "trend_following/72_triple_cross_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1098, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a12fd665cab1d5ea82f06745a137b3f379dfba10931447cf2e42496aa913f2aa", + "id": "trend_following/75_extended_cross_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1099, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "fa5cbbc92104efcbd72f909e47ea1ab442b803d5fbfb9b767f61e4f0e943d239", + "id": "trend_following/86_sunrise_ema_crossover_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1100, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a2955943ab2a19e16eb44a4c88bb319cdf8789044aa51b1d420fd4a39bb1769b", + "id": "trend_following/87_hma_crossover_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1101, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "8cf17a0aa308fa23699df8340b59d9bcf2d4dc33a5ddd936f4f18de61a2c042c", + "id": "trend_following/90_forex_ema_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1102, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dcbb9c94c7e0a537f11bfc12b78cf8276407dd6dc872f08af2c73c06502017d4", + "id": "trend_following/91_hma_multitrend_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1103, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "dda82aecd67baeda9de23c9d759ad41f2506b082e4b8df43eb12f3bea6549fdf", + "id": "trend_following/93_macd_dmi_simple_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1104, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "1abd662dd57d8230d5c8afced92b0571eaee87067a2c7fd2a9506d921dc05f40", + "id": "trend_following/96_ichimoku_cloud_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1105, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f9e44959a29e9b277b58222da1b8703a311ba0a7cccaa1766e33d4309f7ee695", + "id": "trend_following/98_dema_crossover_strategy", + "metadata": { + "category": "trend_following", + "jsonl_record": 1106, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5410c4302845a9a67e9500984689eea9600dfbcb4d85883a60e2e791b0922d62", + "id": "volatility/08_kelter_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1107, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ffcd99e2d607e238a209104cb4f7eed299a67090511cf9f882f1e2c54b67c9ec", + "id": "volatility/108_keltner_channel_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1108, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d2306a1d013d28bafed9259eeddd5c13916f0431a084d75af8bb89d82f110112", + "id": "volatility/111_chandelier_exit_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1109, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a6d717812b138c4aeabe68fccffc7c9ea4b99be36984e406164ae7826160912d", + "id": "volatility/114_supertrend_rsi_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1110, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d59c466374a7eb1c8e7bf53175edd8d16a40051f0b787ef4ffe367287f97624f", + "id": "volatility/36_macd_atr_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1111, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "70276772a05e2fb7050381675537ff88efdc1b909b0359c30dad63712094a22f", + "id": "volatility/70_keltner_channel_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1112, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "2ab8700f6cc6013c3a0a09bfe0a75278a9950d98d135a5ad98cc32978c8e7ab0", + "id": "volatility/81_supertrend_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1113, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b4a48112d3c2305ae52d0eb0b55f0d74cdf8b8e974438a8399a25aab39d91ded", + "id": "volatility/88_supertrend_indicator_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1114, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "aa8075f1f5deeb1ad2f14e9f9a3f9137d27990dd7110e5423e5bc5039509db9b", + "id": "volatility/89_adaptive_supertrend_strategy", + "metadata": { + "category": "volatility", + "jsonl_record": 1115, + "mapping_status": "functional_only" + }, + "source": "functional_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "101d15b929ff3c8b0b4e593f7ec2a991ebb8aa2bb5935bee3e3dd8ae70354cdd", + "id": "volatility_systems/0001_0021_gold_paired_switching", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1116, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "ff662d0fa45a19479e89b3f06281a72b063eabe9cf613bfe1a77be4e183b2bea", + "id": "volatility_systems/0002_0022_gold_self_similarity_regime", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1117, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e0124ef1265c0ab9927c8843fb6fd1d6af2912439965f027cd54126fbb7bc641", + "id": "volatility_systems/0003_0025_gold_paired_switching", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1118, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "278d8b56d52af312237eedbe960dd6b9e1592a052244a1e1491fb5c76141b7a7", + "id": "volatility_systems/0004_0032_gold_regime_filter", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1119, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "59594c7e6f7d489d4c461397837d96f02e4cb2cf5f27d0ed6a6d23e16cadb214", + "id": "volatility_systems/0005_0053_gold_volatility_position", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1120, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5645e778af9154366d8be334affaccd3995444686aac61bc9e6e68e249e59697", + "id": "volatility_systems/0006_0073_high_volatility_reap_policy", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1121, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3a68a0aa04b698b450161277c29a04bc536d2db3342b79850630d7e18bb1b54b", + "id": "volatility_systems/0007_0125_hmm_regime_detection", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1122, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "931880bd70e042439e5b734dd90c04697a533f9363c7e1ce23419a58a57519d9", + "id": "volatility_systems/0008_0144_volatility_correlation_model", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1123, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "cf8dc1893c5ce2f8ba5115b1c27c1b219b1c3a548474b0fabb5d0771fcdaf643", + "id": "volatility_systems/0009_0192_regime_switching_modeling", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1124, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "4467e5169bfadf815d3b2fb99200d7b88cd64cbea10cc5716361a457ff5b8a06", + "id": "volatility_systems/0010_0206_volatility_long_memory", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1125, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "eceeb9166c70304c4a58aa1f114a74a1bc1b6895bf825d8a83fb522cd7322cb2", + "id": "volatility_systems/0011_0285_vix_spx_divergence", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1126, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "39ddf6cc141d1abfa8548d15d8c1a7a35d529ef68a19a138116105475213ff46", + "id": "volatility_systems/0012_0302_adaptive_vix_ma", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1127, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d400b4e317f4df6e30a53597ed3c7e1963db35612e7e0eb4caa955c9bef50f4f", + "id": "volatility_systems/0013_0320_vix_futures_basis", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1128, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "86f7fc998bbbe9d523df3131dafdd08e3d8bea0b7f9967be2c0cb49cfb7d5a3d", + "id": "volatility_systems/0014_0327_volatility_hedge_fund", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1129, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3ebebecde6d709f9341b9628ab6667ad8a79ad982ef733e0492c4821cba17e01", + "id": "volatility_systems/0015_0374_correlation_regime_strategy", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1130, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "abee634298b998cfac0dcbef35738457d1ec5d1b8b4afec4d0cfc1d68db8a619", + "id": "volatility_systems/0016_0411_hmm_random_forest_strategy", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1131, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6b71dfa1d53cac08662e92726609177795dd00fc27c1336b1d9845201986bb2b", + "id": "volatility_systems/0017_colorschaffdemarkertrendcycle", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1132, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e210369750a29ff2b8d49a8a3d2e1ba5ddaf574690dace75e0213795b69a527b", + "id": "volatility_systems/0018_cycle_period", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1133, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "d392f3b79edf44b9e0559661f7c92fd57f4578b315bb82f87070e462222b15fa", + "id": "volatility_systems/0019_fisher_cyber_cycle", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1134, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "6a34fc280b81dc51e8281c23c0496153440fe07d1d8476788c0081f808b61192", + "id": "volatility_systems/0020_adaptive_cyber_cycle", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1135, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e56731b1d08827ff64afd37fd140db075a3f0bec4ccde3d6f911e4a74dea7be8", + "id": "volatility_systems/0021_bollinger_band_breakout", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1136, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "516f7c0a6d273fab73c16fa913a3f877c387c3e4107563ffacfed123cb8e4fde", + "id": "volatility_systems/0022_bollinger_bands_setup", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1137, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "46cb116dc565992b9fa0e55cd1859b4db9281fe5b5624d76a7c8a14247fcea40", + "id": "volatility_systems/0023_0105_band_r_squared", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1138, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f3bc11d04440bca38566059b375d5df34fb17c00c3cab1584a88fef657bfb385", + "id": "volatility_systems/0024_0196_high_frequency_volatility_trader", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1139, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "f7712a4597a939fbb3a57b35baa661502a32cf1f7f35d08687be94ccae0e31b8", + "id": "volatility_systems/0025_0490_breakthrough_bb", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1140, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "a4f45eb2fa5c394149dc8e932eb0235fd5f015d7b2d20a6d1a24c383b144f9a4", + "id": "volatility_systems/0026_0706_bolltrade", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1141, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e8d8709cc5d182cd4bbc92ca9ce313859a1ad2cc6f653a45e374382a46cab574", + "id": "volatility_systems/0027_0838_wlxbw5zone", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1142, + "mapping_status": "package_only" + }, + "source": "package_only" + }, + { + "archetype": "single_data_indicator", + "content_hash": "244ed1c5bcbc1c40e1da1db4939aff0b479439ea03a995f1bde0c808cbb5b2f6", + "id": "volatility_systems/0028_0899_bezier_stdev", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1143, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "223fca37f93e96cf558b8f54ecb4f6b729bd8174f1269a3d7ef1a327d297d790", + "id": "volatility_systems/0029_0916_karacatica", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1144, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3ccb8c0001e2919c1ff8e10a5a423bc3231d984e4daa15ab87f6d89ac306d05c", + "id": "volatility_systems/0030_1100_the_20s_v020", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1145, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c1f3275898f3f63f70b0dd933bc6c9197badbc50076c859b7da31e760ab0036c", + "id": "volatility_systems/0031_1115_rock_trader_neuro", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1146, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "b15c46c3b3ad97f408a2f4ff81bc8b5ad668a879e5e78fa0c05438683eae3ba6", + "id": "volatility_systems/0032_1269_ef_distance", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1147, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "c54239a1c39db2b128de7db3cab9c897018c175d98230d6f8fe3b69e0fc4e77e", + "id": "volatility_systems/0033_1295_color_bb_candles", + "metadata": { + "category": "volatility_systems", + "jsonl_record": 1148, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "3b4beea7a6557e934eeac26409f1f47c631081cb8a19406d967899c990ae4532", + "id": "volume_system/0001_volume_weighted_macandle", + "metadata": { + "category": "volume_system", + "jsonl_record": 1149, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "e5bdd8b6f88663721e07f64903d3dde5911eb24b9ad97444b70d20172d7f3d2b", + "id": "volume_system/0002_volume_weighted_ma_digit_system", + "metadata": { + "category": "volume_system", + "jsonl_record": 1150, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "7cd135c14ca4cc3f8dd7f4a50305ecfb3bdb2af2fef1ff6b62de70f31ad92fc6", + "id": "volume_system/0003_volume_weighted_ma_stdev", + "metadata": { + "category": "volume_system", + "jsonl_record": 1151, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "684c5e154642b49e9c17d192207d27be90f4a919db8e412809bcfa029ab855d7", + "id": "volume_system/0004_volume_weighted_ma", + "metadata": { + "category": "volume_system", + "jsonl_record": 1152, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "73039b31ab5b73853b6e190b4df852e8804c75d8709f976318c140c1441163e3", + "id": "volume_system/0005_ergodic_ticks_volume_osma", + "metadata": { + "category": "volume_system", + "jsonl_record": 1153, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "be0f56141fa673353a5b7c3a2d87765e10f348790f9cfd0818c0d7133c395dbb", + "id": "volume_system/0006_ergodic_ticks_volume_indicator", + "metadata": { + "category": "volume_system", + "jsonl_record": 1154, + "mapping_status": "mapped" + }, + "source": "mapped" + }, + { + "archetype": "single_data_indicator", + "content_hash": "5efe6e80001abf1d78af3e2bc3e20838d72ef3ccdb31472894be198aa93945d7", + "id": "volume_system/0007_xpvt", + "metadata": { + "category": "volume_system", + "jsonl_record": 1155, + "mapping_status": "mapped" + }, + "source": "mapped" + } + ], + "entry_count": 1155, + "extensions": { + "counts": { + "functional_tests": 1152, + "mapped": 1032, + "strategy_packages": 1035 + }, + "encoding": "jsonl-following-records", + "entry_count": 1155, + "template_count": 14 + }, + "mode": "snapshot", + "provenance": { + "functional_adapter": "functional-test-adapter-v1", + "package_adapter": "three-file-package-adapter-v1", + "source_available": false + }, + "schema_version": "corpus-manifest-v1", + "snapshot_hash": "5a47140a11352e34b75c73ae89583e448833faf998d32d3800917e51cb15a33f" +} diff --git a/src/backtrader_agent/resources/catalog/corpus-v1.jsonl b/src/backtrader_agent/resources/catalog/corpus-v1.jsonl new file mode 100644 index 0000000..36dab2d --- /dev/null +++ b/src/backtrader_agent/resources/catalog/corpus-v1.jsonl @@ -0,0 +1,1156 @@ +{"corpus_id":"backtrader-corpus-v1","counts":{"functional_tests":1152,"mapped":1032,"strategy_packages":1035},"entries":[{"archetype":"single_data_indicator","content_hash":"b9f2a82df95b3331d27c06e53be794c74cefb22d77ea6cd4380605210e5f312f","id":"advanced/44_signals_strategy","metadata":{"category":"advanced","jsonl_record":1,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"13734a38778ebbe18c5add3ede9b93a875f054e27727d98dfd61ddeb9c62c115","id":"advanced/45_multitrades_strategy","metadata":{"category":"advanced","jsonl_record":2,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a83736cc9af4506039b4773a515b348470e7305833ef42d9e8ab9929cb0731d2","id":"advanced/48_strategy_selection","metadata":{"category":"advanced","jsonl_record":3,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"1d2d46fac674337efdf1a7495df006ca12ec1a0403cd65de96325625239766aa","id":"advanced/51_optimization","metadata":{"category":"advanced","jsonl_record":4,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"335787d70a88726cdefa2f113b1584b4e302c5322c05588cf4ac829077c4f9c6","id":"advanced/59_multidata_strategy","metadata":{"category":"advanced","jsonl_record":5,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_asset_allocation","content_hash":"ea02437df7db073a46083406aa2357f48dfc72ef1e0462c6478554d2d8fecac5","id":"asset_allocation/0001_gold_tactical_allocation","metadata":{"category":"asset_allocation","jsonl_record":6,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"53710839905b3c662c55db97b935e80d49181fd52db8d0a5bec04c207db3d348","id":"asset_allocation/0002_gold_60_40_enhancement","metadata":{"category":"asset_allocation","jsonl_record":7,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"451a128723682e110e14119e165fbbf739d7c68d78734507a3564cb937283057","id":"asset_allocation/0003_gold_enhanced_60_40","metadata":{"category":"asset_allocation","jsonl_record":8,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"fbf046b0f6457ff5d8ac779c90a139af67900a3fcc9f713c68f51685d11180c1","id":"asset_allocation/0004_volatility_managed_portfolio_gold","metadata":{"category":"asset_allocation","jsonl_record":9,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"5d2ab2bd93d9289ca03d501c7232eadefe91507bccb52a2a7f8374ae34613edd","id":"asset_allocation/0005_trinity_portfolio_gold","metadata":{"category":"asset_allocation","jsonl_record":10,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"defb637bc5d6117383a38d5116b09aa93741a6e771653b9055a4d07983e7598b","id":"asset_allocation/0006_portfolio_optimization_random_data_gold","metadata":{"category":"asset_allocation","jsonl_record":11,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"3361a07ab55dfdee23276535285aeeb8570a9b04883fb2f352246bff28b0764b","id":"asset_allocation/0007_permanent_portfolio","metadata":{"category":"asset_allocation","jsonl_record":12,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"115767e391d948dea668bbcaca614cd35a24ea08f9e0bf9de274ef96d4eb4f76","id":"asset_allocation/0008_taa_risk_parity_trend","metadata":{"category":"asset_allocation","jsonl_record":13,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"86d4852440c85ebe6b22d5911517596b1b31fcaefed5b43cb4b5feebebfabdb4","id":"asset_allocation/0009_dual_asset_leveraged_portfolio","metadata":{"category":"asset_allocation","jsonl_record":14,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"aab4c65f334441aade7828bda9eefddadd2cd63bce617cc0d6e9e72babeaed2f","id":"asset_allocation/0010_composite_asset_allocation","metadata":{"category":"asset_allocation","jsonl_record":15,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"7c948071afa07d5668bbe687181af2c97e3b430bc6d94654973bb5c22dc10ae8","id":"asset_allocation/0011_sixty_forty_portfolio","metadata":{"category":"asset_allocation","jsonl_record":16,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"41c5167d75f35e8991338fe25c8fe160c9c02b709f34fec5cd954146a0140961","id":"asset_allocation/0012_hierarchical_risk_parity","metadata":{"category":"asset_allocation","jsonl_record":17,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"465ae794b2467010456f6b22b6b4c658252bc8df04fc3227bee2cda86eeb6eee","id":"asset_allocation/0013_taa_aggregate_timing","metadata":{"category":"asset_allocation","jsonl_record":18,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"b0922027a6582dcc1e5cbab3b4dede96c4892be0d058cb45b3949d4f17850ee9","id":"asset_allocation/0014_anti_fragile_portfolio","metadata":{"category":"asset_allocation","jsonl_record":19,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"14295a289fc7a721976b17c2429b5202a0878b38dde32a55c795d7fdb8dad609","id":"asset_allocation/0015_herc_portfolio","metadata":{"category":"asset_allocation","jsonl_record":20,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"02c3f88c2b94eb4ba2ad286042764a79a78845f8a1d74b1ad7f091fcd9d8fbcc","id":"asset_allocation/0016_open_to_open_taa","metadata":{"category":"asset_allocation","jsonl_record":21,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"3f64148dc3ac149600e68fddc93747d536df6b49b29bd244b5c88e192e66e514","id":"asset_allocation/0017_cppi_portfolio_insurance","metadata":{"category":"asset_allocation","jsonl_record":22,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"a7f5cd497bbeafb75c2183a1117597a32143539d9ce9beea0abe5db5f379e511","id":"asset_allocation/0018_optimal_gold_allocation_strategy","metadata":{"category":"asset_allocation","jsonl_record":23,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"7478fd141fdcb63fb72f52efe353f198305740531ea419ce2c03eb882870a4e0","id":"asset_allocation/0019_crypto_optimal_allocation_strategy","metadata":{"category":"asset_allocation","jsonl_record":24,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"945e1d9bdfc1964cb1ed502c01c822454ba6b288c986b355591ca9d897a73759","id":"asset_allocation/0020_volatility_based_allocation_strategy","metadata":{"category":"asset_allocation","jsonl_record":25,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"6052964f28be2fd06b788ebc5318faf82a33e9753813aa11345c904031420e35","id":"asset_allocation/0021_equity_bond_allocation_strategy","metadata":{"category":"asset_allocation","jsonl_record":26,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"70c615cff903332d13f35be1880f1dc53babc979721b56d2767f210267598938","id":"asset_allocation/0022_adaptive_asset_allocation_strategy","metadata":{"category":"asset_allocation","jsonl_record":27,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"f869e5d21f488742eaae9da2976289a810bee68d420c08884fb27289175f39cc","id":"asset_allocation/0023_tactical_asset_allocation","metadata":{"category":"asset_allocation","jsonl_record":28,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0fc4364e3ce31c6783ed246d0faa76666c6f8740438287c1495155c8c6c976db","id":"breakout/09_dual_thrust_strategy","metadata":{"category":"breakout","jsonl_record":29,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"0ed4017a4933be11009294ac92f35752406d4378fa0825472fef5eaab72825a8","id":"breakout/105_donchian_channel_strategy","metadata":{"category":"breakout","jsonl_record":30,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"5397b9950fddcbe2f9dfb8a1e7fca8daa1201cd55158ef23bf478883dd2c444e","id":"breakout/10_r_breaker_strategy","metadata":{"category":"breakout","jsonl_record":31,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"78fc190a14948f62ce9088676d791f329f647e59f0f6fbb40aca9d66639876a1","id":"breakout/115_volume_breakout_strategy","metadata":{"category":"breakout","jsonl_record":32,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"09c0d78abf6873ac38029c8c19ea4a47380b7f83c15a9583c47dd15f193a426e","id":"breakout/117_price_channel_strategy","metadata":{"category":"breakout","jsonl_record":33,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"40ae2266cef562ea491244d8b73da7f9fc8e29fb68d965590485766d09fff986","id":"breakout/66_donchian_channel_strategy","metadata":{"category":"breakout","jsonl_record":34,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a528701e3071ec2c9baf74e21c965b2dfe34a07fcfcb1a5c2ded916cf7119cb7","id":"calendar_effects/0001_0005_gold_calendar_effect","metadata":{"category":"calendar_effects","jsonl_record":35,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"23ae0d76fef006ad6840f9453bc1617500a90e82ea989ec4a95f8949c567321d","id":"calendar_effects/0002_0007_gold_turn_of_month","metadata":{"category":"calendar_effects","jsonl_record":36,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0aaa624a4c60b46cd862bb53bbdc988bd06254d5575456fdb5ddcbac6552574f","id":"calendar_effects/0003_0017_gold_seasonality","metadata":{"category":"calendar_effects","jsonl_record":37,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"739e538c2600bb00b750f22e6c0ccf09c38dcc27873ce040b22c1fdb7df34e47","id":"calendar_effects/0004_0027_gold_turn_of_month","metadata":{"category":"calendar_effects","jsonl_record":38,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4be0704f53eb6c52820d2f48aca6635303ff34eb6cfe7d0983805f16b1975503","id":"calendar_effects/0005_0039_gold_seasonal_windows","metadata":{"category":"calendar_effects","jsonl_record":39,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"99ddd480bf3d04bfba864a71262c851153b1cc113ddd2a3b6432a27beb5a1abd","id":"calendar_effects/0006_0043_gold_seasonality_rotation","metadata":{"category":"calendar_effects","jsonl_record":40,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f29dca96b8811a2b247f3e2e3dd48ee5348562ac43a2ec7a546039f107685d85","id":"calendar_effects/0007_0097_gold_end_of_month_seasonality","metadata":{"category":"calendar_effects","jsonl_record":41,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"51464c9aca5d3165e24b4d9cf94c3543ab99eeaa7d8685b0ecf31aad0ec768ea","id":"calendar_effects/0008_0103_sell_in_may","metadata":{"category":"calendar_effects","jsonl_record":42,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"20090d32ba930b282d619b9b69220c38dd953a4f07f0e89a98ac422c165860cc","id":"calendar_effects/0009_0256_thanksgiving_seasonality","metadata":{"category":"calendar_effects","jsonl_record":43,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"79a25cccee48da8850301700e058d1aebf6748272d8874d7a5d0aaf49f8ac7e8","id":"calendar_effects/0010_0258_december_opex_seasonality","metadata":{"category":"calendar_effects","jsonl_record":44,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c33a926255cf1c0aeaebac040c0ee6b2ae77c349c31e496eacd31a50cd80ec91","id":"calendar_effects/0011_0266_quad_witching_seasonal_strategy","metadata":{"category":"calendar_effects","jsonl_record":45,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bf60c0801c87e71af6d5c0adf69e44d33d3fb615d66f1b4996e5c68cff18a3ec","id":"calendar_effects/0012_0275_seasonal_flip","metadata":{"category":"calendar_effects","jsonl_record":46,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b8bbb4948acc08981e912e0882893a90b70e62c5bcf57d5cb3caf83a15260dea","id":"calendar_effects/0013_0281_composite_seasonal_strategy","metadata":{"category":"calendar_effects","jsonl_record":47,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3eb9c6aebd958550a146d4c0c3b9376fb1078b36e3cf5eed011457ed2c7eaeb9","id":"calendar_effects/0014_0364_bitcoin_seasonal_anomalies_strategy","metadata":{"category":"calendar_effects","jsonl_record":48,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"419d98d8cf7ecf689cdaa0fb97a6600142895685b6c3e76c9274ea5aeb1c9be2","id":"calendar_effects/0015_0366_sell_in_may_strategy","metadata":{"category":"calendar_effects","jsonl_record":49,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8687224b49b949abbb52566ce4a22bd09fb0b2e6dee1796fa03a63c3ea3087d9","id":"calendar_effects/0016_0387_bitcoin_seasonality_strategy","metadata":{"category":"calendar_effects","jsonl_record":50,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7eac20c3452f217bc62933e5d6b8511498d4aca28e7429aacca7874a7dcb8ac5","id":"calendar_effects/0017_0401_seasonal_sell_august_strategy","metadata":{"category":"calendar_effects","jsonl_record":51,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"602414ea255b4c49096410019dda5406f18fe9d962baae502b495b85e32888bd","id":"calendar_effects/0018_0402_seasonal_trading_strategy","metadata":{"category":"calendar_effects","jsonl_record":52,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ea7a299ef3e65b796541b97feaedec8900b6de407590e4c9773ad4a2e40a59e4","id":"calendar_effects/0019_0406_commodity_seasonality_front_running_strategy","metadata":{"category":"calendar_effects","jsonl_record":53,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6b364dd5951c86884e58661f10d22bfdcf382a4ba4db2e4b8cbbc89b1280fce9","id":"calendar_effects/0020_0407_turn_of_month_strategy","metadata":{"category":"calendar_effects","jsonl_record":54,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"883d2d8207ec111188ccefb817abe69858785fe8f496ec73566b1c0ce9399635","id":"calendar_effects/0021_0412_cultural_calendar_gold_strategy","metadata":{"category":"calendar_effects","jsonl_record":55,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9183938fb0c68aeb972d104f690d5a6d8870b47dcdd57d43a7e52ddf9d127efd","id":"calendar_effects/0022_0016_gold_fomc_effect","metadata":{"category":"calendar_effects","jsonl_record":56,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"48f30c0e71e764608aea8ca951993d734e5bd7a411b403e622d966f42b74eeb6","id":"calendar_effects/0023_0079_rate_hike_cycle_gold","metadata":{"category":"calendar_effects","jsonl_record":57,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1bcdb89ff899e440c450dd86c996d7d374aadfbb846f063e509bec7ef73ee412","id":"calendar_effects/0024_0276_jobs_report_new_high_strategy","metadata":{"category":"calendar_effects","jsonl_record":58,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3dd616d31831fd14e21819e7aae779041730a9483e7afc4de014b1dd1d472de1","id":"calendar_effects/0025_0282_avoid_earnings_strategy","metadata":{"category":"calendar_effects","jsonl_record":59,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1b417fe8f98e3725a9892f826c1e755139b944e4ade70d10ea6fb346f41ad8af","id":"calendar_effects/0026_0306_pre_election_drift","metadata":{"category":"calendar_effects","jsonl_record":60,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9adb9f01cdf94ce500660b8f7d4585acd1c67c491893f1226fce52c17879c6ee","id":"calendar_effects/0027_0397_fx_news_trading_strategy","metadata":{"category":"calendar_effects","jsonl_record":61,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6d953127a4b4c0beaaec5831f45088b23010133aa83b11c72fa785e7b2e6b9af","id":"calendar_effects/0028_expert_news","metadata":{"category":"calendar_effects","jsonl_record":62,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"346c46b4795a3596f80adb702943a7e38b2faece1bc23c39eb3d46e965d4bdf8","id":"carry_trading/0001_0031_gold_rate_carry","metadata":{"category":"carry_trading","jsonl_record":63,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"79fdf107eba44eb2ade35ed30d7e1abcf79f6c74a4b43ecf7194e0b7b7457df9","id":"carry_trading/0002_0050_gold_relative_value","metadata":{"category":"carry_trading","jsonl_record":64,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dc5303e264b93d740b04bb50a401a19ada74f17f1e06f4b3795cc23c8b075209","id":"carry_trading/0003_0393_carry_trading_strategy","metadata":{"category":"carry_trading","jsonl_record":65,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"23a4c58b1abc19a46d7db87496062120af00dda84f74d72d7ff435b177244f21","id":"carry_trading/0004_0394_commodity_carry_strategy","metadata":{"category":"carry_trading","jsonl_record":66,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5b54d8eb38ef4d49179e68212d8996df72c74dbd7305ff9cc30539486b213523","id":"commodity_currency/0001_gold_change_point_trading","metadata":{"category":"commodity_currency","jsonl_record":67,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6e6d667e6f0b468a05e4ddc6b28bd949d69d05526e889df0933199206d0f4212","id":"commodity_currency/0002_gold_walk_forward","metadata":{"category":"commodity_currency","jsonl_record":68,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7a21ae9ca43cd18c78b3c975bc3a39e9cef94864b9a0198683700bccc562094a","id":"commodity_currency/0003_gold_factor_timing","metadata":{"category":"commodity_currency","jsonl_record":69,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a2cdee136192d4d096fa7f87906d08f9c004cbd60d7909dc3dac416ec524094e","id":"commodity_currency/0004_gold_cot","metadata":{"category":"commodity_currency","jsonl_record":70,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"77f2004cc34aaedadcf5ee5cb4becedaae529369be7861bb06beb53e06f076a8","id":"commodity_currency/0005_gold_currency_prediction","metadata":{"category":"commodity_currency","jsonl_record":71,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c3c1894b8f4434801e94bf2538c127d1acf9bc07ac52b9036a2643fae6517839","id":"commodity_currency/0006_gold_commodity_trend","metadata":{"category":"commodity_currency","jsonl_record":72,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2ca12dc729c9349dae4e6fed2582fe33204ebadd1411edbc4d6ea1db306d8fb1","id":"commodity_currency/0007_gold_quantpedia_strategies","metadata":{"category":"commodity_currency","jsonl_record":73,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"719542e57ba81096e960c30465a14e8ea198fcd32f94588d0a4e79e3389eabad","id":"commodity_currency/0008_gold_strategy_lifecycle","metadata":{"category":"commodity_currency","jsonl_record":74,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ede9e1c4c04f711b7f73f7e2b5704d866918094652fc361d984eb8e9df88ed16","id":"commodity_currency/0009_gold_ranking_system","metadata":{"category":"commodity_currency","jsonl_record":75,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"267fbb612add5f9b14d95ce6932fc005ab76ec67ce35761b61a58592b8b81f37","id":"commodity_currency/0010_gold_real_rate_signal","metadata":{"category":"commodity_currency","jsonl_record":76,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3c2c1b1c6da37938d9f057924a0d2d1ea319bdc2f31a427788fb81f46d2aabde","id":"commodity_currency/0011_djia_gold_ratio_strategy","metadata":{"category":"commodity_currency","jsonl_record":77,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6569587df56423b304e74be115fe2a781789287bdca81bef55e22de88121edbd","id":"commodity_currency/0012_gdx_overnight_session_strategy","metadata":{"category":"commodity_currency","jsonl_record":78,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d4c6894b1ed482796e38366a82070ba86c4346dd2985cca1bf9c6edad6e2ac81","id":"commodity_currency/0013_arima_garch_gold_strategy","metadata":{"category":"commodity_currency","jsonl_record":79,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c9326f106161a6a5e6ebfb5be705f61b40a768afb702a1603abaef6613489d38","id":"commodity_currency/0014_gold_market_timing","metadata":{"category":"commodity_currency","jsonl_record":80,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7247b137e2aec390dda047d10aa813928c731289be1f77ab279567f47df68fe8","id":"commodity_currency/0015_commodity_skewness_strategy","metadata":{"category":"commodity_currency","jsonl_record":81,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c9315690661908eb2c5155e0e145e4e4516353797086d341601ba7fa8068add7","id":"commodity_currency/0016_macro_fx_strategy","metadata":{"category":"commodity_currency","jsonl_record":82,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ddfea026a186a3bbfca1d9746e93b1575c1cbbbdc2f23a59ed9badde2716e7cb","id":"commodity_currency/0017_metal_inventory_strategy","metadata":{"category":"commodity_currency","jsonl_record":83,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cae1efe7263f17631e4165d95576dd851a29e8495219c9c0a500e20ab46943f9","id":"commodity_currency/0018_fx_regression_learning_strategy","metadata":{"category":"commodity_currency","jsonl_record":84,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"616c744da2ccd3cf6d7c95026d178bb21ae79af8142f8a5003e7bc30033513ce","id":"commodity_currency/0019_0019_ka_gold_bot_mt5","metadata":{"category":"commodity_currency","jsonl_record":85,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4df3d839cfbe9eae0c6599c87b7de49df8c435c078661715810a701a702767e9","id":"commodity_currency/0020_0698_silvertrend_v3","metadata":{"category":"commodity_currency","jsonl_record":86,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4c4f2937b1ecdec850f108a87ef215dd49d28517b9311e16ceac7b82a756e76e","id":"commodity_currency/0021_0910_silvertrend","metadata":{"category":"commodity_currency","jsonl_record":87,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"5a90f1d9df51171778d400b8364e89aed2f9cb5e10cc47e992926bd5076c23d7","id":"forecasting/0001_arima_time_series_forecast","metadata":{"category":"forecasting","jsonl_record":88,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"0920762b7a4f36fb01759b5507d45f61e705176a232d431e598a326e08b32f2d","id":"forecasting/0002_1003_forecastoscilator","metadata":{"category":"forecasting","jsonl_record":89,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"d59ccccefa9fceb2d8467e9e605eda282768b7c5eb80df231fe7e5d0f1a6dbe1","id":"forecasting/0003_1010_ema_prediction","metadata":{"category":"forecasting","jsonl_record":90,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"efd44b879c12cdf9a548b7f97063de598fd7eff78f5640200fd1b384bbbfb0c0","id":"grid_trading/0001_moneyrain","metadata":{"category":"grid_trading","jsonl_record":91,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6fa9ff7985220d40d8297a86ee3edde0893a62a1c59c51ec2166c3da5f880d49","id":"grid_trading/0002_very_blonde_system","metadata":{"category":"grid_trading","jsonl_record":92,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b48b6c6e3d78355e563efd34f8eb00539a957041c266d48b4db68465cf334c2b","id":"grid_trading/0003_frank_ud","metadata":{"category":"grid_trading","jsonl_record":93,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0948b16a914d8f34b225ec5c9265d6ecd1e805df9997883c47958e6e446c8cd9","id":"grid_trading/0004_vr_setka_3","metadata":{"category":"grid_trading","jsonl_record":94,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5bc102829a0ee20c34311911e06d4d30fc9285ec33484bc7ff2b69e6a90cc646","id":"grid_trading/0005_loco","metadata":{"category":"grid_trading","jsonl_record":95,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"28d75213480e358d380c55e33cce0f90b75e67f8b5121f1ecf3d0dd5c55e3730","id":"grid_trading/0006_0463_rndtrade","metadata":{"category":"grid_trading","jsonl_record":96,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"90ebe87fcbd5e39b7bdaa2b2cede47b5e4ed37c7761a514d4eff97a3c535e9fe","id":"grid_trading/0007_0555_new_random","metadata":{"category":"grid_trading","jsonl_record":97,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cfafebc94862df52d5e8c2ee5774aab642de1a28987ea71c459434307bc4830b","id":"grid_trading/0008_1196_random_robot","metadata":{"category":"grid_trading","jsonl_record":98,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"200e5eee0f08044d6cf734aa6341c3594ac5444719311ba67307264b8ab2f6c8","id":"grid_trading/0009_1198_martgreg","metadata":{"category":"grid_trading","jsonl_record":99,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"c5ce116114dc043a5f85e7dfb1e6a4dc3e5cd392829ef6cb509a18cbbea06b9b","id":"machine_learning/0001_candlestick_kmeans_classification_gold","metadata":{"category":"machine_learning","jsonl_record":100,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"d9e58634868cca248e39e521e3d48a442243b9b2574fd7982ddaf70c3751316c","id":"machine_learning/0002_extreme_short_term_gain","metadata":{"category":"machine_learning","jsonl_record":101,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"ab8a47534d6c2800f73140f967b9571259c36c7a069b227d27148056999c0577","id":"machine_learning/0003_gold_ml_prediction","metadata":{"category":"machine_learning","jsonl_record":102,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"1c2b016d717412e7616e7b9587bafd0b14db36398e58278c6ac02309ffe46105","id":"machine_learning/0004_reinforcement_learning","metadata":{"category":"machine_learning","jsonl_record":103,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"8b796a8a9f0832ba3f85891368f9738365013a83acd1a28ccb1a4399f319f544","id":"machine_learning/0005_random_forest_financial_ratios_strategy","metadata":{"category":"machine_learning","jsonl_record":104,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"680313962d00c9233b3abbb1af217c95d601aec3d14627acb3403c00d964648a","id":"machine_learning/0006_sentiment_signal_strategy","metadata":{"category":"machine_learning","jsonl_record":105,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"98bf4263affe3666ae0ca30531bf1a48854861d44120c8b8789fa8547bf49a90","id":"machine_learning/0007_0007_heads_or_tails","metadata":{"category":"machine_learning","jsonl_record":106,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"9af53a9a32c9499a2610dba263fa4b2b58b2c3d737ac2b3f18d804287be1ea84","id":"machine_learning/0008_0187_rnn","metadata":{"category":"machine_learning","jsonl_record":107,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"3f0dba24734188c15f717a4f2a4fe7249a7efc1332db2eca5e59e5b81fe8488c","id":"machine_learning/0009_0238_exp_skyscraper_fix_coloraml_mmrec","metadata":{"category":"machine_learning","jsonl_record":108,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"27b0bb9895ab668a6d756eb81f11d2466e58b055085987ed3cac52993f7573b8","id":"machine_learning/0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec","metadata":{"category":"machine_learning","jsonl_record":109,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"2e62eba43e7aa7936b604f7dd2c80df950a4952ea0cc31c37ad8af98f8484750","id":"machine_learning/0011_0384_ais2_trading_robot","metadata":{"category":"machine_learning","jsonl_record":110,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"b1330aed3a787b0ea849e1f82dab6d5d9b0e70fd6614eda8d81d062d928d522c","id":"machine_learning/0012_0429_donchain_counter","metadata":{"category":"machine_learning","jsonl_record":111,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"5571f5e518687079a398adf60905c31b5ec99dd3902f31453b9d9c25e2ab265f","id":"machine_learning/0013_0514_daily_breakpoint","metadata":{"category":"machine_learning","jsonl_record":112,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"f8c920275e926befea54def79b33e2257377a854799c15bcb4d5e1174e5bc767","id":"machine_learning/0014_0688_fuzzy_logic","metadata":{"category":"machine_learning","jsonl_record":113,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"49aca744e00563bc65ed4f0d618ae5e9130d778aaa67110ec7a75fd8943bdcda","id":"machine_learning/0015_0715_mtc_neural_network_plus_macd","metadata":{"category":"machine_learning","jsonl_record":114,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"d70717a614acc99cd271bb1ba4b7fad74e7ae5d5bdfc407474498224e8dd6183","id":"machine_learning/0016_0726_zerolagea_aip_v0_0_4","metadata":{"category":"machine_learning","jsonl_record":115,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"564674fe7c5a636e73068b470c74220962976d0736f48a2ae161896fbf96f41e","id":"machine_learning/0017_0797_artificial_intelligence","metadata":{"category":"machine_learning","jsonl_record":116,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"e3cf1932a1198520b76357fdf1a946287903a3e369d7f571936ba44045d3cca6","id":"machine_learning/0018_1086_cronex_chaikin","metadata":{"category":"machine_learning","jsonl_record":117,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"a0b2f2ab8cd624f79053514ed4033c6f72426aa6116b35e63e2de0ae081a0d17","id":"machine_learning/0019_1154_artificial_intelligence","metadata":{"category":"machine_learning","jsonl_record":118,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"482ed015be5cfe400615dad1ae659519b9455c402e379f5be93625531c50af76","id":"machine_learning/0020_1225_aml","metadata":{"category":"machine_learning","jsonl_record":119,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"dd36ada7883a56424dfc00c4193de9c6ba6eaa30e118a4f6715c28bcc9fcebf1","id":"machine_learning/0021_1293_jbrainsig1_ultra_rsi","metadata":{"category":"machine_learning","jsonl_record":120,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e19a4064def5430d6d0f50f0b09e2f89097e37f65e993480b94b600f377027d0","id":"mean_reversion/0001_gold_momentum_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":121,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7c9dbd2e8e1aa2a0f10eaa0c63be20727c4b1aaf553424497ad52cc59ee66229","id":"mean_reversion/0002_double_7s_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":122,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"22034be69cc54e990ab73568acd4c2d635106b180d8df37838a66672bdc7eb4d","id":"mean_reversion/0003_gold_event_momentum_reversal","metadata":{"category":"mean_reversion","jsonl_record":123,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"56838f8f2e7db9787b91b0b35dc77601cef2776e1e3ca595803770cd58d19a7f","id":"mean_reversion/0004_rsi2_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":124,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"25e75c8d2341918d6178d124154ec44dd11e89371d9fa119982756c595cb50e5","id":"mean_reversion/0005_holiday_reversal","metadata":{"category":"mean_reversion","jsonl_record":125,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b5cb410aaa551bbae4902800c2a550f84254337854bebafe05ee932766087ea2","id":"mean_reversion/0006_gold_event_momentum_reversal","metadata":{"category":"mean_reversion","jsonl_record":126,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6c5699dd9db4961394fc67eb79d55c44fbefcf476ebabeb3cee4c5c8aa2bde36","id":"mean_reversion/0007_gold_market_reversal","metadata":{"category":"mean_reversion","jsonl_record":127,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3ae83f86a612c3cc154138a5581c8b7d5deaed0a6b338ca57f3b7cfbaf1878d1","id":"mean_reversion/0008_consecutive_down_days","metadata":{"category":"mean_reversion","jsonl_record":128,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"33ccfd588ee0a8af1e8405b47cfb4eec77d2dc03927e76a35ce0cc5034aa70b3","id":"mean_reversion/0009_cointegration_mean_reversion_gold","metadata":{"category":"mean_reversion","jsonl_record":129,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6c76c262eb1dd2c6a746f1d1488104ce020d0fe67f2c28cd3c94887a6aa3181f","id":"mean_reversion/0010_double_n_gold","metadata":{"category":"mean_reversion","jsonl_record":130,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2e5cde2df9285a71cb259870a06841bc6f430e9c65806c857b474f08b86197b8","id":"mean_reversion/0011_mean_reversion_stops_scale","metadata":{"category":"mean_reversion","jsonl_record":131,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"690286a1e0920dc643c6a4a7124315f991780d2c5b1406d9ad9bcfd4a32ed3ca","id":"mean_reversion/0012_mean_reversion_momentum_vol","metadata":{"category":"mean_reversion","jsonl_record":132,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e3ecb3f989952fabfcf85a9c198c19ff164574fe41b4f09adfb735b82464265a","id":"mean_reversion/0013_commodity_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":133,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bf912629d67fee5961d80b63cc9c02313b103fe810d0f82b1b4a4871a1584c99","id":"mean_reversion/0014_gold_intraday_reversal","metadata":{"category":"mean_reversion","jsonl_record":134,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"58854437a8bf498ceea53c7f1dbee678b523b8abe5cf318e1059ec9a285a0955","id":"mean_reversion/0015_simple_connorsrsi_sp500","metadata":{"category":"mean_reversion","jsonl_record":135,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"626e6f7cd2477cab9c00e7c40278132920cd8648e62b332d9ab5fc650340533e","id":"mean_reversion/0016_intraday_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":136,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2beda78562423f1ff34abeb4a232df44e8f416ff7a04ca5049f5a16f6055b25b","id":"mean_reversion/0017_roc_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":137,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e8be59cdb2def45816c6291e6a1066f23ed12c8c76ae551a833038aa1b7bcb6c","id":"mean_reversion/0018_n_day_exits","metadata":{"category":"mean_reversion","jsonl_record":138,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0bd02574b81ac322a79c700f4b37402413ed386558e79b3566894c044ff8d7b6","id":"mean_reversion/0019_volatility_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":139,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0ce071a9d22df750a51086a06bfd8f5e1895250f45abc0e585bbef4d6f2092b2","id":"mean_reversion/0020_connorsrsi_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":140,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aa1e7af62399d89aae7b0188128e8f4549bbdb6fceab0fd1e008c01dea8786f8","id":"mean_reversion/0021_connorsrsi_optimization_selection","metadata":{"category":"mean_reversion","jsonl_record":141,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0265c09589ec47d28067ba214b8a6ddd5001e8eb6510c62efcf6e61e758f5c1e","id":"mean_reversion/0022_dynamic_momentum_contrarian","metadata":{"category":"mean_reversion","jsonl_record":142,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"50a7488df2841037e05103a1286927803597e67825c3f5d70145597f24f71b33","id":"mean_reversion/0023_connorsrsi_sensitivity_analysis","metadata":{"category":"mean_reversion","jsonl_record":143,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a4cf9476aab090f3ddeeb8ce095c50038ef2e07ba34fe07bf041db065ddf2cc6","id":"mean_reversion/0024_mean_reversion_guide","metadata":{"category":"mean_reversion","jsonl_record":144,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a3a5f17de05ad5b908e19b54fba600f6d4ebab463a5d2f2d8f17a272a75a2b99","id":"mean_reversion/0025_weekly_mean_reversion_rotation","metadata":{"category":"mean_reversion","jsonl_record":145,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d031b4823376596882f1b1dd9a2ec36d4ae6b035c027b980686301a4a6b659c4","id":"mean_reversion/0026_index_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":146,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d8dcd6f1b339e52b1f829a7608fa682dfbbb32dbccd58c670ad7e25ebac8b048","id":"mean_reversion/0027_mean_reversion_across_markets","metadata":{"category":"mean_reversion","jsonl_record":147,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e15fd4e6a6e4fe023df0e017060f3f0cdfb7ba1fb59eb64d61e488dd378b7960","id":"mean_reversion/0028_rsi_oversold_reversal","metadata":{"category":"mean_reversion","jsonl_record":148,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"976162065048c5a2de2a7c5fafd277d2f2d92df1cf23d4e2d12a385b365ebf2f","id":"mean_reversion/0029_consecutive_low_rsi","metadata":{"category":"mean_reversion","jsonl_record":149,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f60e39846f0498c8a67e26ca3522441107010a9c1f49135e37cc586642082d6b","id":"mean_reversion/0030_rsi_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":150,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a1bf00e2c6bbad302ea40aed35806fd406ef3bcb946948177766070e8a1d4e3c","id":"mean_reversion/0031_simple_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":151,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7e7e8bebf118bec0b3cb97a8e32e198d9dbcc75e8c749476c867ac844a7fc70d","id":"mean_reversion/0032_online_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":152,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0f0db060c7aba8ea399ff602c19571f1a78336f531b679dcd20a35d50837cc99","id":"mean_reversion/0033_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":153,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"30613fde127ddabb8ec34f93369054c69e34a122a65e4b9b75e4696a94ed3349","id":"mean_reversion/0034_weekly_reversal","metadata":{"category":"mean_reversion","jsonl_record":154,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"08f6b82fc2790ab9572a00590d3150093146ff26bcaf14616f3aa808cc80baac","id":"mean_reversion/0035_candlestick_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":155,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"97a26302627d179250967d7390bb68c7ca5a4100b909d0472af72b17971e4dbb","id":"mean_reversion/0036_sparse_mean_reversion_portfolio","metadata":{"category":"mean_reversion","jsonl_record":156,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f51fba0d298a7b6433df977f56a29aaef79f549d2b8c11961950ddd842c7988b","id":"mean_reversion/0037_min_profit_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":157,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d493bf56e051840f74829250580c17aac9687c3de2d42068fdd8046163b9d89a","id":"mean_reversion/0038_mean_reversion_entry","metadata":{"category":"mean_reversion","jsonl_record":158,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1a3c9459e742a508aa532fdf39fe0942a52d5e5b1abd1c7291953445aaeb899d","id":"mean_reversion/0039_bitcoin_trend_mean_reversion_strategy","metadata":{"category":"mean_reversion","jsonl_record":159,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"89ef33518d9ef0f40add28cd44f9bda58e16c54e2ad47be4e7f3452f2f195ae6","id":"mean_reversion/0040_mean_reversion_check","metadata":{"category":"mean_reversion","jsonl_record":160,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e4c1e6298e722185b4005bc6401e07017e7ee97ddf852e4785d5763d7f299fd9","id":"mean_reversion/0041_efficiency_ratio_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":161,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ac2f886046ac6e8a248bee1a01833728e480581f93e09f060a8273c733727f71","id":"mean_reversion/0042_0046_the_rsi_engine","metadata":{"category":"mean_reversion","jsonl_record":162,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0862fb239cec85c4187d60084a174b997d9390da4eb25bf6260d714df6827209","id":"mean_reversion/0043_0060_stoch_cross_ea_h1","metadata":{"category":"mean_reversion","jsonl_record":163,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5ccf06d36a44e5e1d799fafe7237395f06d0c237d398c6fbd4b5ed0c17924026","id":"mean_reversion/0044_0106_mean_reversion","metadata":{"category":"mean_reversion","jsonl_record":164,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"49230a59f718285ad5cf98429b0e2b1b6a4a81da6dbad68b873a601d30f89b73","id":"mean_reversion/0045_0108_icho_trend_ccidualonma_filter","metadata":{"category":"mean_reversion","jsonl_record":165,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2c6e9fc76c16ffaf7ed4a1fcf5c20d1ea0b04b4fad92a931ec9e5add70b4b4e","id":"mean_reversion/0046_0110_ma_trend_2","metadata":{"category":"mean_reversion","jsonl_record":166,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d8e504b64d835b87a643f74f2b42bf5dbd1d0ee6a53c1c9b4026ce6edecd65d0","id":"mean_reversion/0047_0132_exp_spearmanrankcorrelation_histogram","metadata":{"category":"mean_reversion","jsonl_record":167,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e84047193f409212785b187f478bd3bbcefb83475b1de00e1763911ec6a8dea3","id":"mean_reversion/0048_0154_exp_finetuningmacandle","metadata":{"category":"mean_reversion","jsonl_record":168,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3c5b1b7fa8ab0644a838650c09a32bf18d5a23aa7e8dcdeac7a8493ff73d77d7","id":"mean_reversion/0049_0166_nrtr_revers","metadata":{"category":"mean_reversion","jsonl_record":169,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1e2ce940c43f4a4a5c493adfbb7ffad1499ae7011205e54d64296fe678b7c548","id":"mean_reversion/0050_0167_extreme_ea","metadata":{"category":"mean_reversion","jsonl_record":170,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"32c8c2acefaa5a3e3d6b094c7a22c5d93c788b88b24e4fe21bce9ff51ad4e29f","id":"mean_reversion/0051_0171_rsi_rftl_ea","metadata":{"category":"mean_reversion","jsonl_record":171,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"947da61f941ae2a51265ddfab94183a2268ca11411b099fcdc7f9b5252098a3a","id":"mean_reversion/0052_0172_exp_timezonepivotsopensystem","metadata":{"category":"mean_reversion","jsonl_record":172,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a5bbe4accff67287ae78545ca6480c8fae9658c4f51007ddcf4b663ec1491dcb","id":"mean_reversion/0053_0176_exp_hans_indicator_cloud_system","metadata":{"category":"mean_reversion","jsonl_record":173,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8bcaab82cc186465dae3eaba631a07a6bfe48e21b609587dce2cbbe13600b298","id":"mean_reversion/0054_0177_exp_hans_indicator_cloud_system_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":174,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f63c6c397b41e2cdb561296e3da8fd8aac424d32e615cc3b0ee69cf0b8c5bd75","id":"mean_reversion/0055_0178_exp_timezonepivotsopensystem_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":175,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e28c1590e6c005e063d59064485654321582d828f10aea09e856b8bc32f0452b","id":"mean_reversion/0056_0181_exp_vortexindicator_duplex","metadata":{"category":"mean_reversion","jsonl_record":176,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"685932df0020013c3ff4cbedd47470aa58f3dd19964e00af0561fcfce2ba1a57","id":"mean_reversion/0057_0182_exp_colormetro_duplex","metadata":{"category":"mean_reversion","jsonl_record":177,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c4be108efd432aa9031bd043091c9e55f30ae81612dcecc43209a7bc98820c83","id":"mean_reversion/0058_0183_exp_colormarsi_trigger_duplex","metadata":{"category":"mean_reversion","jsonl_record":178,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c65380085ea23b3bf6c6831ddee1e87325df957d7c5b4f121c2534d385e60c28","id":"mean_reversion/0059_0184_exp_adaptiverenko_duplex","metadata":{"category":"mean_reversion","jsonl_record":179,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6f959e08d79c125d73639502d49e55d11d977e18173efcd9995136471feabe1b","id":"mean_reversion/0060_0190_xbullsbearseyes_vol","metadata":{"category":"mean_reversion","jsonl_record":180,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ac8dbeabd29c44768908e3aa3b59def5fcb40702ffbef012013d162896920f4e","id":"mean_reversion/0061_0191_xbullsbearseyes_vol_direct","metadata":{"category":"mean_reversion","jsonl_record":181,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"48a3add58d7bb76eab4cf593aa056440cc234ba8bd053126bb8f8817531427b4","id":"mean_reversion/0062_0194_starter","metadata":{"category":"mean_reversion","jsonl_record":182,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a5000b35704386a20a7fe390c67aa3d6ce2d1e16de262d0f47cce6e4a9a2df33","id":"mean_reversion/0063_0197_exp_finetuningmacandle_duplex","metadata":{"category":"mean_reversion","jsonl_record":183,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1a7a714ad2ee4597dce46eebdc2d3ef56764ad1cc09ccb5fd574a69cf6c5486d","id":"mean_reversion/0064_0229_exp_xdemarker_histogram_vol_direct","metadata":{"category":"mean_reversion","jsonl_record":184,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a20094918d2835b9b2108943d0ddb8d4005a0b8e097fcca6b6cc40a88318bae0","id":"mean_reversion/0065_0231_ohlc_stochastic","metadata":{"category":"mean_reversion","jsonl_record":185,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"14063b5fea5e3a5b98596c9361a0e348bb8e4172f0815a597553103f613c7f63","id":"mean_reversion/0066_0232_exp_skyscraper_fix_duplex","metadata":{"category":"mean_reversion","jsonl_record":186,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"648ed222fce65ec602e1f45f056b2c557b2550433741a92c7b7f86dc1c4d4530","id":"mean_reversion/0067_0233_exp_jfatlcandle_mmrec","metadata":{"category":"mean_reversion","jsonl_record":187,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9aa18d2e1006382b860eb20865748bc2c22e874822a8012f967619609b705725","id":"mean_reversion/0068_0234_exp_x2macandle_mmrec","metadata":{"category":"mean_reversion","jsonl_record":188,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e0d734c4ad8706c04805121ee47ec14f96272da021a96ad9d454ea76c9b9df9b","id":"mean_reversion/0069_0236_exp_skyscraper_fix_coloraml","metadata":{"category":"mean_reversion","jsonl_record":189,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bc1e9dbfbe8e4843aa86060640a9903267288ebb6859aba446894fc05107268f","id":"mean_reversion/0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec","metadata":{"category":"mean_reversion","jsonl_record":190,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6ca496dc6c9ceaefe78039d12eaf3aeaeb3a7d60ecfd9789af2746fafeaa8af6","id":"mean_reversion/0071_0242_autotrader_momentum","metadata":{"category":"mean_reversion","jsonl_record":191,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"410e6f1d491c4c8b360ad312255f47646483c8a2c1f5d928f73d0c91c39ab5d5","id":"mean_reversion/0072_0243_exp_i_anyrangecldtail_system_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":192,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0c6ac5edeb92e9e9c1036370c2422329b2a48def144cc53388d85a4a15a5f469","id":"mean_reversion/0073_0245_exp_iin_ma_signal","metadata":{"category":"mean_reversion","jsonl_record":193,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8790dbc74db8f57fd26946227ec1d4c314df314cc4e35fcd0bc28f89fed32565","id":"mean_reversion/0074_0250_exp_xcci_histogram_vol","metadata":{"category":"mean_reversion","jsonl_record":194,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1ca6c7c12fabf87972aa3ff38af59f7bd0be2b6019c57d201599fa79254ae8c8","id":"mean_reversion/0075_0251_exp_xrsi_histogram_vol","metadata":{"category":"mean_reversion","jsonl_record":195,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3aa4af412bea46cc7b11d7120a6973ba8c9dcc2ab02c6bd69098fe8709a78d5d","id":"mean_reversion/0076_0253_vr_buch","metadata":{"category":"mean_reversion","jsonl_record":196,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d8266c6c9900a0ed1d6acbc031d243080b86e8534a978a836e79e772f65c551e","id":"mean_reversion/0077_0254_exp_iin_ma_signal_mmrec","metadata":{"category":"mean_reversion","jsonl_record":197,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ca211e4b87d3818104625e3c25f508f21c0e27b79afd4cfb1b1a947dc02c93ba","id":"mean_reversion/0078_0256_basic_cci_rsi","metadata":{"category":"mean_reversion","jsonl_record":198,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"28f5acc117cf46c977f942ff7f457297074e930970c9c71a04fb4bfc6e41dc53","id":"mean_reversion/0079_0257_exp_xrsi_histogram_vol_direct","metadata":{"category":"mean_reversion","jsonl_record":199,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1bbdfab14e474ac2e583dd155a848b4b4a65a237d064dde0084e53c5e238302b","id":"mean_reversion/0080_0258_exp_xcci_histogram_vol_direct","metadata":{"category":"mean_reversion","jsonl_record":200,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"72ec8b0ee91ed5d67cd28b87694c5c75d9cbb1466ea514dbb2834455aec13f25","id":"mean_reversion/0081_0260_exp_trendmanager_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":201,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"eebe5ed3ca090d673609c15974581253ad9b8d5a27b6c6a1206691c191e1d6e9","id":"mean_reversion/0082_0262_breadandbutter2","metadata":{"category":"mean_reversion","jsonl_record":202,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3d6d2f91b02f4450c64bd5c0069924b1aab718c450fdbab0e9e3691ad02a49c9","id":"mean_reversion/0083_0265_daydream","metadata":{"category":"mean_reversion","jsonl_record":203,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e0c41c2c3e1940517d9a9a6429175426fbd590dde59c670605e16ac0751acb0f","id":"mean_reversion/0084_0266_js_ma_sar_trades","metadata":{"category":"mean_reversion","jsonl_record":204,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"58ad3e2b8f89428d3b91d8522ae19693def1b4a9dc7118f765db4d25367001a2","id":"mean_reversion/0085_0267_ft_cci","metadata":{"category":"mean_reversion","jsonl_record":205,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"33eaeb1f5d24273c46eef7397aa3e7571132324c67e2752b9c820c230bd78c73","id":"mean_reversion/0086_0268_ascv","metadata":{"category":"mean_reversion","jsonl_record":206,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7836b7d2e139cded90ff8c128c24b8368ab7397ab70ae25f04d038d0cfcc67b5","id":"mean_reversion/0087_0271_sensitive","metadata":{"category":"mean_reversion","jsonl_record":207,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"897227e50cbd900bed0057d0b25a0fe8079151044f7528dec187724d94c347cb","id":"mean_reversion/0088_0273_1h_eur_usd","metadata":{"category":"mean_reversion","jsonl_record":208,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c796fbe8bf0dbd211c72dad2c93b07012e939f596b113a8e7400c816717ce5f1","id":"mean_reversion/0089_0277_ohlc_check","metadata":{"category":"mean_reversion","jsonl_record":209,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8135705d0dd6aef27e5cabca1db46b6486ad490143b856b7195e0e83e43e316f","id":"mean_reversion/0090_0279_russian20_hp1","metadata":{"category":"mean_reversion","jsonl_record":210,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"55c067460f51ca01a5815248ac84ade0596816b92cce4024ad4cab8194adb4c9","id":"mean_reversion/0091_0280_exp_trading_channel_index","metadata":{"category":"mean_reversion","jsonl_record":211,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"70bea761c2e1bbae1366421ebbcd8fd575206ebb26b981df96d24b3f8a2416ed","id":"mean_reversion/0092_0281_exp_trend_intensity_index","metadata":{"category":"mean_reversion","jsonl_record":212,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f58f8a4f0e5078523b59946b130be9e9b9e92e1d514e0c0afa2820e23cefa9c3","id":"mean_reversion/0093_0284_nextbar","metadata":{"category":"mean_reversion","jsonl_record":213,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fd93bef9e02319777eb20365d13c21a324dcd62553a203a97b325c4fe34ebfc7","id":"mean_reversion/0094_0287_55_ma","metadata":{"category":"mean_reversion","jsonl_record":214,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e931dcdc2c33153c443d7f017d3142a2ae7939d71f18d42846fc8efed48ad575","id":"mean_reversion/0095_0288_above_below_ma","metadata":{"category":"mean_reversion","jsonl_record":215,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5369439a8e458a6cf74b5a1adf6dc1612d1da0f6fc60c67dd846a56262ad50a","id":"mean_reversion/0096_0291_forex_fraus_m1","metadata":{"category":"mean_reversion","jsonl_record":216,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"640a2fbaa14ed0822ad6d41ef2eebd20be3440c7ccfaed045d2f6e269e47cde4","id":"mean_reversion/0097_0293_gbp9am","metadata":{"category":"mean_reversion","jsonl_record":217,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"31b0279c45ffa8c0c4c0de5aadfa659df6b2e003b78c079ff8bac44f5ce8e19f","id":"mean_reversion/0098_0294_exp_dema_range_channel_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":218,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4b2ec13500c4342bfb070627662b6f751331e803f7f23e47a5f2676aee0281ea","id":"mean_reversion/0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":219,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fb2ccb5e16473d9378db91b3b04b84eaa3cbe720ca4447961a43de52f8bd9fd9","id":"mean_reversion/0100_0296_exp_candlestop_system_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":220,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"11b88df68897b15e11a336437fa8dcb8d7a3a565aa094900440f4dd5b55aecc3","id":"mean_reversion/0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":221,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"02e058f5032f658239094a936bde5e49dd3dd027689e1a0cbb8fb2c916a391da","id":"mean_reversion/0102_0298_exp_xperiodcandlesystem_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":222,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4e89ca2d64340a5f809c1913cbc1cb7fb461a67152a47e17b3603eb3d2c9538e","id":"mean_reversion/0103_0301_cci_and_martin","metadata":{"category":"mean_reversion","jsonl_record":223,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"eee8dec1239d755e10c6e19bde797fcf5b16ebae12ca1cf630a46daf4961f9fa","id":"mean_reversion/0104_0302_one_ma_ea","metadata":{"category":"mean_reversion","jsonl_record":224,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"71661bd3fd1993c8ebef2fa078da5e425f4cbe20ebf71d0845a70a21852a347a","id":"mean_reversion/0105_0320_gaps","metadata":{"category":"mean_reversion","jsonl_record":225,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c6762374d0e07d7be7ae6a334ed322c6a7dcd8cec4b96d545b7fb2767ad49c79","id":"mean_reversion/0106_0327_cloud_trade_2","metadata":{"category":"mean_reversion","jsonl_record":226,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0243bb54ad9492bbf13d8d891f6e63c1f20eaad5edf8b0060ba54dae8a0c3c5b","id":"mean_reversion/0107_0334_auto_adx","metadata":{"category":"mean_reversion","jsonl_record":227,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1a0699f41d0f999b070b08ccffb9b5ad5ef7ba3b9e2df39733f8afc13b623cf4","id":"mean_reversion/0108_0345_exp_caudatexperiodcandle_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":228,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d297d6870ed7bfc10736186705974acf351387b1f45fba8ab5388f117c059f85","id":"mean_reversion/0109_0346_exp_wami_cloud_x2","metadata":{"category":"mean_reversion","jsonl_record":229,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6bdf5221d4c7adf3d23343ec110592485538266e094aa9e2c10e111afecbbd26","id":"mean_reversion/0110_0348_exp_colorxderivative","metadata":{"category":"mean_reversion","jsonl_record":230,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"81713da0feb661f0c239d4c7e0bd425fee3a5d4d574b6aa53002bf7b32d67604","id":"mean_reversion/0111_0350_exp_ultraabsolutelynolaglwma","metadata":{"category":"mean_reversion","jsonl_record":231,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cab7c38ead1f8962b4ffa055774e1c81c01f3a1182dda6931f9bfc9fc70b2a7e","id":"mean_reversion/0112_0352_exp_blautvi_tm","metadata":{"category":"mean_reversion","jsonl_record":232,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"53cef131f09a8e38ff81980d9370a6e0720db2ef0a409d4ab1eeb2b89707ba95","id":"mean_reversion/0113_0353_exp_blauergodicmdi_tm","metadata":{"category":"mean_reversion","jsonl_record":233,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9cd5a57fae7a5cc1763177ae91865fbc9cc280d887ed65388d436b17a61d392b","id":"mean_reversion/0114_0354_exp_colorx2ma_x2","metadata":{"category":"mean_reversion","jsonl_record":234,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1d407a3a0448f862572b4705a9fe57edf48d80bf1c752b723ed9628878f3032d","id":"mean_reversion/0115_0355_renko_level_ea","metadata":{"category":"mean_reversion","jsonl_record":235,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5d910a7e169b3cff213886d455b4ef0e14c7ccc2d40daeaf252cb909fbcda84a","id":"mean_reversion/0116_0356_exp_absolutelynolaglwma_x2","metadata":{"category":"mean_reversion","jsonl_record":236,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e6524fa73b0952f42a3108c079a7760ebdac445bab0cb7f40b72a3c03ab6329c","id":"mean_reversion/0117_0361_js_ma_day","metadata":{"category":"mean_reversion","jsonl_record":237,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4b6c5bf9c85ec0658fd62e65386d7077a3d28ea92a1386d45b6daeef1a41a23a","id":"mean_reversion/0118_0364_exp_sinewave2_x2","metadata":{"category":"mean_reversion","jsonl_record":238,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"24312c327d2a0639e44b125f57a6d17ef1301dbc541ade7a191a53729e9f1f98","id":"mean_reversion/0119_0378_exp_atr_normalize_histogram","metadata":{"category":"mean_reversion","jsonl_record":239,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5e1959508a12803581a28d2435861bd08c3d550e6985e1d4adecc84c8a13000","id":"mean_reversion/0120_0387_exp_average_change_candle","metadata":{"category":"mean_reversion","jsonl_record":240,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d40530c9a2b8599c9d40f1307143e3f5a5fa35cd8f0513310eef0a0bc60562ff","id":"mean_reversion/0121_0388_exp_xrsidemarker_histogram","metadata":{"category":"mean_reversion","jsonl_record":241,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"46b2caee4b5de75fca716f8acf0170527ffb54c98977deac81aafa5d2ae9027b","id":"mean_reversion/0122_0389_exp_2xma_ichimoku_oscillator","metadata":{"category":"mean_reversion","jsonl_record":242,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7624a47224aa9edeff61f112534f3954a3324d7d313fb76b35a2e710808d7151","id":"mean_reversion/0123_0397_spasm","metadata":{"category":"mean_reversion","jsonl_record":243,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bc23c0384247df431c9c673d073621cb8686867727213c05d003fb00b478d4ab","id":"mean_reversion/0124_0398_exp_kwan_rdp","metadata":{"category":"mean_reversion","jsonl_record":244,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1711ba46a053f7d892515c5bb52cd5dde044123a2ded9e6e75262cd01714f87e","id":"mean_reversion/0125_0399_exp_kwan_ccc","metadata":{"category":"mean_reversion","jsonl_record":245,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"298d43f7c9400d0e6e18c507bf7d32ccdbaca3b1608b723561da9015396dec10","id":"mean_reversion/0126_0401_exp_kwan_nrp","metadata":{"category":"mean_reversion","jsonl_record":246,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cf29552c8c4d65f8f64a9664467934b19ce7373100c00a32469ce56cc68cf5e1","id":"mean_reversion/0127_0406_exp_sar_tm_plus","metadata":{"category":"mean_reversion","jsonl_record":247,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3aae35d3987ad034091e006e2d70aebe19bce37040d84b0af0a161379f6a8c2b","id":"mean_reversion/0128_0415_brandy","metadata":{"category":"mean_reversion","jsonl_record":248,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a34bea543292796acd3b8c05e455cf362b3ba58d6471ce8f2e8eceac97d7351d","id":"mean_reversion/0129_0426_poker_show","metadata":{"category":"mean_reversion","jsonl_record":249,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5ebbc63f9ee986f7c7f0b9f7abb57cda7d606e4f667a8ec0f341f2b3de0c11c5","id":"mean_reversion/0130_0468_diff_tf_ma","metadata":{"category":"mean_reversion","jsonl_record":250,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6ae93f0d7791fb8f703124b9924c9220416045b407df548089df656912e0627b","id":"mean_reversion/0131_0470_price_extreme_indicator","metadata":{"category":"mean_reversion","jsonl_record":251,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fa302b64e8a6f7efc52e442247f3220f4562dff13490d106ec76e2341ec52afd","id":"mean_reversion/0132_0473_zigzagevgetrofi_ver_1","metadata":{"category":"mean_reversion","jsonl_record":252,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1642a65d38e6627e561cc5ae0cab4d27cf0eef25a37af7a3780be34cdc8930b1","id":"mean_reversion/0133_0481_js_sistem_2","metadata":{"category":"mean_reversion","jsonl_record":253,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8cbe2c52240f0d1f6f3c5f248afab943d833216768d1855567a2dbc903f4aaca","id":"mean_reversion/0134_0488_larry_conners_rsi_2","metadata":{"category":"mean_reversion","jsonl_record":254,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2cc9a49a8ebe87758497b5517d4c449b5279d75fb47ca07cf46005d19f3d0f0","id":"mean_reversion/0135_0513_20_pips_opposite_last_n_hour_trend","metadata":{"category":"mean_reversion","jsonl_record":255,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8eae4ec935474281fb65f4c23a0c93b4acfb805ef6a575c60ba48730a43d8646","id":"mean_reversion/0136_0520_bollinger_bands_rsi","metadata":{"category":"mean_reversion","jsonl_record":256,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1cb218bdf048378deef01656d856aea60131af93282bf75fc2b4971f110acf58","id":"mean_reversion/0137_0600_bollinger_bands_n_positions","metadata":{"category":"mean_reversion","jsonl_record":257,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"31af95cc34faf39f0c8a03eb41bf2e7fb84eeaf9d6298b89c23f3e8903794557","id":"mean_reversion/0138_0600_bollinger_n_positions","metadata":{"category":"mean_reversion","jsonl_record":258,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c2a1d46ea718badda1bf1abfff4613f650eb2e087bbe89624afa65e9be1919da","id":"mean_reversion/0139_0603_rsi_and_bollinger","metadata":{"category":"mean_reversion","jsonl_record":259,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1c18698c3f8abed45909512f5f209afff50f742ee8f7c30e5396a6dd4f1f61f5","id":"mean_reversion/0140_0616_bollinger","metadata":{"category":"mean_reversion","jsonl_record":260,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d5e019ea1760826cf072fca8660f14f5475f00b6d0deef6a7682ece0bc595b67","id":"mean_reversion/0141_0621_20prexp_3","metadata":{"category":"mean_reversion","jsonl_record":261,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c66a5f180e169c1a14b0c17107bada7fdc6620e0b0fe26e95897f08e1a0b386e","id":"mean_reversion/0142_0635_ivan","metadata":{"category":"mean_reversion","jsonl_record":262,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2140e3b8a200869f3d49bc071c2caf4bf00166c10f410d72c3ac1a5c428643ad","id":"mean_reversion/0143_0636_exp_threecandles","metadata":{"category":"mean_reversion","jsonl_record":263,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e669a20637defa369e9a80901265f1f95d6529ea68fa91a9138c6ccb99a11bc1","id":"mean_reversion/0144_0639_exp_cgoscillator_x2","metadata":{"category":"mean_reversion","jsonl_record":264,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"35787826110035346a6a594ab0e4ef20b18921b38e9c15add35bab14ef316583","id":"mean_reversion/0145_0652_ma_reverse","metadata":{"category":"mean_reversion","jsonl_record":265,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"41dafd036bd934c789595a398e1d0e355a40643cd25052aa15cf6dff76cc5cfa","id":"mean_reversion/0146_0662_altarius_rsi_stochastic","metadata":{"category":"mean_reversion","jsonl_record":266,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"49cc2cf2acba5859a1c9d2b0c28375b392daec928f228918a197d9dd36fc5f9b","id":"mean_reversion/0147_0673_expbuysellside","metadata":{"category":"mean_reversion","jsonl_record":267,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4db7e6809dd1c981b027a961a0eca9b0f87fa75ae7d93352530ffb3f0d111d10","id":"mean_reversion/0148_0674_exphawaves","metadata":{"category":"mean_reversion","jsonl_record":268,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e25ec7a00ca44e6ac2d2b65dc724282ae5fc67a9f5ba1c1d8e0a15e6eb0a3bcb","id":"mean_reversion/0149_0676_exp_price_position","metadata":{"category":"mean_reversion","jsonl_record":269,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b875f79ed3509b7748540d75028d99d4a512a3114f91137764ecdef8c7f213ed","id":"mean_reversion/0150_0694_10pips_once_a_day_opposite_last_n_hour_trend","metadata":{"category":"mean_reversion","jsonl_record":270,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e406e759d654b9e7073270b4dd2d4b325ac250bcd1ba4ce91c942558449ce16a","id":"mean_reversion/0151_0697_exp_tdi_2_reopen","metadata":{"category":"mean_reversion","jsonl_record":271,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6f39ed430a182e8c6b376c344fea1e2ceb4f0cc80b0904ddc0bffc8ed77bf983","id":"mean_reversion/0152_0707_trend_catcher","metadata":{"category":"mean_reversion","jsonl_record":272,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2dfc0eca5b422f980d0ab8f7920470fb9e2bbd9ebf00026b038bc3440c93a430","id":"mean_reversion/0153_0721_macd_pattern_trader_all","metadata":{"category":"mean_reversion","jsonl_record":273,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ef350cde46c23810cd7dd5da8aa03fb0c346407c4c45a1d4c87b0faadfb1646d","id":"mean_reversion/0154_0723_exp_fractal_mfi","metadata":{"category":"mean_reversion","jsonl_record":274,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f7a7e866ef4c39919256a37a5dd9981f9fe44fab1eee5b358b14f9d66b18a0d5","id":"mean_reversion/0155_0727_ft_billwilliams_trader","metadata":{"category":"mean_reversion","jsonl_record":275,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a491b18449186058220516ef48f4d6f6f2167d28a6feb2d8d5c8bbe7928d0f30","id":"mean_reversion/0156_0730_exp_weight_oscillator","metadata":{"category":"mean_reversion","jsonl_record":276,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"18da89951d38c833348dd00cdd74b4a445522961805f2e5ce490eecf585b732d","id":"mean_reversion/0157_0732_exp_silvertrend_signal_reopen","metadata":{"category":"mean_reversion","jsonl_record":277,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f8ff76fc91ae5dd214126b65b15f1df64cccf060a0f4cc4a6894249914f4811f","id":"mean_reversion/0158_0733_exp_bykovtrend_reopen","metadata":{"category":"mean_reversion","jsonl_record":278,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c1d79c7550497ca243e74fa2ac032f19eac6fdaf8f352735fd2d524fc960e175","id":"mean_reversion/0159_0737_exp_fractal_force_index","metadata":{"category":"mean_reversion","jsonl_record":279,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"af24563b5e52ca8e890b731188a54453576fef814a08a4b3e27c6f0f36efea93","id":"mean_reversion/0160_0741_exp_fractal_adx_cloud","metadata":{"category":"mean_reversion","jsonl_record":280,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e7456a36537cc5f7eb0964263f4cf5045c022dd193a7512147b4dddb382c6943","id":"mean_reversion/0161_0747_exp_fractal_wpr","metadata":{"category":"mean_reversion","jsonl_record":281,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f7409a82c4b263a283852334f3b052e1a4a486c16814a16323c7e2ce5329520b","id":"mean_reversion/0162_0751_bollinger_bands","metadata":{"category":"mean_reversion","jsonl_record":282,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"00bc83fa228d729aa41739ccc8b8b19b36b2efca5be971a41f1ab89a44ef072b","id":"mean_reversion/0163_0752_exp_zonal_trading","metadata":{"category":"mean_reversion","jsonl_record":283,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"87768c41ba4fde4fcd48da8fcce27726a658c66dab4274e021f193328a296458","id":"mean_reversion/0164_0755_exp_colorzerolagmomentum_x2","metadata":{"category":"mean_reversion","jsonl_record":284,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d6f3d4bb0351b1f0023c8f03d35ea80be7a39f59e38da66dab5ec4586c27a62c","id":"mean_reversion/0165_0758_exp_2pbidealma_reopen","metadata":{"category":"mean_reversion","jsonl_record":285,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a6e765e2098487d0c99f6455a05d92348e390b17bfc87d0b2b2637bf2213cf7d","id":"mean_reversion/0166_0760_exp_fishertransform_x2","metadata":{"category":"mean_reversion","jsonl_record":286,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4cfb37a0f7e53ff5d3376feb1954f2331a24016149d7cc3a42dbfa3d4dae719d","id":"mean_reversion/0167_0761_exp_fractal_rsi","metadata":{"category":"mean_reversion","jsonl_record":287,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"27020fa27dbec577053d55efd8c8685cb168a6dd20d733e3322e9136e2a93753","id":"mean_reversion/0168_0768_exp_jbraintrend1stop_reopen","metadata":{"category":"mean_reversion","jsonl_record":288,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"19c86d2d3806430f09f6ba89592facc77b3bd1771da34c839b394e14bfe19baa","id":"mean_reversion/0169_0769_doubleup","metadata":{"category":"mean_reversion","jsonl_record":289,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"79c5d36a43ed9bf722ab6a1f89ad1597e23272c289e28e8ce7f501139614b233","id":"mean_reversion/0170_0771_exp_bezier_reopen","metadata":{"category":"mean_reversion","jsonl_record":290,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ea3774fd40a53d64e653890f8c9b34fa11f5a30d76b9667982b780581a63f320","id":"mean_reversion/0171_0774_exp_fishing","metadata":{"category":"mean_reversion","jsonl_record":291,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7246713f23a0b8b59c5ebfae41620b388c3d2cfc839fa4c629382eeb9d4dabb8","id":"mean_reversion/0172_0775_exp_wpr","metadata":{"category":"mean_reversion","jsonl_record":292,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"34b4e4d49d66854201316c98b13d2567fe8f950c0403a4372dbc21df37116645","id":"mean_reversion/0173_0777_candels_high_open","metadata":{"category":"mean_reversion","jsonl_record":293,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"981d093a76a2a18b08f6c90db46061605c4c767f5903edfbaf89813f2259f128","id":"mean_reversion/0174_0778_exp_mfi","metadata":{"category":"mean_reversion","jsonl_record":294,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3a9824275a698e86c882e1ae2cd33100a8b93d6da180ca7cdadc7a41602c829e","id":"mean_reversion/0175_0779_exp_rsi","metadata":{"category":"mean_reversion","jsonl_record":295,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1a738394e48dcb130600dd0b65cea898e4760090a6da389b13540f62201ef4ae","id":"mean_reversion/0176_0794_exp_3rvi","metadata":{"category":"mean_reversion","jsonl_record":296,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"519110376a2bbc52973b05031c3247908045d151ab687b9251fe618f851cc305","id":"mean_reversion/0176_exp_hans_indicator_cloud_system","metadata":{"category":"mean_reversion","jsonl_record":297,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"92fe0dd5fcd9e943a5a7fde7604e56d153525127bf157c04b6c2b29f5e95710d","id":"mean_reversion/0177_0795_exp_3sto","metadata":{"category":"mean_reversion","jsonl_record":298,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d7034a9fdc785573dbc65a80e9742eb181d5f81e5d16148da1683bfe41ee048b","id":"mean_reversion/0178_0814_delta_rsi","metadata":{"category":"mean_reversion","jsonl_record":299,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"50784e10e9092d93b0b642da890f7ce4e6d6f739edf36f7d317d653d92a924ee","id":"mean_reversion/0179_0889_vwap_close","metadata":{"category":"mean_reversion","jsonl_record":300,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dac7ab1b530e036579bb7f83741ad260a2cb520cd3ac930529c234759f74319b","id":"mean_reversion/0180_0907_stepma_nrtr","metadata":{"category":"mean_reversion","jsonl_record":301,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e063eea3119454a3ece0bd9449a8b21994992aab36db222059d492c7a7d54271","id":"mean_reversion/0181_0943_colormetro_wpr","metadata":{"category":"mean_reversion","jsonl_record":302,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"15527a3eac1ddd03200333786422dd9cdcf6ee1dd693911e88acac3fb386f266","id":"mean_reversion/0182_0946_colormetro_stochastic","metadata":{"category":"mean_reversion","jsonl_record":303,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b9fef579e127555552a2bd1e8077cc65c52ba4c1011c372291f4d5956512c343","id":"mean_reversion/0183_0947_colormetro_demarker","metadata":{"category":"mean_reversion","jsonl_record":304,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bd711c8e02ee140e56aa3257a67f5d3fa388112fc3c7292e960dec5248fb5c07","id":"mean_reversion/0184_0949_macd_2","metadata":{"category":"mean_reversion","jsonl_record":305,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"de4d19930079bef34328f9f36b4304e22b29b83233071e53cbf53d16557343bc","id":"mean_reversion/0185_0950_anchoredmomentumcandle","metadata":{"category":"mean_reversion","jsonl_record":306,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bc1a79e9c9cae084ba4ff5cfa1156ac6c1ba46e7cce05df2759238d16b93351e","id":"mean_reversion/0186_0951_kalmanfiltercandle","metadata":{"category":"mean_reversion","jsonl_record":307,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f0fb7693202bd97383c73f3c263a0e78d88ba263daa9d54ff0a5a7f409e330f0","id":"mean_reversion/0187_0952_macdcandle","metadata":{"category":"mean_reversion","jsonl_record":308,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dabb47c93596acb5e32111202c72b3395e6bd5564a39a57cacc4e4e44f86827d","id":"mean_reversion/0188_0953_laguerre_roc","metadata":{"category":"mean_reversion","jsonl_record":309,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2af237fa2b1e141dda935936b206d3311927c69e4bf614fba815b51d47b4541d","id":"mean_reversion/0189_0955_i_gap","metadata":{"category":"mean_reversion","jsonl_record":310,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"23fdc360dcef4844e04b178f024ae443b191a31d5a2612d6c993502955bc6ba5","id":"mean_reversion/0190_0959_dots","metadata":{"category":"mean_reversion","jsonl_record":311,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a7895908df721328b2cfb9203e2caeddfba1d47749f62bcdd02576bd3818e5fc","id":"mean_reversion/0191_0960_super_trend","metadata":{"category":"mean_reversion","jsonl_record":312,"mapping_status":"package_only"},"source":"package_only"},{"archetype":"single_data_indicator","content_hash":"a11bca4b06ec1a23fceb7369127ab99c167044e547ceb571056eb3944bad20a4","id":"mean_reversion/0192_0962_momentumcandlesign","metadata":{"category":"mean_reversion","jsonl_record":313,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c96e6bc2bf95958eff6b40543a3d049eb337fed128f2d019dc970d8cb3bda6b","id":"mean_reversion/0193_0968_trixcandle","metadata":{"category":"mean_reversion","jsonl_record":314,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5d56e9e2e4c63623ad842791e9c2dec402e1e8642f707054756fc793a239686","id":"mean_reversion/0194_0970_framacandle","metadata":{"category":"mean_reversion","jsonl_record":315,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1856f1a850de1ecd8e31eb00fde5d1550b1a21c5475038d49264912e9c9986ea","id":"mean_reversion/0195_0974_lsma_angle","metadata":{"category":"mean_reversion","jsonl_record":316,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0bf4103d7d241cdc99886821f3d206c101313bc0edbe49cbcd66de1354f27ae9","id":"mean_reversion/0196_0983_kalmanfilter","metadata":{"category":"mean_reversion","jsonl_record":317,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5b86ad3f22da488b1f663f93a6b016c4e16c2ab4ea1398304a5ad9890786c21","id":"mean_reversion/0197_0990_i_amma","metadata":{"category":"mean_reversion","jsonl_record":318,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"619493cf290663575933c9013489bd403b04fe85b7b943a1003596e4e7ee5cd7","id":"mean_reversion/0198_0994_ianchmom","metadata":{"category":"mean_reversion","jsonl_record":319,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2f10ea845c0cf3c94a429f1eb8043875fa4615c65b1e7fcb5988c4f489e1f95","id":"mean_reversion/0199_1000_colorhma","metadata":{"category":"mean_reversion","jsonl_record":320,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aced5fc87e5a5e4b5cbbe116c0bb4741e58ad9da57554f36a06ab6a5a497511b","id":"mean_reversion/0200_1005_finetuningma","metadata":{"category":"mean_reversion","jsonl_record":321,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4f6b792c104f14d0712006d39ce3683008c45eaa40cb054f42dacbe41c9eabc2","id":"mean_reversion/0201_1119_ma_delta","metadata":{"category":"mean_reversion","jsonl_record":322,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"03acfee907d24605b47bb28fdadffa4408e30f2dfbf6a4aa5955507bf3989c92","id":"mean_reversion/0202_1134_bobsley_ea","metadata":{"category":"mean_reversion","jsonl_record":323,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"36cc253f6cbce205a7d630baea595c3d675c41c36d1cc29763f726a0bbb14884","id":"mean_reversion/0203_1143_kloss","metadata":{"category":"mean_reversion","jsonl_record":324,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"173064bbef5c2b296780d9b450250af16fc2c1753e7b649b2b01a8727be923b4","id":"mean_reversion/0204_1146_t3ma_mtc","metadata":{"category":"mean_reversion","jsonl_record":325,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3fbbc359eb05c1506178cad59315354a5095a43d91f6d25b3521d638c9a9b527","id":"mean_reversion/0205_1149_terminator_v2_0","metadata":{"category":"mean_reversion","jsonl_record":326,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"de2a872d2f4cdac71bfc83333ecb746854519db381deb0a3df86c10f5f68c5a8","id":"mean_reversion/0206_1156_starter","metadata":{"category":"mean_reversion","jsonl_record":327,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a39e37f4ee5feed2b0014b1a6e0e37c894b2384bd827a85d08ce3517f247503e","id":"mean_reversion/0207_1160_up3x1","metadata":{"category":"mean_reversion","jsonl_record":328,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e55c108b4883a260809e4639941550dabc1eea2b21d1af9459ab4b1df8bc5628","id":"mean_reversion/0208_1161_universal_investor","metadata":{"category":"mean_reversion","jsonl_record":329,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3b98bf4c596a6bbbf130d8683187d67700a664b0ac7bc7d62526dbaaba7cfa80","id":"mean_reversion/0209_1163_gpftcpivotlimit","metadata":{"category":"mean_reversion","jsonl_record":330,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0c232ee54b5500b3246dd402067dc183a4a66d22e859bee7251131a3691b2ec5","id":"mean_reversion/0210_1164_gpftc_pivot_stop","metadata":{"category":"mean_reversion","jsonl_record":331,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"22e36a9bdb63029a9fb9dbc1a5494bfcebc3c5f65b33f370da6030d065f43775","id":"mean_reversion/0211_1164_gpftcpivotstop","metadata":{"category":"mean_reversion","jsonl_record":332,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"61efc73f683b35a55019179cfabd7fdce65a2926010f82c03495603a56500ff8","id":"mean_reversion/0212_1168_ea_aml","metadata":{"category":"mean_reversion","jsonl_record":333,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"26454cf0cf089e3198f1b8a3ceb89a1f51ad07a2791534a8d79d25e11b5684f1","id":"mean_reversion/0213_1168_ea_aml","metadata":{"category":"mean_reversion","jsonl_record":334,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d93d763df0e47a8080c2b9d2514ab7c3b94a6bd5351e5462c2ce471db639a90a","id":"mean_reversion/0214_1169_ea_ccit3","metadata":{"category":"mean_reversion","jsonl_record":335,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c2da18c8c239e84aee8a61d17b703bdd4710fb4923b59ee6c2a758c6d5a28fc7","id":"mean_reversion/0215_1172_marsi","metadata":{"category":"mean_reversion","jsonl_record":336,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0cbede4c31d306716bd6e7e16a6e50e1fd80093fadc2e0464fd7d1ed8b929465","id":"mean_reversion/0216_1191_promart","metadata":{"category":"mean_reversion","jsonl_record":337,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dd3b419580a302b20ccdfbbc8446777a85526d2b6cd643c4b82b230a2f2265da","id":"mean_reversion/0217_1200_night_ea","metadata":{"category":"mean_reversion","jsonl_record":338,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5c10756807aa964b61b6c81aa979f3e49a162729de145da830bfa26f16ed4861","id":"mean_reversion/0218_1217_trend_envelopes","metadata":{"category":"mean_reversion","jsonl_record":339,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ee12904ba6c852644b351e53d6de54c4b361330e7d60ef929393eb0efe13e1ed","id":"mean_reversion/0219_1222_color_stoch_nr","metadata":{"category":"mean_reversion","jsonl_record":340,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b812cd3d7e6b3a752ab2983c28dfe9f9c8bb3c9edce1da4ec9e6911d8e0bd5ee","id":"mean_reversion/0220_1224_color_non_lag_dot_macd","metadata":{"category":"mean_reversion","jsonl_record":341,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4e2929fb49c6387b1470e9fb96aa0eea45be6207a75f9da9751f54d79c696a42","id":"mean_reversion/0221_1244_bbands_stop","metadata":{"category":"mean_reversion","jsonl_record":342,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"185dc1e245872ee7071be32a8fe1b980b93822befb1001a9d50b8235f92f96cf","id":"mean_reversion/0222_1281_asimmetric_stoch_nr","metadata":{"category":"mean_reversion","jsonl_record":343,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"03e7208bc7629094ca22c1d5d5d621bd50c6543e56f30b42ac74e67c8fa42b3b","id":"mean_reversion/0223_1282_xma_range_bands","metadata":{"category":"mean_reversion","jsonl_record":344,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4cf32c7193a474145120c9e9346de9d9f16ed8025c1882b78d5e4e5015b83754","id":"mean_reversion/0224_1300_bb_squeeze","metadata":{"category":"mean_reversion","jsonl_record":345,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"61712e80022a34f72294abe4f72d800c39febcccac47a8a498b8efbde416b39e","id":"mean_reversion/0225_1343_three_crows_soldiers_rsi","metadata":{"category":"mean_reversion","jsonl_record":346,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f3c33c55fcd1d537faebbb7933b8e80f48743d002feb03069a975e2e7597bdea","id":"mean_reversion/0226_1344_three_crows_soldiers_mfi","metadata":{"category":"mean_reversion","jsonl_record":347,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2281c2d99fcde7f3aa5f412a17cf68adb53a95d231f726d6e0c4958acf6d2276","id":"mean_reversion/0227_1345_three_crows_soldiers_cci","metadata":{"category":"mean_reversion","jsonl_record":348,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"642bc744644f7dead753e7899dc5a9f8af50d475d89fd02759b9f187aca610da","id":"mean_reversion/0228_1346_three_crows_soldiers_stoch","metadata":{"category":"mean_reversion","jsonl_record":349,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"194da1c3f1625d83b85035b39b999597da10b06041dc080fcb315ad95c434282","id":"mean_reversion/0229_1347_reversal_candles","metadata":{"category":"mean_reversion","jsonl_record":350,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c629ddd30e0a3584bf977515de21a50f281576964f30554340ecfc290a3b67ca","id":"mean_reversion/0230_simple_connorsrsi_sp500","metadata":{"category":"mean_reversion","jsonl_record":351,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e1d61799cc8d29cfadcd2f81491b643f8651b72e7890552864ef8b2cdb395531","id":"mean_reversion/0231_rsi2_double_returns","metadata":{"category":"mean_reversion","jsonl_record":352,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6fb1b0a4d021881ac6fd04f2a0655a1ab0e493cc409b158252f160ca37df377e","id":"mean_reversion/0232_crypto_rsi","metadata":{"category":"mean_reversion","jsonl_record":353,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cec1693818e6454f8f46713f5c90bfc27bb7fd0ff1ad0e009b0f96252cb0a6a2","id":"mean_reversion/0233_improved_rsi_strategy","metadata":{"category":"mean_reversion","jsonl_record":354,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a82d651d2a456e2b059c7b45bf225f1b3f4efba99e0c4cafeb6085139228acce","id":"mean_reversion/0234_0063_multi_divergence_ea","metadata":{"category":"mean_reversion","jsonl_record":355,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a08cd60c4472fb4828ad02be5689ce02063031d55c4d2547b28662c8729719e0","id":"mean_reversion/0235_0143_jmaster_rsi","metadata":{"category":"mean_reversion","jsonl_record":356,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"88ea3bf486a92f83e9c62c81628b8ece3f06b745bcdb2d2c232d69cef08fd083","id":"mean_reversion/0236_0146_rsi_ea_v2","metadata":{"category":"mean_reversion","jsonl_record":357,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"66a56ec58ad4bf636c1b4d1dc2fda8707d696ad6debba1c3a23f9b6962a9ca7d","id":"mean_reversion/0237_0328_aocci","metadata":{"category":"mean_reversion","jsonl_record":358,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a321fb22cc6800b2d12c29828cb32aa22266729b749202c5e75ed1a53cd03dfa","id":"mean_reversion/0238_0369_ea_stochastic","metadata":{"category":"mean_reversion","jsonl_record":359,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a8e9b50ec88f8f4d8b7db1356a9da1983154c2cfd987c3ff6d47809f2cc5ce3a","id":"mean_reversion/0239_0515_kdj_trading_system","metadata":{"category":"mean_reversion","jsonl_record":360,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ea79a28147ca10d53fc699b7aa143279ebdfdf079af60b47b2ac7e4cbf913145","id":"mean_reversion/0240_0516_greentrade","metadata":{"category":"mean_reversion","jsonl_record":361,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"135cc12ab3eaf35b464d4bc7d61e94f1dd15c662ca146d4e8b97c8806216bf2b","id":"mean_reversion/0241_0524_rsi_eraser","metadata":{"category":"mean_reversion","jsonl_record":362,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e2cbc3be1eec5cc1d62b0da228a8a89357fff19577b937cedfc250e63972e597","id":"mean_reversion/0242_0546_anubis","metadata":{"category":"mean_reversion","jsonl_record":363,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6db5cab623212c5066137f49e51c08845e12107187aa03f9ed9e78d10151a5ff","id":"mean_reversion/0243_0565_icci_ima","metadata":{"category":"mean_reversion","jsonl_record":364,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b019578fae24011e28e6b454971e0c9018a2f15ba02d975fe8d17741645d2617","id":"mean_reversion/0244_0583_istochastic_trading","metadata":{"category":"mean_reversion","jsonl_record":365,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b72fb755fb6571a98df2a7afc78c4a27bc8d04347c4b7d298b06012ddb3f75c8","id":"mean_reversion/0245_0622_trade_on_qualified_rsi","metadata":{"category":"mean_reversion","jsonl_record":366,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"46d13f706e8c24b613b5b96c6988526d1359257bda49760834f6b9697d0ee001","id":"mean_reversion/0246_0653_rsi_ea","metadata":{"category":"mean_reversion","jsonl_record":367,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"50d7046fd8fffd181dadfb74b75e852b70e2528563dadf4ebb793eae15be83ab","id":"mean_reversion/0247_0714_cashmachine_5min","metadata":{"category":"mean_reversion","jsonl_record":368,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8fec121f816a8c33baa96d550fa4bee6936e6a9b0016cc63226eff2e7de29b15","id":"mean_reversion/0248_0722_angry_bird_scalping","metadata":{"category":"mean_reversion","jsonl_record":369,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2413e62e35fb5e6b2ee89413d085164eff825d21123873c39bce720c2c612b4b","id":"mean_reversion/0249_0736_exp_rsioma","metadata":{"category":"mean_reversion","jsonl_record":370,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"caad4f4121bc56fcb49992e6bbec407fc79002aa8f84a0a54fb8ef0b75dc0203","id":"mean_reversion/0250_0748_the_mastermind_3","metadata":{"category":"mean_reversion","jsonl_record":371,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"99fb0985254d9918d7e74878a3750de1cb018665ca4d271de8351936b58912e4","id":"mean_reversion/0251_0750_the_mastermind","metadata":{"category":"mean_reversion","jsonl_record":372,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0af7a3231e9ddfe8bb0cffcd2779c4046e3249dcf19b163a3fb44ab11785332d","id":"mean_reversion/0252_0753_stochastic_three_periods","metadata":{"category":"mean_reversion","jsonl_record":373,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"04cde3485f385d3b2e16f6728c8fa9e06462296e4454c0216ed817cea64569bc","id":"mean_reversion/0253_0754_stoch","metadata":{"category":"mean_reversion","jsonl_record":374,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7fc32e8b098f9a842ac493f9a14093a1aa006bb7fa654b8e14f2c350fa48b338","id":"mean_reversion/0254_0783_scalpel_ea","metadata":{"category":"mean_reversion","jsonl_record":375,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b45a3d30318b97ebff7975b1b19aeb327c46f74d4ff626636cd6e883b2bc9de2","id":"mean_reversion/0255_0788_center_of_gravity_candle","metadata":{"category":"mean_reversion","jsonl_record":376,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"71f292a2c7ffc1dcd220d522c44520717284e47b80f73f5453e754233152cb7a","id":"mean_reversion/0256_0798_mastermind_2","metadata":{"category":"mean_reversion","jsonl_record":377,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b82bb868c9f5121a62370e850a5c3f6015f36864146d338e4cff12ad4bef39f8","id":"mean_reversion/0257_0809_mfi_slowdown","metadata":{"category":"mean_reversion","jsonl_record":378,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"54562eab6050978ace286345631a97fe7854d64ec87dd2020d8fbed86538cc1d","id":"mean_reversion/0258_0810_wpr_slowdown","metadata":{"category":"mean_reversion","jsonl_record":379,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b8eb9d08be4cd81a7defe4e98dba92bbe273be8a4c9309f8f9ff5caf9c2d666d","id":"mean_reversion/0259_0811_rsi_slowdown","metadata":{"category":"mean_reversion","jsonl_record":380,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"da17bca80859409642d0f32c1a9fa0cdf10376dbae5e15876eeda2716465a888","id":"mean_reversion/0260_0812_delta_wpr","metadata":{"category":"mean_reversion","jsonl_record":381,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"77444c20dabc0a859d2f5febef1e15f797cf76763b2ba308ddff93f0b0ee9ed7","id":"mean_reversion/0261_0813_delta_mfi","metadata":{"category":"mean_reversion","jsonl_record":382,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b6eb97b6038e8159313c8b2a979e937a1ee82a08b36aa3e77c17fb2223110415","id":"mean_reversion/0262_0860_fisher_org_v1_sign","metadata":{"category":"mean_reversion","jsonl_record":383,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1db501ca7688da4635e0fcde2e2f5c3a5687324d444a2cf9f01026aea03db882","id":"mean_reversion/0263_0861_fisher_org_v1","metadata":{"category":"mean_reversion","jsonl_record":384,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"accf4f64154f59d8b548ab17b60722a0c92653dbcacadce71463b7d1783861d3","id":"mean_reversion/0264_0873_idemarkersign","metadata":{"category":"mean_reversion","jsonl_record":385,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3dd46f2c07bc48724fb8eeb638fda783a3c9eab5bb32c9858bb091293aeb8ac6","id":"mean_reversion/0265_0876_istochkomposter","metadata":{"category":"mean_reversion","jsonl_record":386,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ddd91b36276e832f91f0400671483f9cf84a1b9aec82749ee04e30e4c727afcb","id":"mean_reversion/0266_0878_iwprsign","metadata":{"category":"mean_reversion","jsonl_record":387,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7bb847f3526caac231fd9ceea5f052829ab5faf3ef4aeff3a08daaad945a1a5b","id":"mean_reversion/0267_0879_irsisign","metadata":{"category":"mean_reversion","jsonl_record":388,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c1e9b1bc5fc69a61d43f2642f329004eccaa8fc68c5416b22672cbdddde591bc","id":"mean_reversion/0268_0925_cci_histogram","metadata":{"category":"mean_reversion","jsonl_record":389,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3821f493829e56e583bbfc7990f411684144f3283fdb84d3bf1eb63f7b316fbc","id":"mean_reversion/0269_0930_wpr_histogram","metadata":{"category":"mean_reversion","jsonl_record":390,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"de390ea1b0cca7b481e5879624835d36500aac34bf6314b9c75580571cb325e5","id":"mean_reversion/0270_0931_mfi_histogram","metadata":{"category":"mean_reversion","jsonl_record":391,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a22b73bfeee7b6ec0ffdb98e6987d03420ccaf54e6a278293b051558528763f1","id":"mean_reversion/0271_0932_rsi_histogram","metadata":{"category":"mean_reversion","jsonl_record":392,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2b21a3728237872337f9de60ae6f7d627632daf47048d500f7a01d579fc78e25","id":"mean_reversion/0272_0935_extrem_n","metadata":{"category":"mean_reversion","jsonl_record":393,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0e19a092bb1ae321231517c23da3a210e036cd0d269db52ab0f952e8c6271c65","id":"mean_reversion/0273_1004_force_diversign","metadata":{"category":"mean_reversion","jsonl_record":394,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6e8d62d4fea3f04bb30997c30cb8c2baeb750c270e8be0be47c2e00a23bfe93f","id":"mean_reversion/0274_1012_dig_variation","metadata":{"category":"mean_reversion","jsonl_record":395,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8334b575ecf50f06767495340313f8574156626563896740f34f751e61964be9","id":"mean_reversion/0275_1013_dinapoli_stochastic","metadata":{"category":"mean_reversion","jsonl_record":396,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dd1cbe59da14a892173919bc1e6c509d3126d0765614beac9b90671e304f5d47","id":"mean_reversion/0276_1015_cronex_cci","metadata":{"category":"mean_reversion","jsonl_record":397,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a948323d4c01d01c9451c0de330d6957d85897f1aa75b32934433cb6a267c329","id":"mean_reversion/0277_1016_coppock_hist","metadata":{"category":"mean_reversion","jsonl_record":398,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"342dfa1b87e9e759127f935d50b228b5741181a120ebec8186b70b0e9c5aea91","id":"mean_reversion/0278_1025_color_marsi_trigger","metadata":{"category":"mean_reversion","jsonl_record":399,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d447b9104784b37bd680cd8b84c9e2fce197dfbe51942926a1e4e5df35abb8be","id":"mean_reversion/0279_1031_color_zerolag_rsi_osma","metadata":{"category":"mean_reversion","jsonl_record":400,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"78add83cfe1df7373041a5c1e7a433a3a22c8aead117f610636cd1cd34323262","id":"mean_reversion/0280_1033_color_zerolag_trix_osma","metadata":{"category":"mean_reversion","jsonl_record":401,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f56c651a952e5be42de2e1e1bcee1a08f4363697dacc9ab6a4732878f5d0021c","id":"mean_reversion/0281_1034_center_of_gravity_osma","metadata":{"category":"mean_reversion","jsonl_record":402,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6738b7dddaf084f6fc00bd57103d8519d9074af67a331b7874e3767764cc29e4","id":"mean_reversion/0282_1035_color_zerolag_trix","metadata":{"category":"mean_reversion","jsonl_record":403,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6ee50fc8b42a28a68370f9cacfc9da950ebb272c0d71e39b01b88d92f32f89ef","id":"mean_reversion/0283_1036_color_zerolag_rvi","metadata":{"category":"mean_reversion","jsonl_record":404,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3b9b4f7f10b8ad2b477248a04d38cddc226f6218920be4ea287880e3a469a00b","id":"mean_reversion/0284_1049_hlrsign","metadata":{"category":"mean_reversion","jsonl_record":405,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b25afecce3485d6763082dc8c093bc423d473bcc3d0b8c35ceb602dd486abc34","id":"mean_reversion/0285_1050_leading","metadata":{"category":"mean_reversion","jsonl_record":406,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c2bc0f201ee48e6ba868646b9374407a80e6e5e1e96175a168ebf7a84936b977","id":"mean_reversion/0286_1065_tsi_demarker","metadata":{"category":"mean_reversion","jsonl_record":407,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"83b63940c38f4b7346b6dec259ad1b3189ff99459baceecb5ed63462cfb6afaa","id":"mean_reversion/0287_1068_tsi_wpr","metadata":{"category":"mean_reversion","jsonl_record":408,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"509924361907c6764a1e4d7a3a9729165e0c058ae7602ee145cadc4817ad0a6c","id":"mean_reversion/0288_1070_blauhlm","metadata":{"category":"mean_reversion","jsonl_record":409,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d05c79e9334799116031e5f04919cc0e5d4dd468a7a70d301d5cd2cd9b6ddd9a","id":"mean_reversion/0289_1072_cronex_rsi","metadata":{"category":"mean_reversion","jsonl_record":410,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"37b35b0a274b27ba31a87b1ab51f620bcb2f9c8e588fef7a50db35d412cfd822","id":"mean_reversion/0290_1073_cronex_mfi","metadata":{"category":"mean_reversion","jsonl_record":411,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b0635520afa02a66f01ad0f9cd187ce7543638cbc68c15f530eb4eef0b95bfe0","id":"mean_reversion/0291_1074_blausm_stochastic","metadata":{"category":"mean_reversion","jsonl_record":412,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e31cf928a19b78a586a12482e587880b35a17e0425c9f66b3631105f6678c2a9","id":"mean_reversion/0292_1081_tsi_cci","metadata":{"category":"mean_reversion","jsonl_record":413,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5b28cd37359c5f42c5ede3134172f70b7c7ad08cdbb991a2ec168924a73bb2a3","id":"mean_reversion/0293_1087_cronex_demarker","metadata":{"category":"mean_reversion","jsonl_record":414,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f4796eca18e3ed3d2c74b525d20c0fa95ccf0a1d09b5c623e8787cfd95a4d270","id":"mean_reversion/0294_1090_dynamicrs_c","metadata":{"category":"mean_reversion","jsonl_record":415,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f797baba3b46fc0c03b11c608765f714fd93ba563db4934a3b4d6ee025775d3c","id":"mean_reversion/0295_1092_stochastic_cg_oscillator","metadata":{"category":"mean_reversion","jsonl_record":416,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"77d0d51bc3126c0ec89df7ade26e1bdbe28b80db48ce0e2e0254c30d83043204","id":"mean_reversion/0296_1093_color_tsi_oscillator","metadata":{"category":"mean_reversion","jsonl_record":417,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"297344dc81a8b40b8f5aab5b053de93fbe632264d31e2851af08051c8c25adc8","id":"mean_reversion/0297_1097_fisher_cg_oscillator","metadata":{"category":"mean_reversion","jsonl_record":418,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c43437d2099cf38c8d4dd0194b59ba766d5a078447c011370bf6c78650a7c6fc","id":"mean_reversion/0298_1098_color_jjrsx","metadata":{"category":"mean_reversion","jsonl_record":419,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8880d779d7da6654c338b9e1f180134608e44d9682325d2f904cf563f365a3fb","id":"mean_reversion/0299_1101_slow_stoch","metadata":{"category":"mean_reversion","jsonl_record":420,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aae478501323181358203b2ba1b8a48e3be43a8028570da16428a500f86cfc7a","id":"mean_reversion/0300_1105_rsioma_v2","metadata":{"category":"mean_reversion","jsonl_record":421,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"70d19d1f5662bd637aad6b865559010e052c8a0b037d7f9a8a947c12c2ec0d03","id":"mean_reversion/0301_1108_blau_ergodic","metadata":{"category":"mean_reversion","jsonl_record":422,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"092f518936a09c89f894d8fb5749ac9a4a8c0edbbc958acdbb2d095a17a5f3e2","id":"mean_reversion/0302_1111_blau_ts_stochastic","metadata":{"category":"mean_reversion","jsonl_record":423,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4e4777297260cdd28a762421efd092330a9c0c6d6642497ed154c56cf6115e45","id":"mean_reversion/0303_1112_blau_tstochi","metadata":{"category":"mean_reversion","jsonl_record":424,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e36603994756dbe2997938086a0ac097a1027aa496164eeb5ce37d8f0d6216bc","id":"mean_reversion/0304_1113_blau_ergodic_mdi","metadata":{"category":"mean_reversion","jsonl_record":425,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d80e5691e9264229786af39b5de88dc63a702fc7d3b464e98b18f17799e8a1e1","id":"mean_reversion/0305_1114_blau_csi","metadata":{"category":"mean_reversion","jsonl_record":426,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9d1769f94464ea876e57eed9b35b7e484f8792fc1cc48a22cd7afde466d97163","id":"mean_reversion/0306_1123_renko_line_break_vs_rsi_ea","metadata":{"category":"mean_reversion","jsonl_record":427,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"80851d4f33f97c2dd2a3beba91e6c16dce0f446a0e61d22cf3c840cd73ab00bd","id":"mean_reversion/0307_1148_combo_right","metadata":{"category":"mean_reversion","jsonl_record":428,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cb3d68a9bc1ed79d8b5c839fabbe2b67d55354dbd4ed31904a36fb78c67242dd","id":"mean_reversion/0308_1158_divergence_trader","metadata":{"category":"mean_reversion","jsonl_record":429,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"48344106f7933f4204e8af079d210ccd1b907ae862238e1a7f0a49f50afdd61a","id":"mean_reversion/0309_1215_super_woodies_cci","metadata":{"category":"mean_reversion","jsonl_record":430,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b20126335f219454db2046cc1917588f1771371010b65722071abe092bfdda6b","id":"mean_reversion/0310_1227_dss_bressert","metadata":{"category":"mean_reversion","jsonl_record":431,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c93ac6508dd8dee8620884760d5eaee754d165f56b392f6cb420ba6ac351ccad","id":"mean_reversion/0311_1239_cmo","metadata":{"category":"mean_reversion","jsonl_record":432,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8924e4a66bd729fd3b331fb89c8fb3b402e4f4a1ee75b9eb9c87cceab1973dbe","id":"mean_reversion/0312_1240_marsi_trigger","metadata":{"category":"mean_reversion","jsonl_record":433,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d0f88cb1aec3174c48a9bb5da1c384fa36370a7b6f5039339914ed2bcc1781cc","id":"mean_reversion/0313_1250_extremum","metadata":{"category":"mean_reversion","jsonl_record":434,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"962f12eae4a0772866dc18916a98f0a2c950b8e309ca28f09c06cbd7f7065765","id":"mean_reversion/0314_1256_blaucmi","metadata":{"category":"mean_reversion","jsonl_record":435,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1ffbf02829596a5642104183bb5ddced4ae6bdc3e7328b6b23c072a9b91c1984","id":"mean_reversion/0315_1261_qqecloud","metadata":{"category":"mean_reversion","jsonl_record":436,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9d19e6c8a8abb4a2d63aa68b8ecbb68c98fa6c873268ccbf80e40edd3570538f","id":"mean_reversion/0316_1265_color_coppock","metadata":{"category":"mean_reversion","jsonl_record":437,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"259032c7ba6b85076316749a381ae178263150ad59749c2bcc8290238500b12b","id":"mean_reversion/0317_1278_colorstepxccx","metadata":{"category":"mean_reversion","jsonl_record":438,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c4fe7de67e03d9377b1ad88f187ac2ad776a13990dbd16597e460f7bab08a99","id":"mean_reversion/0318_1279_xrvi","metadata":{"category":"mean_reversion","jsonl_record":439,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fbfa92a42259bc9e72af3f7794908452395d515d171c292d9b57b084089e1d2d","id":"mean_reversion/0319_1286_ultra_wpr","metadata":{"category":"mean_reversion","jsonl_record":440,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"11f1b7484bb20f9179c5891f0c09e036a49d02d577aa3b04ac3f0864c17d53d6","id":"mean_reversion/0320_1296_center_of_gravity","metadata":{"category":"mean_reversion","jsonl_record":441,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3e9a4ffd7c5176e652fd53a5bd362450901130e77cda9f795b2664a5c522fd43","id":"mean_reversion/112_macd_rsi_bb_strategy","metadata":{"category":"mean_reversion","jsonl_record":442,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"4ad80ae4b7e0c6948169a6b534bb35f403abcb198924a52353eac0e0e0e2ec59","id":"mean_reversion/26_boll_strategy","metadata":{"category":"mean_reversion","jsonl_record":443,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ed62a9ccf1fdb6c5a37d99464260effdcedfd2ab1412b6e9973a197954beb4ee","id":"mean_reversion/27_boll_reverser_strategy","metadata":{"category":"mean_reversion","jsonl_record":444,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"9d5695efb88d8d39e788357e5b5b09a27264c5367a8849d64bda7ca2530ef89b","id":"mean_reversion/28_boll_ema_strategy","metadata":{"category":"mean_reversion","jsonl_record":445,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"b41ad7add76637319a7295b8a7056a901910e3c6ed1bd5ca8b6658056acae9d9","id":"mean_reversion/29_boll_kdj_strategy","metadata":{"category":"mean_reversion","jsonl_record":446,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"bbaa7a326579bb20d25b97cdb518d08267e7c12a9b34d1468e1c23b2cded4b2c","id":"mean_reversion/31_bb_adx_strategy","metadata":{"category":"mean_reversion","jsonl_record":447,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a374356bb395d6124cbd6daa67a2c744197d1cdcf513c8c96dda3092480ab94b","id":"mean_reversion/63_pairs_trading_strategy","metadata":{"category":"mean_reversion","jsonl_record":448,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"513677295fd7231ae013e521042e71b2d40941f7f04964b37440981e3d7d134b","id":"mean_reversion/68_bollinger_bands_strategy","metadata":{"category":"mean_reversion","jsonl_record":449,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"3c06548cea62df5b7269a98200cb5fc0a143a94ba743896c4fb344daf53fb32b","id":"mean_reversion/83_pair_trade_bollinger_strategy","metadata":{"category":"mean_reversion","jsonl_record":450,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"6ad1dc0e732252cdcf06e55b10781470a492acc9a9d95444b0cc8124b0e1d8c7","id":"mean_reversion/94_mean_reversion_sma_strategy","metadata":{"category":"mean_reversion","jsonl_record":451,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"e7ec3fef8c29c24dad8907614ae6c77aba3e6b0a477d7a82134cd8a15f14e711","id":"mean_reversion/97_bb_rsi_strategy","metadata":{"category":"mean_reversion","jsonl_record":452,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"89e8da6642b67065f9b1efe02c253b4de1c2184c31858e223045c5094580572f","id":"misc/110_buy_the_dip_strategy","metadata":{"category":"misc","jsonl_record":453,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"e8b8ab2138da2522e1bb0c670963667d5a8ba3e13c712d10f2e114fb0367bf5b","id":"misc/11_sky_garden_strategy","metadata":{"category":"misc","jsonl_record":454,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"46e76afc5333bf21c9c7b884bcd448d9427ce71d4ccfbfe1b53fa76f1cd1fa5c","id":"misc/16_cb_strategy","metadata":{"category":"misc","jsonl_record":455,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"b3b7a635a7ee239ce537377a106605c15e75d898f51fec59e6320d33d8910e54","id":"misc/17_cb_monday_strategy","metadata":{"category":"misc","jsonl_record":456,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"14b4a66a5c37dc2cbb20110bcd4d7b1dade12d4d65bac48e126d9dad76c03020","id":"misc/21_the_strategy","metadata":{"category":"misc","jsonl_record":457,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"3747a3813c93cff594ce3c763bc3d58e0ef1b99ce5a37559b8ec46bc31674c88","id":"misc/32_stochastic_sr_strategy","metadata":{"category":"misc","jsonl_record":458,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"e55f700a258ea28f2e8a94988c52034aeebc3343005f736ef1d2946aacdf956b","id":"misc/38_long_short_strategy","metadata":{"category":"misc","jsonl_record":459,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"b8cab9a6a3154aca722a3736cc1a1c183df36396afb0c099403e19f77817d306","id":"misc/39_btfd_strategy","metadata":{"category":"misc","jsonl_record":460,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"1b5b475fb2c7b0fcf262a88c56e39d4bfd175549dfa7bd8612d93ad19e7d2932","id":"misc/40_cheat_on_open_strategy","metadata":{"category":"misc","jsonl_record":461,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ebf7b88b68811c8c8c9763e233d99b989eb11242280c4917f64c6fbc2b56e65a","id":"misc/46_pinkfish_strategy","metadata":{"category":"misc","jsonl_record":462,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"467e5a3a819d569d798ce619eae776a620dcbcea2b1d8a97dadb542357f40151","id":"misc/47_slippage_strategy","metadata":{"category":"misc","jsonl_record":463,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"974b5b1ae90a6c59aabbb2c39b122d5a5d749a49510fa81820b918b0faa0afc7","id":"misc/49_calmar_analyzer","metadata":{"category":"misc","jsonl_record":464,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"9b01f58f805c503d97c3f09ae6ffc91fb16fd975d6a95007811806a278eccd74","id":"misc/50_vwr_analyzer","metadata":{"category":"misc","jsonl_record":465,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"914b8a52123d031b6e40e0ee858f8d2cc9ae4fa4ac26586d0de82614e1424f84","id":"misc/54_commission_schemes","metadata":{"category":"misc","jsonl_record":466,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"b9be4894d188d6f42e17a580e852fd48c234136207e21d0beb3511c59796af11","id":"misc/55_psar_indicator","metadata":{"category":"misc","jsonl_record":467,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"51234085cc43d485fb1f0b95b5e2a01cc97bb1927d6e961431aa9828eff99a8e","id":"misc/56_sizer_test","metadata":{"category":"misc","jsonl_record":468,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"9c7028a50f9c5ba38c35a04f47158f0b13ccf396443b1676f7199641ed2ce320","id":"misc/57_sharpe_timereturn","metadata":{"category":"misc","jsonl_record":469,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"d25ad07f3ece0a1c2500818d1a783dacf465d00d249faa4b6c435d5d67c65272","id":"misc/60_writer_test","metadata":{"category":"misc","jsonl_record":470,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"0d977ec98c4ee52aa4b6741b650b3adfaaad0be75734d7f04b41c541868fc83b","id":"misc/65_td_sequential_strategy","metadata":{"category":"misc","jsonl_record":471,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"f627ea5e5aa3ce7b1c278a5acd99c7bfdf04303370f41ff9deac0ac0703b54a1","id":"misc/69_stochastic_cross_strategy","metadata":{"category":"misc","jsonl_record":472,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"3d8f5d6a287c6c4413429ed851ec816c3247c1c2dd8fabb7598d7c75d4b5f892","id":"misc/71_double_sevens_strategy","metadata":{"category":"misc","jsonl_record":473,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ac0aa241e7da10e28103ab11d33a48cf55ac23b03eb88a4c18a0030cbd74011e","id":"misc/76_heikin_ashi_strategy","metadata":{"category":"misc","jsonl_record":474,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"64cf7da2b5801bc41b4fcbb974c1da3a85d2894e606167b96082cc3307670578","id":"misc/77_slope_strategy","metadata":{"category":"misc","jsonl_record":475,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"033ab02814b505eab9f242e248dd77488432336f83a85062411ca731da421f57","id":"misc/79_buy_dip_strategy","metadata":{"category":"misc","jsonl_record":476,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"18bb358df48f2a6f76019263c94cd1ee7ae7d2d6460d315838667efbacea5fc3","id":"misc/82_alligator_strategy","metadata":{"category":"misc","jsonl_record":477,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"c33707d26cf308c7422ad28f531bfc929986423b864bf66ae127cb49b96afa7f","id":"misc/84_arjun_bhatia_futures_strategy","metadata":{"category":"misc","jsonl_record":478,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"93155c167a0fe69320c948b9f7d99ee66fbe9efeda77babbb34351111f423b1a","id":"misc/85_up_down_candles_strategy","metadata":{"category":"misc","jsonl_record":479,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"5707bf12df62b0705d4917df16ae5a3cc32b891be5ed7322a939b0480baa8dbf","id":"misc/92_renko_ema_strategy","metadata":{"category":"misc","jsonl_record":480,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"46c571cf08e7140514ed05f167a7f3b546f9ed1c9ce0d69275128d48e7e845b4","id":"momentum/0001_dual_momentum","metadata":{"category":"momentum","jsonl_record":481,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"36b73c1e36b4d4e940079bd432e2fccfe28023626d59baa0cefe47d665986d7a","id":"momentum/0002_gold_dual_momentum","metadata":{"category":"momentum","jsonl_record":482,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"831ef12d9c44f3d557295ee66959914e7c51c89ce840209eb13676fbf0c3b112","id":"momentum/0003_gold_overnight_momentum","metadata":{"category":"momentum","jsonl_record":483,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"060661fce62c1cad53400111b3cf897271f43a5733d13425ef5b4a48063223e1","id":"momentum/0004_gold_momentum_rotation","metadata":{"category":"momentum","jsonl_record":484,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ef2cf1b926a9cb4acc167e6f54552a9468f4a547e51cdded7858e405989e6e8e","id":"momentum/0005_gold_time_series_momentum","metadata":{"category":"momentum","jsonl_record":485,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cdff3b91ce881c52433b824b5e27bbb7ed6a23e18b7844a2b016fc0c60eef81d","id":"momentum/0006_gold_commodity_momentum","metadata":{"category":"momentum","jsonl_record":486,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"65f658bc42b8039aea95c5b89e97008d38d18e11f75d61dee7da16968b413b98","id":"momentum/0007_gold_momentum_strategy","metadata":{"category":"momentum","jsonl_record":487,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"97bc344d26940939409b73c145bc9ebccb8b8972a4477cd0e5f6ecc3ffebb6ae","id":"momentum/0008_gold_real_momentum","metadata":{"category":"momentum","jsonl_record":488,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6c452c8aac079a0762764eabb8bbb1bcdf2b4dfea48d50fd76b8a020accaa0f0","id":"momentum/0009_gold_momentum","metadata":{"category":"momentum","jsonl_record":489,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dff2c795e0e4bcb4cf077e663b6ace92b24ce7f05a081b95550fe0d5a4528734","id":"momentum/0010_momentum_rotation_roc","metadata":{"category":"momentum","jsonl_record":490,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0482b04d9d8390ed403a6df5a3382d3ecd9d0356da6777c7b1ebc9d031065f86","id":"momentum/0011_commodity_momentum","metadata":{"category":"momentum","jsonl_record":491,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"05fa2e2fe3be28fa7fb73318d7cd4ddf9f6d1351002c9ef972641f8a695a3e76","id":"momentum/0012_gold_momentum_rotation","metadata":{"category":"momentum","jsonl_record":492,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"98e758a3d2e0ed5a204bf96be8554c2b2c6c79cb737acd33998faa1f0c30bc77","id":"momentum/0013_gold_time_series_momentum","metadata":{"category":"momentum","jsonl_record":493,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dc07533762f44db686b91f884460b362be65eb38196fa078223b3422e88614f0","id":"momentum/0014_52week_high_effect","metadata":{"category":"momentum","jsonl_record":494,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7fb5a34ff3b31e117bf0a8308f4280e6bb76b837764a8c274e2c94b8b2845c87","id":"momentum/0015_dual_momentum_strategy","metadata":{"category":"momentum","jsonl_record":495,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1de7a3af25f78aaf1571cf91317f17570d4610add20f209f40af92ced910d772","id":"momentum/0016_momentum_strategy_insights","metadata":{"category":"momentum","jsonl_record":496,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8950f349d202e3e0e17456549428edbfc539f78ab09649066d2b7bb4a419b60f","id":"momentum/0017_alpha_momentum","metadata":{"category":"momentum","jsonl_record":497,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4f01ac70a0a4feb19b5fbe856749a42bb1220e120f077aebdd0297b15f09c06e","id":"momentum/0018_simple_momentum","metadata":{"category":"momentum","jsonl_record":498,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d0133071c3e09894a474ea262354f803b553a7969519d1ebde7c3fc69a9855c5","id":"momentum/0019_pca_momentum_quantstrat","metadata":{"category":"momentum","jsonl_record":499,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"435d985b7af3b6b52c6e667771c409c3d31cd04417323332669dc44e725f7b12","id":"momentum/0020_momentum_basic","metadata":{"category":"momentum","jsonl_record":500,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1287c9db468567a7eea5a79c252e97bc4ff2ea9ffa6eb29eab3e4d8ee443dc8d","id":"momentum/0021_calendar_momentum","metadata":{"category":"momentum","jsonl_record":501,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"38505c3f9a56de52691e7c75bc2eee36e8a9d5e60b10ff600f86037286fec739","id":"momentum/0022_dual_momentum_vortex","metadata":{"category":"momentum","jsonl_record":502,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"55166d18c6cc08e6b2751d0d0be5b0a06f49187de25452f4c3c6cbc996244479","id":"momentum/0023_lowvol_momentum_value_momentum","metadata":{"category":"momentum","jsonl_record":503,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c590bbb544125515e4478270c5efdc69f61bc666955db1d424f2b90f34a5654c","id":"momentum/0024_online_momentum","metadata":{"category":"momentum","jsonl_record":504,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a345526b43aea2ac07ce3b88be84e2eb91abe8eb12282c12871b570e37f7bc11","id":"momentum/0025_esg_momentum","metadata":{"category":"momentum","jsonl_record":505,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c2031591f24243a5cb374b063779023e503011a5c979986f3bf78238a1bcd65d","id":"momentum/0026_momentum_combination_strategy","metadata":{"category":"momentum","jsonl_record":506,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"27e6bee5be759b2f131a9840fe6aa62a57213724836a93a1e4ade68641e6d740","id":"momentum/0027_momentum_strategy","metadata":{"category":"momentum","jsonl_record":507,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"031f94592bc42dd0a245c4ec90f41a4288942a98ef04465703ec02d782fedac7","id":"momentum/0028_0145_yesterday_today","metadata":{"category":"momentum","jsonl_record":508,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"41b94271a116247bcd17d8d7f155e1c860e2fa149cba1ae4475608df8b4084b6","id":"momentum/0029_0416_momentum_m15","metadata":{"category":"momentum","jsonl_record":509,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f4a10616208c29a9e5f750b7390fb62d3282f61e15fa3986db7b10105772ccbf","id":"momentum/0030_1029_color_zerolag_momentum_osma","metadata":{"category":"momentum","jsonl_record":510,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9ef8484bc005697832f462e41cbdc3cc74c7146f1cb9b89476c9224779658db3","id":"momentum/0031_1052_elder_impulse","metadata":{"category":"momentum","jsonl_record":511,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aa99e73891ea2e6154c3944cde178225cde9b697fb7873238ac6be81af7002fe","id":"momentum/0032_1054_range_expansion_index","metadata":{"category":"momentum","jsonl_record":512,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"12eba59d6990373236e9f5180f654140d5e04b83ac965433a65c7b3e8ab4d6dc","id":"momentum/0033_1228_anchored_momentum","metadata":{"category":"momentum","jsonl_record":513,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b6b2ec4d13cc2655d1d81b32df89e0e655ed1ee8ee00bf5b04a8d66206f29cf3","id":"momentum/0034_1255_blaucmomentum","metadata":{"category":"momentum","jsonl_record":514,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"64044cc3d1edfca8b2cff67d0227d6b533cdcf339cd57bf63f1950909a65f894","id":"momentum/0035_1274_colormomentum_ama","metadata":{"category":"momentum","jsonl_record":515,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e132ea12744162b7bd57d35a12fa95678143ba5bb5289dff456de8cdd7ace809","id":"momentum/101_rsi_long_short_strategy","metadata":{"category":"momentum","jsonl_record":516,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"bc9cc2c9c1b648661d9cc6798ee267ea1775b915b743e8dc0b2c4fd6f6e4ac7f","id":"momentum/113_rsi_mtf_strategy","metadata":{"category":"momentum","jsonl_record":517,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"6962e394b3416ca31840ffafc9e1b20d0ffbbe2bd8b28d34bedfc20fd5d28e47","id":"momentum/19_index_future_momentum","metadata":{"category":"momentum","jsonl_record":518,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"0fc4b22b182e913784c778e34e78060075c08807ef4464499c826408541aa763","id":"momentum/64_atr_momentum_strategy","metadata":{"category":"momentum","jsonl_record":519,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ee4cfbc16c711a95693318f959e2f5167f5a96aff48bf1c5663daaf50b3eefef","id":"momentum/67_two_period_rsi_strategy","metadata":{"category":"momentum","jsonl_record":520,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ccf5a58add6b5d9b7f075f9989ca5d3ef8429993efe5667748aa8ffed4c9f9f1","id":"momentum/73_simple_rsi_strategy","metadata":{"category":"momentum","jsonl_record":521,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"34733a8c899a4a13eeceb6072c08fa426e57f6b9728d912e3a8c9a13a9ca8c67","id":"momentum/74_macd_gradient_strategy","metadata":{"category":"momentum","jsonl_record":522,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"268aa362c254f13de9948d65ba5c5cbd64263028d3905978fa95fb28c4d28f7f","id":"momentum/78_percent_rank_strategy","metadata":{"category":"momentum","jsonl_record":523,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"f6d8794fc0b208dbee1fad9fd97a7c05add60c831926c34fd4d7b5c9706832f6","id":"momentum/80_rsi_dip_buy_strategy","metadata":{"category":"momentum","jsonl_record":524,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"23cbfe56cdf3e486cdaea8ac5e358497cb82801b3818d374addccd20237630b7","id":"momentum/99_momentum_strategy","metadata":{"category":"momentum","jsonl_record":525,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"37e39419d22fb72ab4fb504a30cce5c8bdf167ad96e30a75bb14bb5b86d65c7d","id":"multi_indicator/102_williams_r_strategy","metadata":{"category":"multi_indicator","jsonl_record":526,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"ebe0ad47968e24df007ce61e84dabf71c4b714ad1a68498d231662a8ab43703a","id":"multi_indicator/103_stochastic_strategy","metadata":{"category":"multi_indicator","jsonl_record":527,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"c310e7aba8b0a47f41994f71b5fc1598b762446e28e1ee86eec3a8b414ae3aa4","id":"multi_indicator/104_cci_strategy","metadata":{"category":"multi_indicator","jsonl_record":528,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"573aff1d617a5235ae0af6c972c5b355457c31b1cba22366163a727ac44893ee","id":"multi_indicator/106_parabolic_sar_strategy","metadata":{"category":"multi_indicator","jsonl_record":529,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"5695cfbd0647c94cba3409f0417136aa5164cb38b83b10fa4e111d96464e34ff","id":"multi_indicator/107_trix_strategy","metadata":{"category":"multi_indicator","jsonl_record":530,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"2e52d4a2255d9a46ef631f36c76dbb0e40c43017432da6730db2be5da608ee42","id":"multi_indicator/109_ultimate_oscillator_strategy","metadata":{"category":"multi_indicator","jsonl_record":531,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"16634ac11e19d6e645fb9c301430fdfcae59a481f37215ee2264d11001937320","id":"multi_indicator/12_abberation_strategy","metadata":{"category":"multi_indicator","jsonl_record":532,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"de545d6bd2df1c5b4f6d713c26fe543b904e6d7a2544ee531768ed6d9c38ea29","id":"multi_indicator/25_abbration_strategy","metadata":{"category":"multi_indicator","jsonl_record":533,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"6f6b46e3c6b9c129d312b731abbaf68aa67bdf6ae2864241f96aa972bebf5dfb","id":"multi_indicator/95_udvd_strategy","metadata":{"category":"multi_indicator","jsonl_record":534,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_indicator_system","content_hash":"fb714e34afb63b5f2c02a680d470850ad9803aa4ad3de5d40e2cabd583f6a44b","id":"multi_indicator_system/0001_0092_kaufman_efficiency_ratio","metadata":{"category":"multi_indicator_system","jsonl_record":535,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"b741c893c4f5bc6a429e02ddf3ebdb37dca4cd0af1f3fab1e68bf3f155290837","id":"multi_indicator_system/0002_silvios_ea_best26","metadata":{"category":"multi_indicator_system","jsonl_record":536,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"5b3e45e038ed5442aba4b5d661b4faeccbb9d6ea090b909a4f5218418443b875","id":"multi_indicator_system/0003_indices_tester","metadata":{"category":"multi_indicator_system","jsonl_record":537,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"9ad6409f182fc457ae3551037391af2352d089fe27769d6d3ee86ed49a3edd94","id":"multi_indicator_system/0004_quant_probability_ea","metadata":{"category":"multi_indicator_system","jsonl_record":538,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"7537c2a128dcfab3d0e558c107b032aa4e1d8493a25965a4ac48c6bd70e0fadf","id":"multi_indicator_system/0005_raymond_cloudy_day_for_ea","metadata":{"category":"multi_indicator_system","jsonl_record":539,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"2a91527b8900fab13da59d6fa33f913a8b6cd68ba5a3ae09e732e08f66c98cc2","id":"multi_indicator_system/0006_ict_concepts_ea","metadata":{"category":"multi_indicator_system","jsonl_record":540,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"fa381e572b66cc59d47f21be40122c4140701063342dea99cd5080250e498b77","id":"multi_indicator_system/0007_day_trading_pamxa","metadata":{"category":"multi_indicator_system","jsonl_record":541,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"a879371c84ddc64399a578c1a4b1345d846bfd60536246eedf5634d4ecc531ef","id":"multi_indicator_system/0008_three_indicators","metadata":{"category":"multi_indicator_system","jsonl_record":542,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"1f15c1e0d7efbc7ece2e21fbaecd12e5ee65189cc6d66a6cab601c958dc92d2d","id":"multi_indicator_system/0009_mamy_system","metadata":{"category":"multi_indicator_system","jsonl_record":543,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"2a4ad059dcb5925059b7eb1798d69b88ae2a1e5474eb8567157f2530ef665119","id":"multi_indicator_system/0010_lego_ea","metadata":{"category":"multi_indicator_system","jsonl_record":544,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"b8f72bc97f4251fa4b8a7a36d29c9be88a1480dca87a87bae1aaceab245e992e","id":"multi_indicator_system/0011_mysystem","metadata":{"category":"multi_indicator_system","jsonl_record":545,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"ee58ded71ead656e7810ecd20af8ca4771efe828e4f6b392e95257d7653db8c5","id":"multi_indicator_system/0012_arttrader_v1_5","metadata":{"category":"multi_indicator_system","jsonl_record":546,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"3aa287dfb688bbb67a4ca103b438a0d4a843c07a297b14bbb588e8ca0e514a27","id":"multi_indicator_system/0013_invest_system_4_5","metadata":{"category":"multi_indicator_system","jsonl_record":547,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"33d2568b919213f7f513ecfaa6d4317da273aa03bd9a2d1effc25a1a3d47c419","id":"multi_indicator_system/0014_steve_cartwright_trader_camel_cci_macd","metadata":{"category":"multi_indicator_system","jsonl_record":548,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"18f5253f97385f80fa51ef8012a57ca75ee4250488c37296dd9547b1d0fbd85b","id":"multi_indicator_system/0015_billy_trading_system","metadata":{"category":"multi_indicator_system","jsonl_record":549,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"ead9ea5d7fa03b9802dd68dc08e98fad696c1126c69f723813ad2b9245c92829","id":"multi_indicator_system/0016_macd_stochastic","metadata":{"category":"multi_indicator_system","jsonl_record":550,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"63820163f2222442e9e7ef6f1b3ff5f5793dd2b792281d79fc552baa9f38b967","id":"multi_indicator_system/0017_harvester","metadata":{"category":"multi_indicator_system","jsonl_record":551,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"951f9d0c9ebb362aab3926abac6c2a192e7332559f45d52840475e2670274a88","id":"multi_indicator_system/0018_expert_rsi_stochastic_ma","metadata":{"category":"multi_indicator_system","jsonl_record":552,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"dd04ecef0e45676bffa3ff7f33a1b4009ed4fded21160c791189a797744bd41a","id":"multi_indicator_system/0019_statistics","metadata":{"category":"multi_indicator_system","jsonl_record":553,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"9568d4f8eaf113d3fe0cfabeb717b2b777dc39a1c53d655614e84a73f2b8ce12","id":"multi_indicator_system/0020_mql5_wizard_macd_parabolic_sar","metadata":{"category":"multi_indicator_system","jsonl_record":554,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"760b291d48171e15b70d3e28a7ece5a827fb620e8cf3ce29383760f7c2fb4c0f","id":"multi_indicator_system/0021_macdcci","metadata":{"category":"multi_indicator_system","jsonl_record":555,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"751b7f70a112e956961f058c4313fd5e4c85ed11ec26ea0acd1f3339ed468806","id":"multi_indicator_system/0022_universum_3_0","metadata":{"category":"multi_indicator_system","jsonl_record":556,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"13f81302ecc0959abae2f6b67d956c35a1d0cfa9d57582ff4a2549bcd63aebfc","id":"multi_indicator_system/0023_mtc_combo","metadata":{"category":"multi_indicator_system","jsonl_record":557,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"728375c302c7ec053071f4f83276328d6c1f1aba42ee1a237d1ef3c7e8c38cef","id":"multi_indicator_system/0024_robotpower_m5_meta4v12","metadata":{"category":"multi_indicator_system","jsonl_record":558,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"150618f5a3d3d37030a7a5b48dcadd429265475b4c6c0372e7305ba2c3924fec","id":"multi_indicator_system/0025_day_trading","metadata":{"category":"multi_indicator_system","jsonl_record":559,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"19f7f4abf0ec543d5c026f68a2fe839010f2d1cb7342fbf2ba0eb520e2f362db","id":"multi_indicator_system/0026_well_martin","metadata":{"category":"multi_indicator_system","jsonl_record":560,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"53692fc6f6982ca531991ce2cfa2a8d669d9f08a14807db8882b27917740beba","id":"multi_indicator_system/0027_sar_adx_sma","metadata":{"category":"multi_indicator_system","jsonl_record":561,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"7050e59d180be67a1f40b125809363778cfdb624b7518f281664eefe991ff1a8","id":"multi_indicator_system/0028_perceptron","metadata":{"category":"multi_indicator_system","jsonl_record":562,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"7f3a0e6994082632ba258cf293eb7c94bf7a872f06c10c564b96160a9f9f013b","id":"multi_indicator_system/0029_binary_wave","metadata":{"category":"multi_indicator_system","jsonl_record":563,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"39fb96aaef2d664596425c48f71e52c6513363b1cef75b9c7dabb978a9b297a3","id":"options/0001_options_expiration_week_strategy","metadata":{"category":"options","jsonl_record":564,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"d715cfa9e3b1576cb1fc6649cbcbd330256a0337fcb7593eb5ce987ba798ad95","id":"options/0002_options_expiration_week","metadata":{"category":"options","jsonl_record":565,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"a564db16680d60310584c0c5e6e660339f2ba40654ef4eeabf6f37f8dc5fae40","id":"options/0003_low_volatility_options","metadata":{"category":"options","jsonl_record":566,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"e439b4d2bd288283b9272702979c82947538384284c18f2a5d4c47dc50e07cd1","id":"options/0004_options_valuation","metadata":{"category":"options","jsonl_record":567,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"86509509bbf34bff5570d8e5f4ca369319bdb32bc678ea0a25d4135226fe8a15","id":"options/0005_gld_put_write_strategy","metadata":{"category":"options","jsonl_record":568,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"f4eba9563d737ad15e176f89bde8ad8063640e8c87fdafd82752a037b52b973b","id":"order_types/05_stop_order_strategy","metadata":{"category":"order_types","jsonl_record":569,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"order_risk","content_hash":"528554ee16b192076f4a75f2ed7a56c727163a239109de71dd8177fbf3b63e76","id":"order_types/37_bracket_order_strategy","metadata":{"category":"order_types","jsonl_record":570,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"order_risk","content_hash":"1fd93ba39ca176bd871b332caa7c4a32df3849b4f4768514f1775221c637544e","id":"order_types/41_oco_order_strategy","metadata":{"category":"order_types","jsonl_record":571,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"order_risk","content_hash":"e0cc148a2af735fe3e4c9a9289065fc1d36060ff18298fde84456c2b439de374","id":"order_types/42_stoptrail_strategy","metadata":{"category":"order_types","jsonl_record":572,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"order_risk","content_hash":"76c655463d2ab16152e14392c84f213ea5f22d6027f872648689d6d00d8bcb76","id":"order_types/43_order_target_strategy","metadata":{"category":"order_types","jsonl_record":573,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"order_risk","content_hash":"c4513257dc406099b5964aaac6bade1c833ff63ba60eaccab1ad46c1a19b1cf2","id":"order_types/61_order_close","metadata":{"category":"order_types","jsonl_record":574,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"7dce6bdfba0b95fae0a139ef9618a850a056793f430ed5a1c7c0e7e45ac660da","id":"others/0001_gap_n_go_fade_from_50_day_low","metadata":{"category":"others","jsonl_record":575,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bb2a6c3760145796bbc1a9b6e8b2c2a96171fcdd667e99c0ca5d1c36a8130f79","id":"others/0002_monday_drop_bounce","metadata":{"category":"others","jsonl_record":576,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b3d5e99647b13da91649d5661721c2f7b7a5c5798fd7ae82fb8180e58f33413c","id":"others/0003_52_week_high_effect","metadata":{"category":"others","jsonl_record":577,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dfca97206989edbff9864e7b8fffec0178c62288092e0820ec574b10db273fea","id":"others/0004_multi_timeframe_trading","metadata":{"category":"others","jsonl_record":578,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1e501916cac7335499a9f64724299a73b6fbd0754a67eedc704e6ad1bf0ba40c","id":"others/0005_gold_aca","metadata":{"category":"others","jsonl_record":579,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a031d832864ab7fe4b9b4f70709e09718be7fd949d0a451fb64feaa35bd20184","id":"others/0006_mixture_model_bottom_prediction","metadata":{"category":"others","jsonl_record":580,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a0728404fa03a4d6469dbc1637f988dcb6edb62922bb532a2d1c981aa4e7f8e1","id":"others/0007_sgv_market_correlation","metadata":{"category":"others","jsonl_record":581,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e927bd266c0c4edebd3bb0901c4b509afd6d68107ba5a25c6a5395fde765ba83","id":"others/0008_market_timing_indicator_comparison","metadata":{"category":"others","jsonl_record":582,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4c9853712cea4efa7dfe569ae8f59b5c46a3b851c37f6785d8554ba61eae9e98","id":"others/0009_strategy_decay_stop","metadata":{"category":"others","jsonl_record":583,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"590d4252511ab3fd70282104b29d52f82ffc119cd307020a82e8cd6282650a98","id":"others/0010_intraday_momentum","metadata":{"category":"others","jsonl_record":584,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6b6265ae070506d573e837c8595cb55584a0e5ec653e42425a08c377cb35db59","id":"others/0011_simple_hedging_time_exit","metadata":{"category":"others","jsonl_record":585,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"367697ef66ae1e40721fb84f437956f66266f4efe5d28ee069c23c498e5f9fed","id":"others/0012_cbi_bullish_signal","metadata":{"category":"others","jsonl_record":586,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6914a1dde92bf0bde6a9b34fd94deb2e687cda3ab793ce59375a2cadde258e6d","id":"others/0013_dividend_aristocrats","metadata":{"category":"others","jsonl_record":587,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"be06075c3ffd43f30e307e557acbe4413433eedadf69407ade94b352377b332d","id":"others/0014_friday_bounce","metadata":{"category":"others","jsonl_record":588,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"47a1f5b81be4c799d05a1b43f8b68b418f41ab7cba02d0b34835b39006f81d6b","id":"others/0015_breadth_divergence","metadata":{"category":"others","jsonl_record":589,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c8ca028c2ab39df849bde8ad7fdd3dbed259450f1d00f10bf7fbebbca3219999","id":"others/0016_january_opex_weak","metadata":{"category":"others","jsonl_record":590,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5d3a296b11894609b17a8569fe049c3be8a8ada47cae98c3621978258915b233","id":"others/0017_omega_ratio","metadata":{"category":"others","jsonl_record":591,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"43271185001bd97a9d60de2d3d92053149fa4448254e7fa47e75b243627b49c9","id":"others/0018_zweig_breadth_thrust","metadata":{"category":"others","jsonl_record":592,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c97416a3da1e63a8a99c846412d821e91b2bafc2ac0b4de69cb1ad06c7378db9","id":"others/0019_pattern_detection","metadata":{"category":"others","jsonl_record":593,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"863dcad18c18df151b7e2126fe0c56f65e3acdd0b1a124a72b9f8bc719cad092","id":"others/0020_fifty_fifty","metadata":{"category":"others","jsonl_record":594,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5b9aba8ddeecf22081bb2d6ceed4b8914474910e7975663e898767743301c074","id":"others/0021_end_of_quarter","metadata":{"category":"others","jsonl_record":595,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7f1ef79c07e8307bdb5c4e4313cf35ba91ebf2e106a5bcbfe53caff1be9b9886","id":"others/0022_top_wobble","metadata":{"category":"others","jsonl_record":596,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c1b4982e024827ec0c0b2ca179b4e7a5e561cdc577846cd97ca800a1ba320bad","id":"others/0023_modified_hikkake","metadata":{"category":"others","jsonl_record":597,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0082c58b6b1b109e3a6afefa4c75a87c6ca4c0d526a5d5798c1d2a1cf7bfdae1","id":"others/0024_rut_spx_divergence","metadata":{"category":"others","jsonl_record":598,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"787258326632608ea12a2d5472d557f29c11f4bd02a1c189bad470b72e7d1fea","id":"others/0025_memorial_week","metadata":{"category":"others","jsonl_record":599,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"49791c47b26ea0258d7f30608f0f160c1da5d73ef34b88bd8cd9d6fbb60e1a35","id":"others/0026_day_of_month_timing","metadata":{"category":"others","jsonl_record":600,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c8ec505ca4ae773cec61cdf3ed4d87d7e9054f7468f2c4374d2b0bbbf2a294d5","id":"others/0027_swing_trading","metadata":{"category":"others","jsonl_record":601,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"29ad135d0aa26f39152164abbbaab43a889324f26ca33a7ffadb9e88d2036218","id":"others/0028_wide_range_pattern","metadata":{"category":"others","jsonl_record":602,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"02e18e3e94d38931d313efe4cf6fabb617d939c0042350c5292f8a317d3450d0","id":"others/0029_sentiment_analysis","metadata":{"category":"others","jsonl_record":603,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7683d28a22ee5e2b6d4b4bdbdd91d6f6a8536cb36b998f3ade0aa8c0b19a6944","id":"others/0030_unfilled_gap","metadata":{"category":"others","jsonl_record":604,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4be98df3d34f4f0b478a5c0d9cf59fe4a449713db9e6d7758aee2e99e31088f4","id":"others/0031_end_of_month_treasury","metadata":{"category":"others","jsonl_record":605,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5221d49d1bc7654720a46ecfcbf4b3cfa4690f63919e2eaff73851ba2e10f091","id":"others/0032_indicator_period_optimization","metadata":{"category":"others","jsonl_record":606,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"40870f2043dc5529266ee05d04ba21733bf698be48e35460199011b250b615b5","id":"others/0033_distressed_stocks","metadata":{"category":"others","jsonl_record":607,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8f1d5c457d0414db155043bb8ea5fc5bc8ad787b700321e95a9e67d59717df0a","id":"others/0034_skew_kurtosis","metadata":{"category":"others","jsonl_record":608,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b2ec4e647364578e19dac18db38125c2340005c74cccf492c774ee0cca0419f6","id":"others/0035_consecutive_down_rebound","metadata":{"category":"others","jsonl_record":609,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1dbb82e1bc6416ba5cb260fd8916879ca6d595e6f610220190dca162ce73ee8c","id":"others/0036_gap_down_in_uptrend","metadata":{"category":"others","jsonl_record":610,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bee2bbe3f783d549e43067124041e16d9492ad2d6115c9e9a052c3a7401cf77b","id":"others/0037_overnight_intraday","metadata":{"category":"others","jsonl_record":611,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8f91e193e931d42095d3ecd7bed78a846b6e7d90ffcbb90b970f135f8c0a468a","id":"others/0038_big_up_month","metadata":{"category":"others","jsonl_record":612,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9b5f9b4e3c1b546c869ea6641f09d27d7c954c82af9606eaa8745140df84c88b","id":"others/0039_exit_rules_testing","metadata":{"category":"others","jsonl_record":613,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"eaf3d380327cf6bc4c34a0e045de566976c7779dcb2410f21ed85624f54b3881","id":"others/0040_gap_down","metadata":{"category":"others","jsonl_record":614,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f9aa7045b6462d9bc10eed88aed68ac6e65323db7a721d3d9d6328a95c8cd915","id":"others/0041_market_neutral","metadata":{"category":"others","jsonl_record":615,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9c5918da0a328f5a8f669a396402c61621f2d51978145fcf60df4893e7944059","id":"others/0042_probability_cones","metadata":{"category":"others","jsonl_record":616,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"93d131d03979966ba763b9b349726729937c14aa66588b89bc3325969579617a","id":"others/0043_dead_cat_bounce","metadata":{"category":"others","jsonl_record":617,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5fca2d7240620b8f081f8f4d00ad25229baf663a15dcbbe21b9b1ef1ab7a7e97","id":"others/0044_cheap_stocks_factor","metadata":{"category":"others","jsonl_record":618,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6a9942b27694e024886d6995fb384642cb4b24bd324db604f64e82d784e40bc2","id":"others/0045_overnight_sentiment","metadata":{"category":"others","jsonl_record":619,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c518ba002fccd90ffa8f88dca2bb917b45579038a025220ba07cb17612d1b52","id":"others/0046_markowitz_optimization","metadata":{"category":"others","jsonl_record":620,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3433a9677cb79ebf7ebc85a2f618e4b5e360d054a780ca19c7bc74ef8a0b7abc","id":"others/0047_global_growth_cycle","metadata":{"category":"others","jsonl_record":621,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"93070bc9393cc78b34444e7f095d2c27a0aa0f736425ff3dd6807e07d148b93a","id":"others/0048_long_short_equity_strategy","metadata":{"category":"others","jsonl_record":622,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b7401fa4b66b9c45839e70a7afe114ab69abf8622fac04c6da9417ade8510e2f","id":"others/0049_january_effect_strategy","metadata":{"category":"others","jsonl_record":623,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c52402b6c5b68107f3ec1267a1ec9ed6603e008dec2dbb0a6368710ed06d4627","id":"others/0050_ulcer_performance_index_strategy","metadata":{"category":"others","jsonl_record":624,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"419f1a711eb38d82c7b19a5304c9fd2783da5536c95cc97eef6d6040018dc573","id":"others/0051_short_term_overbought_downtrend_strategy","metadata":{"category":"others","jsonl_record":625,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ff19c27a3caac88fe891521278ae9767fb659032e253c7b9e2e99e49cb00c7a3","id":"others/0052_kelly_optimal_f_strategy","metadata":{"category":"others","jsonl_record":626,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2246c6e71b3aa521cdf685457ef495983a29d31739d847e4e0f0860a4fdd0e38","id":"others/0053_high_inflation_factor_strategy","metadata":{"category":"others","jsonl_record":627,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f703c6438d160ec9750a3ff2723d448355e82342baa500f431acc197e5670115","id":"others/0054_lrema_strategy","metadata":{"category":"others","jsonl_record":628,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d699534e0a7b9e5dc19126d2521be44b2f261022c50e7fb81a9c01d25d4887ce","id":"others/0055_som_investment_strategy","metadata":{"category":"others","jsonl_record":629,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"86e68048239b04a7dca70fedf16e101fadd16b8e3c52e819ffd4e9600fa15d8c","id":"others/0056_hurst_exponent_strategy","metadata":{"category":"others","jsonl_record":630,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5d829a24519005ba9c8762d3da34ea4a3c489ec4a4ca9e9bac3de13f9637592","id":"others/0057_market_cycles_out_sample_strategy","metadata":{"category":"others","jsonl_record":631,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8b86a6abbe8756c4c259573d7f1aa92d512a5438797fc5a645c924a65b48a55d","id":"others/0058_factor_market_cycles_strategy","metadata":{"category":"others","jsonl_record":632,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"acf56264f07e8045dd420ef666826039c5e5e3823544772b71763f9949fcb626","id":"others/0059_avoid_bear_markets_strategy","metadata":{"category":"others","jsonl_record":633,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"14ac8894fa7640de3afc289e6c6758a6fcca672a58ac9522b80edbd08f3339b3","id":"others/0060_turbulence_index_strategy","metadata":{"category":"others","jsonl_record":634,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"46d6a8dfe8e9b2a60f34deb138e331a437a40d995184546df2eebaa0901cdf4a","id":"others/0061_latent_trading_factors_strategy","metadata":{"category":"others","jsonl_record":635,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"db730afbdd319a04962f3a1e1446c19ca6c537100e469531fc5384275c356336","id":"others/0062_signal_quality_strategy","metadata":{"category":"others","jsonl_record":636,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"467dd5f7dddac585f7bb1a61795719afc14bc788b17961c3657ef70c1de985f7","id":"others/0063_treasury_return_predictability_strategy","metadata":{"category":"others","jsonl_record":637,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"57ef7a7090c497bdb1c4aa8acf3091693b1e3a39ec0d9c9a9ffea8e9bc3e7e76","id":"others/0064_country_valuation_strategy","metadata":{"category":"others","jsonl_record":638,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"30caa2f942a2f5d694bb4cdc8245f4145428e62853e87eb4ece33cb1edca65fe","id":"others/0065_military_expenditure_strategy","metadata":{"category":"others","jsonl_record":639,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dfd256d0aec4385c49349a62e294ab1732aa95a380649cdabd2d3479df1efd21","id":"others/0066_macro_data_strategy","metadata":{"category":"others","jsonl_record":640,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"627237638c35a8cbf0b04db508633c59d810e862fa84eecf5126b5027f8b2803","id":"others/0067_correlation_break_hold_strategy","metadata":{"category":"others","jsonl_record":641,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8124e478e65b53db3216d7fb965ecc681df81411ae76356f8c8f42232c2b43ac","id":"others/0068_first_day_month_strategy","metadata":{"category":"others","jsonl_record":642,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a03f58731104280649a7ae542071b456ce4b5f5ee4996cc45160d665102c0f09","id":"others/0069_leveraged_etf_strategy","metadata":{"category":"others","jsonl_record":643,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"23fc634fd77da9f461bc4dc34d30be44de2c48f71bf343c4b5f640b575d4fa7a","id":"pairs_trading/0001_gold_kalman_filter_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":644,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"7f7d407e3ad17a458311cb168bf558cabe2b74400d2eb2449875d9954d8c21a9","id":"pairs_trading/0002_gold_silver_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":645,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"c9b7448b166f33456e225d5cf59629f6185bde4c456b4bc5d5ef2784c360adfd","id":"pairs_trading/0003_gold_cointegration_spread","metadata":{"category":"pairs_trading","jsonl_record":646,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"4d76c90476a494edb3d4aa31499ab8de6b126892d5a6a1e12d6a6b7b073f3c43","id":"pairs_trading/0004_gold_multi_pair_trading","metadata":{"category":"pairs_trading","jsonl_record":647,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"564d2b373b67330fca14a36996d227e6ef80e287bedac364de74ecaad71102b8","id":"pairs_trading/0005_zero_crossing_pairs","metadata":{"category":"pairs_trading","jsonl_record":648,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"4184342121b395a6a915a94f1cdd760d7f599eb3751fbdd67839f216d25ee6fc","id":"pairs_trading/0006_cointegrated_gold_silver","metadata":{"category":"pairs_trading","jsonl_record":649,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"eeda2a1dbbb816ce3812a3e3addec0e1a971539eddca8cbd010e7b6d99d84484","id":"pairs_trading/0007_copula_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":650,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"4ec70a7e5d3fd8d6dfca37fd6fe68ae0af8f5e5e54438e4fbabc34761e2f5dac","id":"pairs_trading/0008_pairs_trading_strategy","metadata":{"category":"pairs_trading","jsonl_record":651,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"19fa68daca571334143f20c98c2969228f949d34e34751b0cbb2118f315c4b6a","id":"pairs_trading/0009_practical_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":652,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"734bc73b4c9247ec33f7ffa7cb26a305460c1536646cdbf6e8c7402061d12477","id":"pairs_trading/0010_pairs_trading_basic","metadata":{"category":"pairs_trading","jsonl_record":653,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"045e3b409e7522b2b4519b95c7c01d19789fda29bfc1bfcaab1216f0054ec959","id":"pairs_trading/0011_copula_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":654,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"64eaada7eec190407f5fd581c7941495f4eca94cf1373fe579c7f47152b1e5bc","id":"pairs_trading/0012_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":655,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"70940c486d1ae4fdcb8e14fda248a6f373ed9ae45c82854c3ac2a9709286bef5","id":"pairs_trading/0013_distance_pairs_trading","metadata":{"category":"pairs_trading","jsonl_record":656,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"3fc2c1fcec979202ed517d6d751882313b5961d53e805b9d50ca401d90f6daf2","id":"pairs_trading/0014_cad_crude_pairs_strategy","metadata":{"category":"pairs_trading","jsonl_record":657,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"6e57f05959059c5c1c42a1ded38be439f95bb471b2ef0b8af7d5ed9f4451112d","id":"pairs_trading/0015_renko_kagi_pairs_strategy","metadata":{"category":"pairs_trading","jsonl_record":658,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"e7f6fd3c060a60125ac15c7ffa3dbba19dfc6f3d8892ead7b556749f96f32f29","id":"pairs_trading/0016_pairs_trading_strategy","metadata":{"category":"pairs_trading","jsonl_record":659,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"0b9a562a2f815df3dfc4d8e1027d2db57212f60e91319565596c24e2313e2901","id":"pairs_trading/0017_0152_lbs","metadata":{"category":"pairs_trading","jsonl_record":660,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"56219e0207f8e96b7102d52c9604f0fcd0a88d22b3309b2f1acca329d9f7778e","id":"pairs_trading/0018_0548_pending_orders_by_time","metadata":{"category":"pairs_trading","jsonl_record":661,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"0bb95cbc6700eda7eba3d0f494921c26fa2c976c42ad41beb8198a21f20842f5","id":"pairs_trading/0019_0549_ea_trix","metadata":{"category":"pairs_trading","jsonl_record":662,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"0cda3858370065237249c30a8757cec71f8681b3ed03e964c90e351e539174ba","id":"pairs_trading/0020_0765_simplest_hedging_ea","metadata":{"category":"pairs_trading","jsonl_record":663,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"a66c9f5e5e7375bf24ec993cedde4189a79579ecdfebcfbb08dca14a1c53242b","id":"pairs_trading/0021_0924_laguerre","metadata":{"category":"pairs_trading","jsonl_record":664,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"pairs_spread","content_hash":"ce628158459c54aab730863d198036a2aaaa986c817815f3d4c28accdcbdd73c","id":"pairs_trading/0022_1141_vlt_trader","metadata":{"category":"pairs_trading","jsonl_record":665,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"7bc6d43d1ae45c4d3f078ae3a0fd5903d0780f1aa5ef52cd69b58bcb5ddf12b4","id":"pivot_fibonacci_system/0001_mostashar15_pivot","metadata":{"category":"pivot_fibonacci_system","jsonl_record":666,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"597eff318da8c5e9d8a21610a6ed15b480649c5f4bda651da30dcf98cb5311b0","id":"pivot_fibonacci_system/0002_simplepivot","metadata":{"category":"pivot_fibonacci_system","jsonl_record":667,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"f97a9df0df7752710465147c26a1b0fb78520b34d1d05f89deb56efea5c05841","id":"pivot_fibonacci_system/0003_pivotheiken_3","metadata":{"category":"pivot_fibonacci_system","jsonl_record":668,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"43be6ece85cdfdcfea20e579572bd762854aab792868c63cf5cdd50b8679d593","id":"pivot_fibonacci_system/0004_fibo_isar","metadata":{"category":"pivot_fibonacci_system","jsonl_record":669,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"8b5531f372db7a1373ad86d9dc554222f9e4a0188f33b9c41cb06c8ff6a4ec1a","id":"pivot_fibonacci_system/0005_fibocandles","metadata":{"category":"pivot_fibonacci_system","jsonl_record":670,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_indicator_system","content_hash":"c346477f77d80ea5b2747a2ce3deee02bf3784b4aaf648b3f49d069799ab4fca","id":"pivot_fibonacci_system/0006_volatility_pivot","metadata":{"category":"pivot_fibonacci_system","jsonl_record":671,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"405625d7438e26f9b0202edfad3f0017bc8c2b8795192d7454d71de74a2a035f","id":"price_patterns/0001_0033_simple_three_inside_pattern_ea","metadata":{"category":"price_patterns","jsonl_record":672,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"90843f18b0a0c1194c9f20af89131950e449acfc70b989f22be8ebae298ab312","id":"price_patterns/0002_0343_exp_xperiodcandle_x2","metadata":{"category":"price_patterns","jsonl_record":673,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"483193fc7d603d5e23a778a80be4a766ec9ea747f6e9114eb5441b869ade283d","id":"price_patterns/0003_0344_exp_xperiodcandle","metadata":{"category":"price_patterns","jsonl_record":674,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c35fabb480614b9934ad37cb1a72e30662f6315d7b43a05a48bc37ac4aa5e2ee","id":"price_patterns/0004_0380_executor_candles","metadata":{"category":"price_patterns","jsonl_record":675,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f8e64376ef1d9bca4eaa52d7d8499a6760152482eebb4edc998e7a129f5bb430","id":"price_patterns/0005_0495_doji_trader","metadata":{"category":"price_patterns","jsonl_record":676,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d7251607d7f209d56c90812ea51092ec013e80b497206fa742e13a74d4009695","id":"price_patterns/0006_0510_n_candles_v5","metadata":{"category":"price_patterns","jsonl_record":677,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c2f8307dfdd631057366ce25767bd6c74ac69be30882603d9d1a97b57d0b07b8","id":"price_patterns/0007_0581_n_candles_v4","metadata":{"category":"price_patterns","jsonl_record":678,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ccd2ff3f600a635eafcbf9ae34e555d611616ead0db55912a20eeae6340ac98b","id":"price_patterns/0008_0584_n_candles_v3","metadata":{"category":"price_patterns","jsonl_record":679,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"82110fa0d7a9b02a9af4443c194093c85a34d21d12c00d993f3ebf9a9eb081ec","id":"price_patterns/0009_0587_eveningstar","metadata":{"category":"price_patterns","jsonl_record":680,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9bedf86cba2df3538ae10b7a865278d6eb8f68d4e0baf15015f57ab4ee715593","id":"price_patterns/0010_0588_bullish_bearish_engulfing","metadata":{"category":"price_patterns","jsonl_record":681,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"75accc941358ff661937600e917f46e288ffec51e9d9ca9be5086998532c029f","id":"price_patterns/0011_0615_n_candles","metadata":{"category":"price_patterns","jsonl_record":682,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0780f74345a4563315bb32ea85058082ab8b5ae6a5c701354f7add5fa0fdfb3e","id":"price_patterns/0012_0617_candle","metadata":{"category":"price_patterns","jsonl_record":683,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"795e8f024e535173ced3089b6583589c2e9e6d3780b37d20fb7b83c77edab347","id":"price_patterns/0013_0843_candlesticksbw","metadata":{"category":"price_patterns","jsonl_record":684,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f821835e64edee066a38f9790ac8c1a10359f3b11577b68738c044f25443d30e","id":"price_patterns/0014_0923_3linebreak","metadata":{"category":"price_patterns","jsonl_record":685,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"823cf95286421490a1130c5a16d4aa3c3c2c7b924961ff42e127ab6c4119bca6","id":"price_patterns/0015_1204_heiken_ashi","metadata":{"category":"price_patterns","jsonl_record":686,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"376710368dec9e35992f61c18cd86847bf94da7fbae06f9444a2c2e7ef8d568f","id":"price_patterns/0016_1236_2mohlc","metadata":{"category":"price_patterns","jsonl_record":687,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"26dc36b498907d6afaf095bc16dc823ff878f480d27fda1fff51b47414fb0e67","id":"price_patterns/0017_1311_darkcloud_rsi","metadata":{"category":"price_patterns","jsonl_record":688,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"191547134a1d0f02af7354b21ae36c3c7502be572e3171d7c93d38205c81da4d","id":"price_patterns/0018_1312_candle_stoch","metadata":{"category":"price_patterns","jsonl_record":689,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"228a18e5971174a183ae0eca83d13905ad607b491943e2ddf221f15c1ee4e66f","id":"price_patterns/0019_1318_morningstar_cci","metadata":{"category":"price_patterns","jsonl_record":690,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c9c89be1d76f2068566764919405c4723a1ca72d574e05a0027ee5749b89fccd","id":"price_patterns/0020_1319_meetinglines_rsi","metadata":{"category":"price_patterns","jsonl_record":691,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c8e8f48a8a935dba81723df83e4ec969bf7248c640a6a773d3d0de6e6d8ffd7e","id":"price_patterns/0021_1320_meetinglines_mfi","metadata":{"category":"price_patterns","jsonl_record":692,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e3cff2a29f3de279a4cbe653983d8cd745bb05f33ba812dd0d213af20c566b63","id":"price_patterns/0022_1321_meetinglines_cci","metadata":{"category":"price_patterns","jsonl_record":693,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c1b846568a11ffd38f1376b54c8c7d2bfa3f1a64ff3a4db8792dbc18d9e2ba7","id":"price_patterns/0023_1323_hammer_rsi","metadata":{"category":"price_patterns","jsonl_record":694,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0533cc10f1b0f9bf8ca4a5124a93e5392783895b0cc14903eef45a4b0c51a642","id":"price_patterns/0024_1324_hammer_mfi","metadata":{"category":"price_patterns","jsonl_record":695,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6955e4b89486c7e9d0bb76f62640a5cfb37213ff06e6f86a9c7a4061891e87a7","id":"price_patterns/0025_1335_harami_rsi","metadata":{"category":"price_patterns","jsonl_record":696,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d231b74e2c0f004edfc8c747a01db99d69f21dcfc1432ccd2b2e3e004635da32","id":"price_patterns/0026_1336_harami_mfi","metadata":{"category":"price_patterns","jsonl_record":697,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1254fbaf0168d2b3abb609968965d8c41e6f4c66ffbc9dd973db981d7f68c050","id":"price_patterns/0027_1337_harami_cci","metadata":{"category":"price_patterns","jsonl_record":698,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8387f2df71536487540dec9089ee50e2065f8dda5815e545d5a08e42a6651a29","id":"price_patterns/0028_1339_engulfing_rsi","metadata":{"category":"price_patterns","jsonl_record":699,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1ed834de9f998b149933e68662cf9a2cc1d2d91da2d9120adcf2e300274dc1ce","id":"price_patterns/0029_0002_price_action_intraday_trading","metadata":{"category":"price_patterns","jsonl_record":700,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7bca9e5734b1e4cbc0a257d791dc37ee5cd72115e20bc784ca9344ccf9e963ea","id":"price_patterns/0030_0014_simple_price","metadata":{"category":"price_patterns","jsonl_record":701,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1fa5448b026966d0dd6204868a82744245747c03a1e8755bec7b28fdb3d44a6f","id":"price_patterns/0031_0359_price_rollback","metadata":{"category":"price_patterns","jsonl_record":702,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3077952d291da7eac35f7295a95ea31fc42d9f88d485c1f4187e005258260874","id":"price_patterns/0032_0716_10_pips_eurusd","metadata":{"category":"price_patterns","jsonl_record":703,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1ba751943dd16700327141558dbd827af2e9eae0c9e8790197bcf78438e02128","id":"price_patterns/0033_0787_open_ticks","metadata":{"category":"price_patterns","jsonl_record":704,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"80f52b62f9d95a16d00ed912d412da1dac6479133c3f6b4e68b69ea256d3bc1b","id":"price_patterns/0034_1061_exchange_price","metadata":{"category":"price_patterns","jsonl_record":705,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7c6f7ed40e832e3a2743cb166b8ac3df18e2cdd862e5397bb7c2983d418d5752","id":"price_patterns/0035_1077_simplebars","metadata":{"category":"price_patterns","jsonl_record":706,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a2cc78e244bd1aa7ae24be6baba3e7dbbe127e1a16978e1f1c53ad03226c7580","id":"price_patterns/0036_1234_adaptive_renko","metadata":{"category":"price_patterns","jsonl_record":707,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"70d4c8f4b3669ad98fff11b18b79d124b748257c83f58777f37899f4034e42f6","id":"price_patterns/0037_nr7_pattern_breakout","metadata":{"category":"price_patterns","jsonl_record":708,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f6fbec63c3570b1e068bc3ea7643d42a5085a1cf83a16374b507b944f43ed991","id":"price_patterns/0038_nr7_price_breakout_entry","metadata":{"category":"price_patterns","jsonl_record":709,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e2069e303ad3d8039e0f944e2dcb166f7836141a1e0eb4bd4d18d6ea40386bdd","id":"price_patterns/0039_nr7_breakout_filter_exit","metadata":{"category":"price_patterns","jsonl_record":710,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6611e6b63afb61058400daad1b768ec7bf732ba4b0dfc95e2d8afcf4fa8603b8","id":"price_patterns/0040_0195_support_and_resistance_trader","metadata":{"category":"price_patterns","jsonl_record":711,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9ea26498668584ba4fb56b7427f2287db1239cfd2058a1b38d1bf797f9953d90","id":"price_patterns/0041_0469_close_price_fractals","metadata":{"category":"price_patterns","jsonl_record":712,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4c8ae26ac64ab3c400bda87209625147b72c8adfc571f6a81b37485a7a1f769a","id":"price_patterns/0042_0537_e_skoch_pending","metadata":{"category":"price_patterns","jsonl_record":713,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"992679a44e52dddc470714480208b949e88073218f1ac7ab35429321b8653830","id":"price_patterns/0043_0597_fractals_minimum_distance","metadata":{"category":"price_patterns","jsonl_record":714,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e2a355d0210147c3390cc26a1203c360e7d74dd5df9a5fad61d3f5cd49726ea4","id":"price_patterns/0044_0853_darvasboxes_system","metadata":{"category":"price_patterns","jsonl_record":715,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"f41c39c1b5243b520d620a242534bce1a51078831e487e473f8f483c4e4d0ff6","id":"risk_management/0001_probit_risk_modeling_gold","metadata":{"category":"risk_management","jsonl_record":716,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"2e4d00354c3c65289fe18095bc6350bfb833c24c28606d467986accbe638367d","id":"risk_management/0002_gold_multi_market_hedge","metadata":{"category":"risk_management","jsonl_record":717,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"10ad44bde4c40d6b88403437f026524db8e6bc8033e4a6127350d0cae3cc98be","id":"risk_management/0003_tail_risk_ma_warning","metadata":{"category":"risk_management","jsonl_record":718,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"c08c4e759e39edfc4fff798adb0b5096dc3cd9ab4fcfc0b740408991e02bea3e","id":"risk_management/0004_drawdown_protection","metadata":{"category":"risk_management","jsonl_record":719,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"19eb77b2fa7fcb499bb04d92ace214b3c7dc4ee4b7b026a3caa2c19e2215718e","id":"risk_management/0005_bond_risk_premium","metadata":{"category":"risk_management","jsonl_record":720,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"1e4c7c56b5ba70b79b5be3e04c6d4005b5f3bb64e19c7e12d76efe46d551b85b","id":"risk_management/0006_managed_futures_hedge","metadata":{"category":"risk_management","jsonl_record":721,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"d679af84cc604cdd7fdc647da982dff78da0492de171c0228245c2deb3b5b48e","id":"risk_management/0007_crisis_hedge","metadata":{"category":"risk_management","jsonl_record":722,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"f65acf43cc3951da83fbaaa4b6ab616fe3cc1a52982bde93a4bb25c3ed8cf6c6","id":"risk_management/0008_risk_on_risk_off","metadata":{"category":"risk_management","jsonl_record":723,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"68fbdd9d415d3a908926c01e675338f7c5958078f9f0a7214cff3246fb62418a","id":"risk_management/0009_risk_premium_value","metadata":{"category":"risk_management","jsonl_record":724,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"8fec90125b05c7e734f73312bfb8722d9309b712a031d09b6c817fca3ec162ac","id":"risk_management/0010_grid_trading_delta_hedge_strategy","metadata":{"category":"risk_management","jsonl_record":725,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"fd57eb81cccc9c2973c5db7f9e2bdb9fe91ffdb6acc33bc481507428c2644bb2","id":"risk_management/0011_0040_moving_average_crossover","metadata":{"category":"risk_management","jsonl_record":726,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"b289c749728a2bb3d06c062cd463b0d4a8c554cbb75c6b944af86a6184db6155","id":"risk_management/0012_0150_smoothing_average","metadata":{"category":"risk_management","jsonl_record":727,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"97bb87cdbe8659966030e6ffff308c3713d00676c367b9a353c48deb549bd755","id":"risk_management/0013_0300_crossing_moving_average","metadata":{"category":"risk_management","jsonl_record":728,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"f9acfe0d0f5acd2b2b2a07598b94d596e451d760e6c2a971b9f2f7cb347b0dfa","id":"risk_management/0014_0375_modified_moving_averages","metadata":{"category":"risk_management","jsonl_record":729,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"0ce81c15802275287878f4f4440df350196493f3d908f737917a968711fddd10","id":"risk_management/0015_0407_ea_moving_average","metadata":{"category":"risk_management","jsonl_record":730,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"6c46bee999155a265d1eff1df1e9cfc62a804052d75cf1f1bf5593da8b0d09f7","id":"risk_management/0016_0705_moving_average_trade_system","metadata":{"category":"risk_management","jsonl_record":731,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"11db148e04e3d1007a5143ee7b60ad5e8f3b8b5dec1e7c2ed20fdb0e90c8866e","id":"risk_management/0017_1120_moving_average","metadata":{"category":"risk_management","jsonl_record":732,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"9afcaba5e6c7657bba35c3e4722817aedd3cb0d06912a1ba07c6287262a0fe56","id":"risk_management/0018_1273_corrected_average","metadata":{"category":"risk_management","jsonl_record":733,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"order_risk","content_hash":"7a4bb44d90e7e6300c50a647eeaadee86827f5ee945f2067ff07b738e0b202aa","id":"risk_management/0019_1276_movingaverage_fn","metadata":{"category":"risk_management","jsonl_record":734,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"a917e5a4e7e706fddc367527aae3c8903166a1b8a0d07141802fa4bdbce6673a","id":"rotation/0001_gold_asset_rotation","metadata":{"category":"rotation","jsonl_record":735,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"15c0f63ea4a6dc0e3e54610c7e7fa5d3e032c8fb4c90e372f6b5bc7688c1c28d","id":"rotation/0002_safe_haven_rotation","metadata":{"category":"rotation","jsonl_record":736,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"913ad1bb9b3c444f9812ad9c68114d78eb0678444f547ffa605c9527d3cb2841","id":"rotation/0003_timing_bond_rotation","metadata":{"category":"rotation","jsonl_record":737,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"604247182afbfca48b989db2daf653117915a8527e35bdc044bdac06de264465","id":"rotation/0004_monthly_rotation_ranking","metadata":{"category":"rotation","jsonl_record":738,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"a5169d6e25bfd329fa4476f0f267aa8097a6ad636d1c5808e968bf0530f352ab","id":"rotation/0005_three_factor_etf_rotation_strategy","metadata":{"category":"rotation","jsonl_record":739,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_asset_allocation","content_hash":"40720b0980d60e1f23b0922d119b6defe7405a9870558d8bc71a088f186152f5","id":"rotation/0006_rotational_trading_strategy","metadata":{"category":"rotation","jsonl_record":740,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"precomputed_ml","content_hash":"c873df07018f9d29db187a0e123261144156f75bdb5572f92c50e10b18f49cfd","id":"sentiment/22_fear_greed_strategy","metadata":{"category":"sentiment","jsonl_record":741,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"precomputed_ml","content_hash":"8145576ccca95bf437f8f8ca05a602ab5bc07f98fa4754cf0cf9c4f21b9e7879","id":"sentiment/23_put_call_strategy","metadata":{"category":"sentiment","jsonl_record":742,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"precomputed_ml","content_hash":"8bc36dda7dff85d2921b5abdd0a40be0da8f5de59d04ca5d516a47d846c0dd35","id":"sentiment/24_vix_strategy","metadata":{"category":"sentiment","jsonl_record":743,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"precomputed_ml","content_hash":"397d282cfa4b14993c2023bb4ff84da56245f267441c1c6e527322fe2ee7a674","id":"sentiment/33_btc_sentiment_strategy","metadata":{"category":"sentiment","jsonl_record":744,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"8ad8080e0311d9a4fc3d773173ea59f932aa799321e9c20ab532cd55e80a74b7","id":"special/01_premium_rate_strategy","metadata":{"category":"special","jsonl_record":745,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"1a95c55af121869f2fb1550f7ee06d263b9b8a8a2d0cefc2394c74df3e80acbc","id":"special/02_multi_extend_data","metadata":{"category":"special","jsonl_record":746,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"70f1b23f6ec98d9fe8cbd9f6e1fb8c85c5e60ad2b3fd9042ba406d0cd807d39f","id":"special/04_simple_ma_multi_data","metadata":{"category":"special","jsonl_record":747,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"4359d9f56510b95a58066bbe300e7f7ba92293b8217b5ace5572d71c79c41d6a","id":"special/13_fei_strategy","metadata":{"category":"special","jsonl_record":748,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"74547943515cbf44bfcd30cf3ee3334efea5cf3ff922bb9dc83df05712d6bd3e","id":"special/14_hanse123_strategy","metadata":{"category":"special","jsonl_record":749,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"4f980efef12218cabb6e233fa98acdcb4d8c35778802182058174a698a8c0775","id":"special/18_etf_rotation_strategy","metadata":{"category":"special","jsonl_record":750,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"389532f093ffd99ebf7fa9f70576c7d7d1895260ce45cc1788c71ad7ca04631c","id":"special/20_arbitrage_strategy","metadata":{"category":"special","jsonl_record":751,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"4874fa8905179a3a036b6a1e5fe2005fb399dbc56587012816af05e7b4f39d1e","id":"time_based/118_data_replay_bollinger","metadata":{"category":"time_based","jsonl_record":752,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"38539f6ca26e5c3241b2079dc83bbb56f5de4f9f9c704634de27fe1489d02823","id":"time_based/119_data_replay_ema","metadata":{"category":"time_based","jsonl_record":753,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"0838661af09e5413e34f1596c78bde931a41e2198495cd334e1fd5a2c9132247","id":"time_based/120_data_replay_macd","metadata":{"category":"time_based","jsonl_record":754,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"4632d69c533363ffbdfc09b30421995cac98ce39ffd57345812eaa31f732f522","id":"time_based/52_data_pandas","metadata":{"category":"time_based","jsonl_record":755,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"0c0aff12ad8f6bcd486fcce123f932fd8d235d13816ae3bfa04281eb3a4f6f20","id":"time_based/53_data_resample","metadata":{"category":"time_based","jsonl_record":756,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"d59415e19dd9ca7a36e8fe240ece1784558011c2a73af98eb82198e5d4efc36f","id":"time_based/58_data_replay","metadata":{"category":"time_based","jsonl_record":757,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"b327cabbb2f72a9825a9acd0a0af9f4ca9e4e5e1cb754e7de2d0b6723c331f06","id":"time_based/62_timers","metadata":{"category":"time_based","jsonl_record":758,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"multi_timeframe","content_hash":"8ac89def96a6e1a7e18a4736e932e2bd9e94a1ee7bf86dc493f2ec5cd78913d2","id":"time_session_system/0001_simple_pending_orders_time","metadata":{"category":"time_session_system","jsonl_record":759,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"ba2438ee727dff1990d4840361ad5ea84ac62d84e5e045e7a73d391b901b8adc","id":"time_session_system/0002_night_flat_trade","metadata":{"category":"time_session_system","jsonl_record":760,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"8d885f87dd1b9dc2a58c8fc37740e7df089aff9cb402165edc4497dd43850e3a","id":"time_session_system/0003_opentime","metadata":{"category":"time_session_system","jsonl_record":761,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"821433e114325cdedee4a051bd4fb6eb49538b9184a43e3830cfe68f7bc2d82b","id":"time_session_system/0004_21hour","metadata":{"category":"time_session_system","jsonl_record":762,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"bc2a0ea409f4314940111aec3c9e55e6d8f82ffd7ebbb3387fed5f7218f49cbe","id":"time_session_system/0005_opening_closing_on_time_v2","metadata":{"category":"time_session_system","jsonl_record":763,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"684ebe8b75e8172cfd1c26988d60d0ce2ba3633c1c14a96c0bd5fcaa8dd37d9b","id":"time_session_system/0006_times_direction","metadata":{"category":"time_session_system","jsonl_record":764,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"multi_timeframe","content_hash":"395a24337e4d0e52b0ddd794126e3fe5358978cf1d9c43bdb27bb604dae761f8","id":"time_session_system/0007_open_close_on_time","metadata":{"category":"time_session_system","jsonl_record":765,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4b31acfbbde44e41986472e719873b242c7b25619012ebea4a84740ba6e0c43e","id":"trend_following/0001_sma_trend_following","metadata":{"category":"trend_following","jsonl_record":766,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d65ea458e1915c94810dce06b829a98aa233984b993e0f7fc3155452d4f000e8","id":"trend_following/0002_gold_hmm_trend_following","metadata":{"category":"trend_following","jsonl_record":767,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"de7f2b5ee7ccf8d6d78e87f4634ae1a1baa6f8b18f812203eab543837ff758be","id":"trend_following/0003_risk_parity_trend","metadata":{"category":"trend_following","jsonl_record":768,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"055e88b9c02351b38366397580ac13a1aa59111dd7badc5b7823c99eb4adf7c1","id":"trend_following/0004_decomposing_trend_equity","metadata":{"category":"trend_following","jsonl_record":769,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"85fb149879c47d3a9d9fbde39b18ce8edfbaf1faaef4763db00095919be404cc","id":"trend_following/0005_trend_equity_decomposition","metadata":{"category":"trend_following","jsonl_record":770,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"efbbf5a7000d2356d3613524d76e1558bc8f44d441bacc6f1bbf67e6a144b0cc","id":"trend_following/0006_trend_equity_primer","metadata":{"category":"trend_following","jsonl_record":771,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"83ac5188d406088062e1328f6b7391dc0928dc21c0e09e941703a832403e427e","id":"trend_following/0007_trend_equity_strategy","metadata":{"category":"trend_following","jsonl_record":772,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"479f5c8d9258b57a61d13eb496ac6e8d2baa597ae84e44b2531842e798969134","id":"trend_following/0008_trend_following_macro_strategy","metadata":{"category":"trend_following","jsonl_record":773,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"69143665ed28fcbc8a9c3f38dbd5bfa3959b96ec751345614414bbe400169b05","id":"trend_following/0009_crypto_trend_following_strategy","metadata":{"category":"trend_following","jsonl_record":774,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"155795717dc6b52c982be12a3cab07aa2e29a024df61db4e6a6ff8286839b329","id":"trend_following/0010_mean_reversion_trend_following_strategy","metadata":{"category":"trend_following","jsonl_record":775,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"330fbe8018f6a1afa8dae79a91e998978a94ae8e8eb1e3e4cc82e2be11d0ce30","id":"trend_following/0011_fast_trend_following","metadata":{"category":"trend_following","jsonl_record":776,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"43cdf176932e1441eeadadf273046af1b2c2a2596c721cf56726d8e05591e6e8","id":"trend_following/0012_trend_factor","metadata":{"category":"trend_following","jsonl_record":777,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f99cfb73d998dc22c3355507eab9bcfae00825424f6c8a10a86ef5635f9d92d2","id":"trend_following/0013_0003_vr_breakdown_level","metadata":{"category":"trend_following","jsonl_record":778,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2b607289d9ed66e1410261c0221486f58b85f873cf62083167bebff7e435291","id":"trend_following/0014_0022_yy_cross_2_ma","metadata":{"category":"trend_following","jsonl_record":779,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"95a0ab527f11a3f045341c4e4c229c1c29adad2920de4e2984270c2fe369fb26","id":"trend_following/0015_0029_simple_yet_effective_breakout_strategy","metadata":{"category":"trend_following","jsonl_record":780,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aaae52a101ce0e1f45b0f77052d5f1943b9fa9a614f3a2d95948fc1c7b4eaee9","id":"trend_following/0016_0036_breakout_strategy_with_prop_firm_helper_functions","metadata":{"category":"trend_following","jsonl_record":781,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"57d985bc7985816da5ff9a97171500de78594b4cfbedd3681e8a262e10264558","id":"trend_following/0017_0044_wpr_bb_atr","metadata":{"category":"trend_following","jsonl_record":782,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c939b693a0f8423d379a1d637675e0085bd85a58bb9548402789360e06e79ff","id":"trend_following/0018_0061_ema_rsi_risk_ea","metadata":{"category":"trend_following","jsonl_record":783,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e4cd3d00ae041260ece57364541bf6685355bf7fc0c3538872b09a980ca93806","id":"trend_following/0019_0131_cidomo","metadata":{"category":"trend_following","jsonl_record":784,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"76c6ae75f8cf63275fe8bcbcb21b98ece04f56b8aec83956a233d8db2c9af83d","id":"trend_following/0020_0136_ema_lwma_rsi","metadata":{"category":"trend_following","jsonl_record":785,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"94cefc0120629eb30fecb4664df06b4e686c6cde4e78251a6bd4baf3a34bcc18","id":"trend_following/0021_0157_bago_ea","metadata":{"category":"trend_following","jsonl_record":786,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"02e8fe50117d7904b4a7fad611f93d3f4846639d2a68dd4491c399ff11d7fe42","id":"trend_following/0022_0173_rsi_expert_v2_0","metadata":{"category":"trend_following","jsonl_record":787,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f01adf4dbfd54ce574ef4c967243f1558995ec94d704f00b896e116e759950ee","id":"trend_following/0023_0200_xfisher_org_v1","metadata":{"category":"trend_following","jsonl_record":788,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"08e8f133a8dbc163d9bb0655f17a0ef1b0706f13e7d6226cede01dfb2c44dd5f","id":"trend_following/0024_0247_flat_trend_ea","metadata":{"category":"trend_following","jsonl_record":789,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"71e272e203a0d09ce27df4dbcfd34f0254b82172aef993250440e3d5a2626a24","id":"trend_following/0025_0248_ssb5_123","metadata":{"category":"trend_following","jsonl_record":790,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5e72dd9fb452e45ef8c585b17982d4b40f008be5e1501c713749278bccb5431e","id":"trend_following/0026_0252_ravi_ao","metadata":{"category":"trend_following","jsonl_record":791,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"20ef552bf4b0271cfa952badfcd06b130f6c586548451bb58979d14945b6deeb","id":"trend_following/0027_0286_rsi_expert","metadata":{"category":"trend_following","jsonl_record":792,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a1175dc98c9b4c1daeb1ecfacc1383bc73f0ddd66e228b419219440e204fc6b5","id":"trend_following/0028_0303_3sma","metadata":{"category":"trend_following","jsonl_record":793,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"51ceebd7d34dad08f1e036a35308627e0834d91eca9492224ac51ba86dd08360","id":"trend_following/0029_0304_breakdown","metadata":{"category":"trend_following","jsonl_record":794,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2133842772a04a62f656d2a785d36d731741b7386e3e06e8df08d641cc8eb0bb","id":"trend_following/0030_0317_dematus","metadata":{"category":"trend_following","jsonl_record":795,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a157092a8b47d33ac90968382e3c200e1c9772fe359af6f9352c5fd9d0f5e0e4","id":"trend_following/0031_0318_sidus","metadata":{"category":"trend_following","jsonl_record":796,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4d0ba471657045d39a30e28f295452a03d6924c0a7a29e6ceb493f9909f1d0e7","id":"trend_following/0032_0363_two_ma_bunny_cross_expert","metadata":{"category":"trend_following","jsonl_record":797,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e6ae0527bdf2896f60e59e255ba29f5c2024ecaf4bb3d448e0b0bb2eb3ac0ef3","id":"trend_following/0033_0408_universal_macross_ea","metadata":{"category":"trend_following","jsonl_record":798,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d79ce42b8d52cb24657a04717a24460d845bfdf55d0fbdce13c8324c7280e3c6","id":"trend_following/0034_0424_ema_wma_v2","metadata":{"category":"trend_following","jsonl_record":799,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"48d4beb469d55d3239b8e9e6dd4f342e04a9002626ca6d33dd8a06ac6e44bbce","id":"trend_following/0035_0445_ichimoku","metadata":{"category":"trend_following","jsonl_record":800,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5594cdd2547d564e563e83d64b31a5802ac8c331e1612ed4978b9c29f1906f4c","id":"trend_following/0036_0451_macd_ea","metadata":{"category":"trend_following","jsonl_record":801,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9982ab94e6223be78e51975d4d8a95b2bb077341a3fd0d1fe76c173c576e8868","id":"trend_following/0037_0456_channels","metadata":{"category":"trend_following","jsonl_record":802,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d87dbe73920ce29604a95db098bafed50f3965ff74b6fad1f7ce1ed06abe4ecc","id":"trend_following/0038_0459_trend_me_leave_me","metadata":{"category":"trend_following","jsonl_record":803,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d5f3b1152a530c168ec7655780f7ad1165d97f4331e215806c67a8954fa96244","id":"trend_following/0039_0465_time_ea","metadata":{"category":"trend_following","jsonl_record":804,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"653983de96a39536654576d2fe61fd81c36f7a1dac50f101c977525ccf6dd1a1","id":"trend_following/0040_0467_percentage_crossover_channel","metadata":{"category":"trend_following","jsonl_record":805,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a0c4fc49605e77491d3df0c7bffac7932a428bbf3f5040563dab1b0f34c9d44a","id":"trend_following/0041_0500_ema_6_12","metadata":{"category":"trend_following","jsonl_record":806,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b443ebe6e32e18b67b08762b8d8a9a74f12d39fdfd24e85f5eccb10d150c5293","id":"trend_following/0042_0541_flat_channel","metadata":{"category":"trend_following","jsonl_record":807,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"673d99f796e6b6e3da970b0c3242c4bee8fa91210bf6e3eecea967312b0a9ea7","id":"trend_following/0043_0560_trade_in_channel","metadata":{"category":"trend_following","jsonl_record":808,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9fad1c1b6f69b041ddf643d0afa9ab754dbba426c72bcc227b9231ad195aeeda","id":"trend_following/0044_0575_eurusd_breakout","metadata":{"category":"trend_following","jsonl_record":809,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a5ac458715e65df81dbea84b915f7b086937f77fc13296daa811da1822cac5a8","id":"trend_following/0045_0578_rabbitm2","metadata":{"category":"trend_following","jsonl_record":810,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"334a5f16e22b3d66cb71a3170a5ef3eb178d5c204c421f587c6a624ce0f6cb36","id":"trend_following/0046_0579_nevalyashka_breakdown_level","metadata":{"category":"trend_following","jsonl_record":811,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1779f2557144279a98500d89b694c467ad905aafae9c4059d9f9b27f5bb931ba","id":"trend_following/0047_0592_two_ima_cross","metadata":{"category":"trend_following","jsonl_record":812,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6aa47f618944a08cd44f72c1614bee6e3fd67e7ef5b75586323ae5e6fd67718f","id":"trend_following/0048_0624_rsi_trader","metadata":{"category":"trend_following","jsonl_record":813,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"aa119a4dab27a91c8e08f9b8be1dfaac4fe3dce020d282ab66e1591fef1d72af","id":"trend_following/0049_0628_macd","metadata":{"category":"trend_following","jsonl_record":814,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7a994e9ebf6a410513022887b43e686fc15e7a677762c09333666a245addf27c","id":"trend_following/0050_0630_elli","metadata":{"category":"trend_following","jsonl_record":815,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d36de7960f1d1d1734eba480b7058887c247437756e9ff8a032f7ec28f15c88c","id":"trend_following/0051_0631_doublema_crossover","metadata":{"category":"trend_following","jsonl_record":816,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0f0190001a06e5f0f2615ed3ed0708c113c1b0eca78e4aa92e1cb412511b7467","id":"trend_following/0052_0633_ema","metadata":{"category":"trend_following","jsonl_record":817,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1671594496e0f11acd2409003dfa8bef3c325b90c02f686363e8f51e71d7c213","id":"trend_following/0053_0641_currencyprofits","metadata":{"category":"trend_following","jsonl_record":818,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9d0022ba83dad672119b452925a6329aab400866c662570138340861300b02ab","id":"trend_following/0054_0644_brakeout_trader","metadata":{"category":"trend_following","jsonl_record":819,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7ea992a954dab59aa4d0c14510b0b0e1f19d8e3a057cf0393367c0875f81c4f3","id":"trend_following/0055_0646_supportresisttrade","metadata":{"category":"trend_following","jsonl_record":820,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d6af69c3df11d69098d88c72d20425bdd56ce70acd99a04070715678478cb41b","id":"trend_following/0056_0648_get_trend","metadata":{"category":"trend_following","jsonl_record":821,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"39ebe21dd39f7d0b87e7fffbc5d1ebc369807c3ee7cffe7b35ad9ce237bdeee9","id":"trend_following/0057_0649_true_scalper","metadata":{"category":"trend_following","jsonl_record":822,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2b6b3f9e96c2138e6f5773dee4a0d281c4a3d80fd34e3885aa8b0b2cb1326dda","id":"trend_following/0058_0650_ais1","metadata":{"category":"trend_following","jsonl_record":823,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4fb8252da5af5dbf520b82c9563d06366ee1f050f6de1380b2e55e9614e3e080","id":"trend_following/0059_0669_hercules_atc_2006","metadata":{"category":"trend_following","jsonl_record":824,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3c84f61fecf8478d208e4359049272eb364bddb47db8c3e7c3da86c0b6cba044","id":"trend_following/0060_0676_exppriceposition","metadata":{"category":"trend_following","jsonl_record":825,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6cb1b4572b3997cf5af66d9237d58a27b4ef3441c2a4cf649c637e544eca57b9","id":"trend_following/0061_0677_ema_cross","metadata":{"category":"trend_following","jsonl_record":826,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"43cd04148f6df1d02b530d1d8d41c957fdd6816f609510691739f9a74d02e6dd","id":"trend_following/0062_0685_rabbit3","metadata":{"category":"trend_following","jsonl_record":827,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"44b43872ea595785bbd403afa44703a7686bcbcdd617af6f24f1a66bea33abb7","id":"trend_following/0063_0686_ma2cci","metadata":{"category":"trend_following","jsonl_record":828,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"245ca1803e1530b7e6977f6c9660efd2367e958a0c2b467e48b973848b0d85d0","id":"trend_following/0064_0687_adx_ma","metadata":{"category":"trend_following","jsonl_record":829,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6255db4fd34c0da6d70c66ec7c347047add82bbe298ef090d2a50f958ca22c4e","id":"trend_following/0065_0691_polish_layer","metadata":{"category":"trend_following","jsonl_record":830,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4a8c0194295ef0067f686848ffc27ccb63a7471b4d409c4a273071974216f091","id":"trend_following/0066_0695_5_8_macross","metadata":{"category":"trend_following","jsonl_record":831,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8bc11f819b39ee3d0b5ef4150cfd01ed4da14f535904796a4af5e04bc3df7df6","id":"trend_following/0067_0696_kijun_sen_robot","metadata":{"category":"trend_following","jsonl_record":832,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2f238544166d3ce54f8bbdf1938e8ec992b1a21badb9f987e54c363dc21f3585","id":"trend_following/0068_0734_breakdown_level_day","metadata":{"category":"trend_following","jsonl_record":833,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d3f34d37c2017cb9cd05f2a27589b3cf7e1531cd2203c8ee56b71510db2a0e2c","id":"trend_following/0069_0735_ema_wma","metadata":{"category":"trend_following","jsonl_record":834,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6e9b0994b7406cb37071115a1b22aced5767dfd7f344c65ca380047b0d67271c","id":"trend_following/0070_0739_trend_alexcud_v_2","metadata":{"category":"trend_following","jsonl_record":835,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c6bf872eff7f28f59889f9a98395a9e1a5d548c736152d3bcee59795cc16832b","id":"trend_following/0071_0743_ma_cross","metadata":{"category":"trend_following","jsonl_record":836,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"557a3ee04fa9d48eac54b2ed1b2493bb5f8e1d1e7ee5cd754f84f525b5e554cf","id":"trend_following/0072_0759_crossma","metadata":{"category":"trend_following","jsonl_record":837,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"640d1efffc766428fc464595f3856d3c31a206926dd67f379148f991db720d34","id":"trend_following/0073_0772_simple_fx","metadata":{"category":"trend_following","jsonl_record":838,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"720edac1f25b3dd477730af81b1aaf774ed199caf084742c7229b64f19d5820b","id":"trend_following/0074_0776_original_turtle_rules_trader","metadata":{"category":"trend_following","jsonl_record":839,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3aa60332bdda12f4c960aeab2a558f728f801c87088bf480c0dfbc3b8741bf9f","id":"trend_following/0075_0784_dvd_level","metadata":{"category":"trend_following","jsonl_record":840,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1ce243ce15320f756bac237e46f8884de0a81ffc703e7b96f43b9bbf86335a0d","id":"trend_following/0076_0830_fibonacci_retracement","metadata":{"category":"trend_following","jsonl_record":841,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f036326870233c5e1eb8ed2cfefee3f01426f739abe7b19f7b5eae879fe5951d","id":"trend_following/0077_0854_pchannel_system","metadata":{"category":"trend_following","jsonl_record":842,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d65b4fa5a0fe64b7368e49d9cae8b1125260f7f7b95fa5806fe3c7cd2855c3d6","id":"trend_following/0078_0855_donchian_channels_system","metadata":{"category":"trend_following","jsonl_record":843,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fbe6ad16f511a73eea6dbad41ad3347cea62b4d222cbfb624bf2ea68bdfdb031","id":"trend_following/0079_0866_ma_l_world","metadata":{"category":"trend_following","jsonl_record":844,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7e878291b847821d78ee7335488cac462f4b9a511d2bc7aac085b60f63bf0787","id":"trend_following/0080_0868_longshort_expert_macd","metadata":{"category":"trend_following","jsonl_record":845,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5361662368a673169326dc1eaedaa5fe469c8708a4104af748a6dfe374250122","id":"trend_following/0081_0884_roc2_vg","metadata":{"category":"trend_following","jsonl_record":846,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7d3e891f4db9eb83a3d42d81cff0a669bce822b9ffd6f1d5c9bd2ce8b5289d80","id":"trend_following/0082_0887_cci_woodies","metadata":{"category":"trend_following","jsonl_record":847,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d9cffdaae17f9d0715385ccb25ff3e7f4919c7211a366f0e919cdcea0a0cf63e","id":"trend_following/0083_0890_trend_arrows","metadata":{"category":"trend_following","jsonl_record":848,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"41c80a003bb5f4747ad30a3d73e783695d1246d7ceb162b29ffe6110f3092990","id":"trend_following/0084_0905_wprsisignal","metadata":{"category":"trend_following","jsonl_record":849,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e5a3166e8dcd11a541b534cf08f590229a49182a82a6e8927e2ace07bd7fde6d","id":"trend_following/0085_0906_supertrend","metadata":{"category":"trend_following","jsonl_record":850,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d9c564c5d2d5a75e3e11d9d7ea8c876018136b154954716a6407949693cb76dc","id":"trend_following/0086_0909_stalin","metadata":{"category":"trend_following","jsonl_record":851,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"130f20158c75f206a954fa7d2eef8481c152837181105191e3d8f381a1297389","id":"trend_following/0087_0911_sidus","metadata":{"category":"trend_following","jsonl_record":852,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2be2d65b3826de3f0c9fbc158e0c56d77d930405c533159751cc3be8b9c5b907","id":"trend_following/0088_0913_pricechannel_stop","metadata":{"category":"trend_following","jsonl_record":853,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8b5676f088688c7d2f7d02bba85715f705bf31641d6adf87ee3e0e56c2dde788","id":"trend_following/0089_0915_lemansignal","metadata":{"category":"trend_following","jsonl_record":854,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"10cd3ffc66c0dbc625fd00d9d7f7d0713ac3d8505e0716d81ea61c6db4d3a376","id":"trend_following/0090_0921_bykovtrend","metadata":{"category":"trend_following","jsonl_record":855,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4e65a35868d22a4479243d333b8f44da567f59e4af4c29b9f6c155fc172dcf88","id":"trend_following/0091_0922_asctrend","metadata":{"category":"trend_following","jsonl_record":856,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c034e4f40846d92857dc63e00bb7ed758c67b453d56ef9eb97e74e4805b683b9","id":"trend_following/0092_0926_stochastic_histogram","metadata":{"category":"trend_following","jsonl_record":857,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d581a6cd0103a0cfb17f676355fdb92a58e13b8fa9ff342218ea7ff16b6655f2","id":"trend_following/0093_0928_rvi_histogram","metadata":{"category":"trend_following","jsonl_record":858,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d63832443620c44c2bd4b37d94753c210aed8121f51427e3b46717334db292db","id":"trend_following/0094_0966_digitalf_t01","metadata":{"category":"trend_following","jsonl_record":859,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"17af3280deb1e32a0c2cd63e18280043d7e25474ce7736b3baf39a08e6567191","id":"trend_following/0095_0972_colorzerolagdemarker","metadata":{"category":"trend_following","jsonl_record":860,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f5a2dfc727dbbf96a9c3d6435949ca93aad7c3e325186d3a88d201882c604c6e","id":"trend_following/0096_0976_laguerre_adx","metadata":{"category":"trend_following","jsonl_record":861,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b2026288aefd473e191e11b2cc7d2ee18519ca53656bb41f332e28e15bd43e02","id":"trend_following/0097_0977_laguerrefilter","metadata":{"category":"trend_following","jsonl_record":862,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5af69882bd4cd00227ba741dd5cbf3241e5ace103073551cbcbe570b883c4002","id":"trend_following/0098_0982_derivative","metadata":{"category":"trend_following","jsonl_record":863,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"698e0cabba6f15d5b6d68a3e682e68130d59aa04155dc999051173b3b59968bf","id":"trend_following/0099_0989_instantaneous_trendfilter","metadata":{"category":"trend_following","jsonl_record":864,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1603f5f6fdca6168f30d72b872f8924bedd43933e4be3ab8ac3626fae34af65b","id":"trend_following/0100_0991_colorzerolaghlr","metadata":{"category":"trend_following","jsonl_record":865,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"124d956c80325883a317be7a9d5412bd2b5d033cd558d14580383024fe3e8ab2","id":"trend_following/0101_0995_i_trend","metadata":{"category":"trend_following","jsonl_record":866,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"718235678871582e45a7ff37d0d5107877081a2f8e62f7271dca9224fb9ca9a7","id":"trend_following/0102_1002_fractalama_mbk","metadata":{"category":"trend_following","jsonl_record":867,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b3bd46ad576afc4fe66e20a194362ec814876e0113510a5ca097e99990abcb4b","id":"trend_following/0103_1011_ema_crossover_signal","metadata":{"category":"trend_following","jsonl_record":868,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"913aeb7ceb75010a82149a5a143b0824229052fc4c5e72275ba948293a62763b","id":"trend_following/0104_1019_color_schaff_wpr_trend_cycle","metadata":{"category":"trend_following","jsonl_record":869,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"83ca13271d79814febe87642e29ce80bd5586d9de6c814f2a409b1d91a590cae","id":"trend_following/0105_1020_color_schaff_trix_trend_cycle","metadata":{"category":"trend_following","jsonl_record":870,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b0e7e8738e3a80660d22113df1cb7064bf53ac1a9348485ca528e8ecdf7697e7","id":"trend_following/0106_1021_color_schaff_rvi_trend_cycle","metadata":{"category":"trend_following","jsonl_record":871,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8c37be0461022f5d665adf7ada0aa06404b9454c12d7a39351c346acb07ccf25","id":"trend_following/0107_1022_color_schaff_rsi_trend_cycle","metadata":{"category":"trend_following","jsonl_record":872,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3bdbb022048450ac6f796957578d946c7fcefd6f296fc95f76f0b4ee38fd9a99","id":"trend_following/0108_1023_color_schaff_momentum_trend_cycle","metadata":{"category":"trend_following","jsonl_record":873,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"91f0dadc335b01bc07d65fa23dfa1b778c7b3bb1fb52bdf847c220a797c01038","id":"trend_following/0109_1024_color_schaff_mfi_trend_cycle","metadata":{"category":"trend_following","jsonl_record":874,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"58269e04a833ae1df47e1199417e60a345f34acc632e6a4a39c036623751208c","id":"trend_following/0110_1039_adx_crossing","metadata":{"category":"trend_following","jsonl_record":875,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"43f9b9283f8b2e59d61b8416cfe005d6afead4eb17f152cd80d69942d72be368","id":"trend_following/0111_1069_jbraintrend1stop","metadata":{"category":"trend_following","jsonl_record":876,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"69f578c4a54051b6e7b7150cb3cca92a45af47519aaaa9175b7346f193450b1a","id":"trend_following/0112_1078_kaufwmacross","metadata":{"category":"trend_following","jsonl_record":877,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"735c688a15c1c1401b9c5d67417cb68ebdf356869550804154afd8ff5acf0946","id":"trend_following/0113_1083_hulltrend","metadata":{"category":"trend_following","jsonl_record":878,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1107abd30ea135680212501032c8261c68f44a00521b232bddd8573898132a5b","id":"trend_following/0114_1085_trendmagic","metadata":{"category":"trend_following","jsonl_record":879,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4e3a402d899651b8ba00e2a7850ac1c19e2affdb82ff1c047ee676a3915b16b8","id":"trend_following/0115_1103_altrtrend_signal_v2_2","metadata":{"category":"trend_following","jsonl_record":880,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"97e4a84bb546d6535e62f02f50e71a5b0764093d19ba02d64a640e7225ba64ef","id":"trend_following/0116_1107_macd_sample","metadata":{"category":"trend_following","jsonl_record":881,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e76a6056de4bb60c6e859b57f4dbafa092611388b1939f423f2c036c18729032","id":"trend_following/0117_1128_macd_waterline_cross_expectator","metadata":{"category":"trend_following","jsonl_record":882,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5c7271659ec13c7caefc2fe344f20b37aab725725e929197d2888c3a06ebf0d4","id":"trend_following/0118_1129_breakout_bars_trend_ea","metadata":{"category":"trend_following","jsonl_record":883,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b400387ceae01ef854e72cd685d7abcf8522cdd711ce683d1e320bbe043f5057","id":"trend_following/0119_1140_ea_malr","metadata":{"category":"trend_following","jsonl_record":884,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cdd721bc724ab8825c2bae2bfc4e27c271e74c53f2e562524b0464531b14795f","id":"trend_following/0120_1159_up3x1_krohabor_d","metadata":{"category":"trend_following","jsonl_record":885,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"915f95b586df58169a52c097ff8fb7c48f1e7df967436f6a0ba176130f22b7c4","id":"trend_following/0121_1162_trendcapture","metadata":{"category":"trend_following","jsonl_record":886,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e9b2d51aa4b38fe603ed94cdb63c66a0e42000673e44e8c01c4d767baf483a26","id":"trend_following/0122_1165_tradechannel","metadata":{"category":"trend_following","jsonl_record":887,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0b387f0338243c1d794d5b591af94ba2acdd84fb601573b1ee03fcd25a98c1c4","id":"trend_following/0123_1166_ma2cci","metadata":{"category":"trend_following","jsonl_record":888,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5f7b745315b631dd21d76c56503a6c7486ad88df75f726c5d3d660b8f652908e","id":"trend_following/0124_1172_ea_marsi","metadata":{"category":"trend_following","jsonl_record":889,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d97cebd000a97e4ee1352fbe44698820a2da38bada226baf492d5c06354af0de","id":"trend_following/0125_1188_2ma_rsi","metadata":{"category":"trend_following","jsonl_record":890,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2cc9cc1a127c24c0e3ad15783a432aa20db4328ec902a8436e4f67b4e6e7a8cf","id":"trend_following/0126_1189_adx_v1","metadata":{"category":"trend_following","jsonl_record":891,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ec1af95bfd365ea82b6f35088cc63a25f2e953dae5a89b163949bd8106e2b8b1","id":"trend_following/0127_1192_bb_dema","metadata":{"category":"trend_following","jsonl_record":892,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0efc5f2f271797c9d3365d710fe6657b644d6424e2fe43578ef01a772c8658f0","id":"trend_following/0128_1193_dual_trix","metadata":{"category":"trend_following","jsonl_record":893,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"21bea6e45dfbb2445091046c85c6ead5053a75097867b743f7194a1ebc25d7ad","id":"trend_following/0129_1201_puria_method","metadata":{"category":"trend_following","jsonl_record":894,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c0531376861c382ce555fa9893f644493e6268a3f215bb8608c0a5f2d6290816","id":"trend_following/0130_1202_rkd_ea","metadata":{"category":"trend_following","jsonl_record":895,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7ac0f527ec68961b9bc3a80b1ee5e2da0f2d5e192bb24c5585971210ea4ea378","id":"trend_following/0131_1210_candle_trend","metadata":{"category":"trend_following","jsonl_record":896,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fbcfff203f40493a8048c19cd178cf21d7e2522630dcb9224daae58df3d92c18","id":"trend_following/0132_1213_mbkasctrend3","metadata":{"category":"trend_following","jsonl_record":897,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"69658494ae0cd3ad2bbf6791f28653b91f9dfdbb3ec29d67650db362bc0bd4e6","id":"trend_following/0133_1219_multitrend_signal_kvn","metadata":{"category":"trend_following","jsonl_record":898,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"190a991d6608d250b85b569c19225ccfbe3e9112642ae36f01955ed7f2365063","id":"trend_following/0134_1220_colortrend_cf","metadata":{"category":"trend_following","jsonl_record":899,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fc355a7d37a48c277c72e6e511e863a40029bb4edfdea57585bb8cf5a898d595","id":"trend_following/0135_1221_color_lemantrend","metadata":{"category":"trend_following","jsonl_record":900,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2f37bc0aac7d98426305ee0c6a25fdc7156d624f830a9ff97502d4e32e62d71","id":"trend_following/0136_1226_adx_smoothed","metadata":{"category":"trend_following","jsonl_record":901,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"75730b33dd74aa2c096f479d84ce18f6cb6573260bfa5238c1ff93334867a9ec","id":"trend_following/0137_1229_vortex","metadata":{"category":"trend_following","jsonl_record":902,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"de1ad19fde6ac5a1a8685f68ff7d0fc92e37c70c458150d7f66db6252121ba28","id":"trend_following/0138_1231_trendvalue","metadata":{"category":"trend_following","jsonl_record":903,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8863399bded66c7b9669dc1f854fa3eb967e80a8c3d6677b302b9c8d9518f802","id":"trend_following/0139_1232_supertrend","metadata":{"category":"trend_following","jsonl_record":904,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d3fce669fc0e56b90a1d8e5ea87fac8cb3b8e12aa565736877669b626a73a0cc","id":"trend_following/0140_1257_atr_trailing","metadata":{"category":"trend_following","jsonl_record":905,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"16f75f5c96fddced47102fc48f33b00eb08d85641df6495e16b1905ac7e9109f","id":"trend_following/0141_1263_trend_continuation","metadata":{"category":"trend_following","jsonl_record":906,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0a11dfec1688ed2092142db1ca71c3e597a979811e4f856173af8e2d02124b65","id":"trend_following/0142_1266_adx_cross_hull_style","metadata":{"category":"trend_following","jsonl_record":907,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b10c72bdb01cda4ab53826ce3b37dcf9d1252625278601145e739be6cbae85a0","id":"trend_following/0143_1267_color_schaff_trend_cycle","metadata":{"category":"trend_following","jsonl_record":908,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"41d2595719f6dfdf21d128a75fd2c13702742ffe3876c38ed9b6ec221342320a","id":"trend_following/0144_1268_rd_trendtrigger","metadata":{"category":"trend_following","jsonl_record":909,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cc375e0a9413aee5a6884da1db8725ade414581132ad08172c885bcce21815e4","id":"trend_following/0145_1271_vinini_trend_lrma","metadata":{"category":"trend_following","jsonl_record":910,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c75d99e2f77b8ec37272ce528695219960c91faec4dac7173cb769b50183ebf6","id":"trend_following/0146_1272_vinini_trend","metadata":{"category":"trend_following","jsonl_record":911,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7d97a0f83988e3ab88188e0e61210f3a256bb546b094e9916ee10b4b0ce62a8b","id":"trend_following/0147_1275_oshma","metadata":{"category":"trend_following","jsonl_record":912,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"313e2f8e914d04de3676b3da286c18a26b8df9c479c4abc3e90d4e428e0ac67b","id":"trend_following/0148_1283_xma_ishimoku_channel","metadata":{"category":"trend_following","jsonl_record":913,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6bb8505d9185e5f7737a148066dfcdcef34c748d3d44cb3b59b0b94a72672247","id":"trend_following/0149_1285_rsi_cci","metadata":{"category":"trend_following","jsonl_record":914,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4554600c6486e358885795004d48072feaad601c9409f7a46e6db0e0bab75fdb","id":"trend_following/0150_1288_ma_rounding_channel","metadata":{"category":"trend_following","jsonl_record":915,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"37c3ba1ad5364f16cf52f27cbabb837f0ef4d263f94909ca47b6c825eb944042","id":"trend_following/0151_1292_candles_xsmoothed","metadata":{"category":"trend_following","jsonl_record":916,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bd53660339da502f222b0baf532ccb895a361de8885dae5bb5bc469ac0857657","id":"trend_following/0152_1308_engulfing_cci","metadata":{"category":"trend_following","jsonl_record":917,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8cd19d132fca389b94baa5020e175167dafa33b815f48943798951b5bdb647eb","id":"trend_following/0153_1309_engulfing_stoch","metadata":{"category":"trend_following","jsonl_record":918,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"58579e18b045502d41ffbed674bda5a58a111024a1a487a4b47afd5e8ef563ae","id":"trend_following/0154_1310_morningstar_stoch","metadata":{"category":"trend_following","jsonl_record":919,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bae7d58d2be4b68ea3d8489c02faaf8e7feab8984ca7924cad386c9ebe5e5ba4","id":"trend_following/0155_1313_morningstar_rsi","metadata":{"category":"trend_following","jsonl_record":920,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7681013bc78ebeebeb7754210577620667a14bff1b7ae24eb342427dc46dccff","id":"trend_following/0156_1314_morningstar_mfi","metadata":{"category":"trend_following","jsonl_record":921,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"adb234e560a235a20f9023947a4ed5cb9069aa7fde0258fa634afc4ad6778fa1","id":"trend_following/0157_1315_darkcloud_mfi","metadata":{"category":"trend_following","jsonl_record":922,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"28b0096277418014fe8209094485cd59dd40d7ebbf30928f7273d1afe8145d84","id":"trend_following/0158_1316_darkcloud_cci","metadata":{"category":"trend_following","jsonl_record":923,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"53e5e1d2b0cdb8f555458d922dfc926af47bd0ba24d0126707e00534d44e3af4","id":"trend_following/0159_1317_darkcloud_stoch","metadata":{"category":"trend_following","jsonl_record":924,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9815381439f5bc6a95237888c0111cd975218738db9d4cee8c6fdcc91b71b79b","id":"trend_following/0160_1322_meetinglines_stoch","metadata":{"category":"trend_following","jsonl_record":925,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3f38790169bb650dbe6f19a0a1bd7cf0a42be2229401b830490630125c1c238f","id":"trend_following/0161_1325_hammer_cci","metadata":{"category":"trend_following","jsonl_record":926,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ccb3caed9f57e364337393a892700d4fffd9b113effc7f91bac16555e6555623","id":"trend_following/0162_1326_two_ema_time_filter","metadata":{"category":"trend_following","jsonl_record":927,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fa6aad69222f2c8c536c11cedbba5b57e2b7460020e84e4ba9223b679f80fc84","id":"trend_following/0163_1327_macd_cross","metadata":{"category":"trend_following","jsonl_record":928,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4278c25b93e3c219837c19705b531a5524a23b927099cb79bc10b2f234faea71","id":"trend_following/0164_1328_two_ema_cross","metadata":{"category":"trend_following","jsonl_record":929,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ff9551e65e4f74d128f52d7f1b41f1d44221377487190b50b7f9fb8971d320a6","id":"trend_following/0165_1329_price_cross_ma_adx","metadata":{"category":"trend_following","jsonl_record":930,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"48ab86dbbfcc94a3418d58b4cbd137c9f9b26c3f32a798d1960fa4897bd801ee","id":"trend_following/0166_1331_price_cross_ma","metadata":{"category":"trend_following","jsonl_record":931,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b5e028a699171015fbfa4a8c6b16bd1075cbbb7231bd1cf255cf47f499379fa7","id":"trend_following/0167_1334_hammer_stoch","metadata":{"category":"trend_following","jsonl_record":932,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"481df75e4d01a039e0dd16baceb9412167c683b7a42638e40396a5f6d1ac9144","id":"trend_following/0168_1338_harami_stoch","metadata":{"category":"trend_following","jsonl_record":933,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e1dc2cce2b1bca605a5bf0837fd38e2a947c2669e655da40495e881623e8b05b","id":"trend_following/0169_1340_engulfing_mfi","metadata":{"category":"trend_following","jsonl_record":934,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"639b7069e22aa1da1251eee70a868221de10ea71139bd7b31498b6331117180f","id":"trend_following/0170_1348_alligator","metadata":{"category":"trend_following","jsonl_record":935,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"06caedfb1a22870d840d3f0a1802471919188d8d597ebb1c2456da876147ea7d","id":"trend_following/0171_xauusd_trend_pullback","metadata":{"category":"trend_following","jsonl_record":936,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"46f8ca15b9dbba6867528723ee2dc3fbd5e00322e7f3363abddca50cdf27744b","id":"trend_following/0173_stiffness_trend","metadata":{"category":"trend_following","jsonl_record":937,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"191b7f613f4785bdfd5053725efb34bf5e43f6292599308172797fa20a080acd","id":"trend_following/0174_death_cross_reverse","metadata":{"category":"trend_following","jsonl_record":938,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6c9a065a8f52840b235284403ca48e0439b6dc417ea7ea094dd275839f1a8980","id":"trend_following/0175_golden_cross","metadata":{"category":"trend_following","jsonl_record":939,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"89bee3d16db35bcb3646eaff78ae959ffbec0173d7099ad252edd81a68f352bf","id":"trend_following/0176_persistent_rally","metadata":{"category":"trend_following","jsonl_record":940,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"98f83926ca96512a077dfd016a86c6f6d947563924e6065d42409dc4e31aa40d","id":"trend_following/0177_0127_macd_cleaner","metadata":{"category":"trend_following","jsonl_record":941,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7c024232fbc37e97399390aa43c77813b216eda55de88ed20dce02c155225d1b","id":"trend_following/0178_0134_tdsglobal","metadata":{"category":"trend_following","jsonl_record":942,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cca1566c58b88b7f361f13bba5d5b31602333a6846ce888a042e20dce0ff09d7","id":"trend_following/0179_0135_puria_method","metadata":{"category":"trend_following","jsonl_record":943,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ef7abc201efcfa92cf6d305b18c06dfa8f972af3166efcdb34bb79abc1969dd6","id":"trend_following/0180_0137_bulls_bears_eyes_ea","metadata":{"category":"trend_following","jsonl_record":944,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0e657fd2d70c77c77b79511542d0f0bbb0e20b544b51d4715d8f7177a6ab5921","id":"trend_following/0181_0140_macd_no_sample","metadata":{"category":"trend_following","jsonl_record":945,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1702dede3e8218158349f5e3f977206d72cab8f54e31e0a2b0c235de76693f02","id":"trend_following/0182_0151_precipice","metadata":{"category":"trend_following","jsonl_record":946,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4a5f7c1c8f08e6df7d9847b8f217b61698b51b4b9feecfd797589c432334ae32","id":"trend_following/0183_0165_alligator_simple_v1_0","metadata":{"category":"trend_following","jsonl_record":947,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3370c1eca305c2cd5899173f2c082f0171cc340ca2eb89c83960b2db3b0f31aa","id":"trend_following/0184_0175_probe","metadata":{"category":"trend_following","jsonl_record":948,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dba5cf1c90046d879e396563b4dc459975431cc5143aaa58a536cc3cd97c4e20","id":"trend_following/0185_0189_constituents_ea","metadata":{"category":"trend_following","jsonl_record":949,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c1c6969b3d13664d24625f8847f8654f1d33e05c134587efe2432e9b3da25c3c","id":"trend_following/0186_0193_ao_executor","metadata":{"category":"trend_following","jsonl_record":950,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1c125b980d29eb2f1a24928bf71e116d0c7187cc6a68638abfa857a7001cf5da","id":"trend_following/0187_0199_glamtrader","metadata":{"category":"trend_following","jsonl_record":951,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5707e5d029d1f718008e406d1966f405cd86e329ba612c2bca8e3aa5f9989164","id":"trend_following/0188_0239_bars_alligator","metadata":{"category":"trend_following","jsonl_record":952,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bc93cd073f91a193e2edae0f482920ca3cd903647fb6e15e8538c3e33e12eb6f","id":"trend_following/0189_0244_gordago_ea","metadata":{"category":"trend_following","jsonl_record":953,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"629848849aae3b3323e7e5bf7dc4c7ae925fec5b593706c6bab536ae8d7a6190","id":"trend_following/0190_0263_neuronirvamanea_2","metadata":{"category":"trend_following","jsonl_record":954,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d029f5b6b0a594ebfb039fbe160b877df935e8124483e28fcb8898d781ef4ff0","id":"trend_following/0191_0272_ketty","metadata":{"category":"trend_following","jsonl_record":955,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fb33ac9b7d387557dc3eafd51f66333178c28e9369bd428d87f17d995c11645d","id":"trend_following/0192_0305_zigzag_ea","metadata":{"category":"trend_following","jsonl_record":956,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"75ab8bc19426cd22cfeca3a07e62fd548f3dcfac9e05df2b5d07ec637347cf4d","id":"trend_following/0193_0395_expotest","metadata":{"category":"trend_following","jsonl_record":957,"mapping_status":"package_only"},"source":"package_only"},{"archetype":"single_data_indicator","content_hash":"358d3c1da5a34bc27b057df3e653ebafd1f3fbb0b4a798c4336c24490dc21354","id":"trend_following/0194_0417_fx_chaos_scalp","metadata":{"category":"trend_following","jsonl_record":958,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8085e50245f66dc854c5c4233181a755d9c6a63fc188f048d34854b008961fab","id":"trend_following/0195_0454_macd_simple_reshetov","metadata":{"category":"trend_following","jsonl_record":959,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"093cba606c760d8eee1c276e67a301dfba3f88f536efda9f0a4231f7c2772b27","id":"trend_following/0196_0455_umnick_trader","metadata":{"category":"trend_following","jsonl_record":960,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d9d5065bd261b1fbc83d8be326d08ee572aed73072516de7899e148045875a3e","id":"trend_following/0197_0479_arrows_and_curves_ea","metadata":{"category":"trend_following","jsonl_record":961,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"84dc2186290287c5270497d07435844637a77a052e0c75065d6b400e17bb780d","id":"trend_following/0198_0494_sar_trading_v2_0","metadata":{"category":"trend_following","jsonl_record":962,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c38d818b77ff579133c1fb80b013a1f97e47bd9b0b6df928e55133a9ba1555ea","id":"trend_following/0199_0497_ma_shift_puria_method","metadata":{"category":"trend_following","jsonl_record":963,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"34ae3dfe38a76d04fceded6a3027c807d9b0c75d3a69a99d880bb366fc4d6476","id":"trend_following/0200_0498_momo_trades","metadata":{"category":"trend_following","jsonl_record":964,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"22c1d5bff4675c167ecba1df66f7abedcba9c2df6cc5459f2016e53da3259387","id":"trend_following/0201_0499_ichimok2005","metadata":{"category":"trend_following","jsonl_record":965,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fa4e15aeb3cf016e89485780bc9e4ffa5640272971e7dd93deb8a5fdf27c2fe1","id":"trend_following/0202_0509_beergodea","metadata":{"category":"trend_following","jsonl_record":966,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ba8ba584d8b0025f68d3843e4f1eb89ad1eafdd6a4f4959ed7a254c2c75e37ec","id":"trend_following/0203_0525_osmaster_v0","metadata":{"category":"trend_following","jsonl_record":967,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ae6b453bc24ac8788b5b9a7dd814f0c4120f03b7bdfaae330064e4819ed1ebf5","id":"trend_following/0204_0528_js_chaos","metadata":{"category":"trend_following","jsonl_record":968,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9ddb422c7ae1e359b2d956b131cd165fcda2f100021a0ce9b2dab88c900b2901","id":"trend_following/0205_0532_disaster","metadata":{"category":"trend_following","jsonl_record":969,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2efa30fcfa415227d9050a1c8b362a61a7e6c645b58b82de4dff9d674f56c6ae","id":"trend_following/0206_0533_mamacd","metadata":{"category":"trend_following","jsonl_record":970,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"027a7d0d55b0993e752bc3cc612508f6fa6f6246872bcafc96fde10ea880856a","id":"trend_following/0207_0536_nova","metadata":{"category":"trend_following","jsonl_record":971,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2982f58965cce26753f1435bee1f78382926332ccb35b71f6bbd608046aa76a0","id":"trend_following/0208_0539_alligator","metadata":{"category":"trend_following","jsonl_record":972,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"860adfcf97789cbab383d41e11fd2e9d0235b305c4ccc807c1245f308cb1c702","id":"trend_following/0209_0542_vortex_indicator_system","metadata":{"category":"trend_following","jsonl_record":973,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4646b05eef67f5fac1c1cd9173fbb53fa5a0c04070c689b3edc4e3ce9aa4e697","id":"trend_following/0210_0545_mt45","metadata":{"category":"trend_following","jsonl_record":974,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d6368147eebde9b9dd8d718d41ca62e4009cc2ebc71d0f7683d5bdcc3c207cdf","id":"trend_following/0211_0551_burg_extrapolator","metadata":{"category":"trend_following","jsonl_record":975,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e8e11db84d8bd88c7ccd32e43cfc62e82a612f3a2bcec596728c63eb5b040b73","id":"trend_following/0212_0554_up3x1_investor","metadata":{"category":"trend_following","jsonl_record":976,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3f0c7ba90770a808cec4b46fe29fd8adbebbff723f9da88e35bccb9f2fecc2a1","id":"trend_following/0213_0558_nevalyashka","metadata":{"category":"trend_following","jsonl_record":977,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e8d9e186323af0ec4e1b6a933cf04587738c90d964852b325201f7f8b106c53d","id":"trend_following/0214_0582_intersection_2_ima","metadata":{"category":"trend_following","jsonl_record":978,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2709772a644b22400730cf117051043c738b11676e68c7a87d3886efa31fced0","id":"trend_following/0215_0589_vlt_trader","metadata":{"category":"trend_following","jsonl_record":979,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8cb0c8de1d43a6320048eb0a26886d68fd0b58984ae3056238031fe242a286e3","id":"trend_following/0216_0596_pipso","metadata":{"category":"trend_following","jsonl_record":980,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"fdef58f0f76a2af7ba8e28b130606eef59c248b72a55f24fb25283a7acc3684f","id":"trend_following/0217_0601_cheduecoglioni","metadata":{"category":"trend_following","jsonl_record":981,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"94078f95adb37921fa1973cac40e450637d7660b89164a631caef600b2ea2cc6","id":"trend_following/0218_0611_morse_code","metadata":{"category":"trend_following","jsonl_record":982,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9ba6a92944995b04e5d446449c34e2bda75afd1d9ddc155a16549b0811d2efa7","id":"trend_following/0219_0625_nup1down","metadata":{"category":"trend_following","jsonl_record":983,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"016f53484a5f7061a1824e95c083b8830e199bcb8158c2efb303692e3ff956c0","id":"trend_following/0220_0645_t3ma","metadata":{"category":"trend_following","jsonl_record":984,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e0e129cd87d9aad3fe890223f92fe209e00abc3053b1490850899fca4210f4cf","id":"trend_following/0221_0651_e_turbofx","metadata":{"category":"trend_following","jsonl_record":985,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0f75e08c7ea71394d51f3afbad0ba5b3361ffbb82dfcdd9da9d7943571442efb","id":"trend_following/0222_0657_simpletrade","metadata":{"category":"trend_following","jsonl_record":986,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"45f66b8e0aae3406457652d83931a5342de51d172b3512f18c76bccfbde18869","id":"trend_following/0223_0659_big_dog","metadata":{"category":"trend_following","jsonl_record":987,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3aacfb4d893a866c25f59c2a72f95025af14395d39c96d6534271ce3486549ac","id":"trend_following/0224_0660_autotrade","metadata":{"category":"trend_following","jsonl_record":988,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0a9277ea1bc31d2536401243671fa2d1bcb870c832b3b4d3cdf26967a5baac7a","id":"trend_following/0225_0661_2ma_4level","metadata":{"category":"trend_following","jsonl_record":989,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d2aa2e7aaa1c88e42899b89c5754f9f9605c36a7bdbc16a4360f1efee0cabea1","id":"trend_following/0226_0663_gazonkos","metadata":{"category":"trend_following","jsonl_record":990,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"df367c4d3754c69f70af3c86ab5bdaab72c13b2ff614b4103fb41eee210be177","id":"trend_following/0227_0665_forex_profit","metadata":{"category":"trend_following","jsonl_record":991,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a0db9c06f3c26285bdf841129979990528f35e9a829c19800c7f571871d9df8d","id":"trend_following/0228_0675_macd_signal","metadata":{"category":"trend_following","jsonl_record":992,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1f462fec58eeea2f552cb55a723d6207c47fa71babbb7ad21e7ff72e01e52b0a","id":"trend_following/0229_0689_backbone","metadata":{"category":"trend_following","jsonl_record":993,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ae8be447a679d45e1d8637c9f6f2985cd625852ef4ed68767ebd9dd2f0a410a3","id":"trend_following/0230_0701_mare5_1","metadata":{"category":"trend_following","jsonl_record":994,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f589174abe375ee8e527a03bb6198c05c890e39215bbca746069a67719eb7ad3","id":"trend_following/0231_0702_simple_macd","metadata":{"category":"trend_following","jsonl_record":995,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"234f19412a14ae810bb997075735fc7bf45c0f55e2d9798b2ad29fbb22136b0a","id":"trend_following/0232_0703_tdsglobal","metadata":{"category":"trend_following","jsonl_record":996,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2812522831a08f0d4f4a5a5168e6251eae6d83f2dca0c077da4fabf84276af9e","id":"trend_following/0233_0708_robot_macd","metadata":{"category":"trend_following","jsonl_record":997,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"801b1bda63c6a9a24db8195e89ccfcdf8fa0f7355a09b4fc1059da6e5eb2dc26","id":"trend_following/0234_0710_up3x1","metadata":{"category":"trend_following","jsonl_record":998,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b6f8798b13f11c8b9514f6930d110fedc2a1a5efdf44b1886599227a0374dfda","id":"trend_following/0235_0711_bull_vs_medved","metadata":{"category":"trend_following","jsonl_record":999,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e1cafa59e4277b0dc685d5f25afa811b298129fed65b42059022539b610a351e","id":"trend_following/0236_0712_up3x1_premium_v2m","metadata":{"category":"trend_following","jsonl_record":1000,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e0dcf16289c68cfed78413ade9fe340be9f0b7098620fbfd0af5cde636c609ad","id":"trend_following/0237_0724_ride_alligator","metadata":{"category":"trend_following","jsonl_record":1001,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b083ad387f1eb5b17b18e7d8fc0b19706cab8146e3be3d7f3fae6c7aaa14214b","id":"trend_following/0238_0740_adx_system","metadata":{"category":"trend_following","jsonl_record":1002,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"558a2cb220c85e21698130791b03ec0b45355dd8dc167937b9de0cdddc4806bb","id":"trend_following/0239_0742_prophet","metadata":{"category":"trend_following","jsonl_record":1003,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0f7912dcddddcd37e1262d119e1fc5d925c95219fc12ad39094d7022a7030efb","id":"trend_following/0240_0746_escape","metadata":{"category":"trend_following","jsonl_record":1004,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ba1ffc57438cd2cb3292cc8acdb0df4999048e9a705766345d78f68a99e77147","id":"trend_following/0241_0756_go","metadata":{"category":"trend_following","jsonl_record":1005,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2e032c004545818fce0b60ab0dacbc9518b68aae3880f99fbf52df3871afb892","id":"trend_following/0242_0757_expert_macd_eurusd_1_hour","metadata":{"category":"trend_following","jsonl_record":1006,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a373e69edbd25be985d243238cc0c2b081ed366d487e5db535fb8068890e3aff","id":"trend_following/0243_0799_e_regr","metadata":{"category":"trend_following","jsonl_record":1007,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"37e34ab31c5a9c6faf05c0908532013e23fe46ca6855dbabc93c9b3987c0606f","id":"trend_following/0244_0800_20_200_ants","metadata":{"category":"trend_following","jsonl_record":1008,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"56414c5a4aef86be498f76b6f18ed01f0ba75d92350e5a2966553d37697da433","id":"trend_following/0245_0808_trigger_line","metadata":{"category":"trend_following","jsonl_record":1009,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"add8dbd5e86f782f130c7bb6582f599422534d44434c60ce93c5496c7069cdfd","id":"trend_following/0246_0816_i4_drf_v3","metadata":{"category":"trend_following","jsonl_record":1010,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1dd444fcdb87c7d81ac5f6eae1e11a37d164761baf82f776c503ed091bfc0c3d","id":"trend_following/0247_0819_i4_drf_v2","metadata":{"category":"trend_following","jsonl_record":1011,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b54e1df33d304bcac4336684ed1879281b577b52978aadf1ab2fa92771a002cf","id":"trend_following/0248_0851_aroon_oscillator_sign_alert","metadata":{"category":"trend_following","jsonl_record":1012,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0ecf13e4655fe5b94cd832f30d91de456f02298fa9e1cc9aab530c5ccd0af338","id":"trend_following/0249_0852_adxdmi","metadata":{"category":"trend_following","jsonl_record":1013,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f1822f6df461605f41a7661e89af3bc58b4980e8ed8ea047147ed6fdc65a6bad","id":"trend_following/0250_0862_bsi","metadata":{"category":"trend_following","jsonl_record":1014,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dd8f2230194b3cc64062c39c794892fb3778eaefa39d49b202f98ce79f9d8549","id":"trend_following/0251_0872_frasmav2","metadata":{"category":"trend_following","jsonl_record":1015,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5821438aa24ae3d4bb0b459697748db2ebc60e33278c02d4071702fd1e04e5a7","id":"trend_following/0252_0894_aroonhornsign","metadata":{"category":"trend_following","jsonl_record":1016,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"8b855ea331453765ed8e6b669f179188de54c149fc9d561bb782d2224fe0282e","id":"trend_following/0253_0903_nrtr_extr","metadata":{"category":"trend_following","jsonl_record":1017,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"52e9c3932c676f7b67aaffea64358a636b516efe58afcee3d5d9ccac63ee456b","id":"trend_following/0254_0904_nrtr","metadata":{"category":"trend_following","jsonl_record":1018,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bb218e16ca14f0886c471694138b264409be5fd5ea98210d1d61ed1b4b5c4d74","id":"trend_following/0255_0914_nonlagdot","metadata":{"category":"trend_following","jsonl_record":1019,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ba4f95bc6e67d7918ec9cb1090a2fce7e5d738f3b778277e29314e6017e8b287","id":"trend_following/0256_1043_forexprofitboost_2nb","metadata":{"category":"trend_following","jsonl_record":1020,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"430c343e36ceca4fa02ad91850add42ab5cdd9d9e5cc05d6d29961a75f3320b8","id":"trend_following/0257_1047_simple_trading_system","metadata":{"category":"trend_following","jsonl_record":1021,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"dcca5911690fe970d0839c07f8fef455b400cf40d277f223ae7e8317deef0ac0","id":"trend_following/0258_1048_fatl_satl_osma","metadata":{"category":"trend_following","jsonl_record":1022,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a5c7d50bd8e7bf276fef2ad682d55dee55d76090f2b596fa39d0006d6ad0c65c","id":"trend_following/0259_1051_modified_optimum_elliptic_filter","metadata":{"category":"trend_following","jsonl_record":1023,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"175c12ec865b460a60c16641b926c61200bf525eadf831cc3f186ce74c7fede7","id":"trend_following/0260_1053_ozymandias","metadata":{"category":"trend_following","jsonl_record":1024,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"65ab79716cbfd1b7f4346bb7c154f622b902e42278eaca18189c5e606480a144","id":"trend_following/0261_1064_ma_by_ma","metadata":{"category":"trend_following","jsonl_record":1025,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f4571e288f3a3f8e9d5845d7ac49611c60178d4f93b75ff39a071a0d17bca114","id":"trend_following/0262_1066_slope_direction_line","metadata":{"category":"trend_following","jsonl_record":1026,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"01eac3b6c844c495a98bf8f022c620daf139cdba5f1322b1fcad974e0266ae2d","id":"trend_following/0263_1067_karpenko","metadata":{"category":"trend_following","jsonl_record":1027,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"57d7f254a00c20f3217eb7276fcce395fb5c4dcabaebabca7ca2cd7ca097f3ca","id":"trend_following/0264_1075_ma","metadata":{"category":"trend_following","jsonl_record":1028,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bb0a0df9bfe9c74d02b84f122b0d43ea4928ec9153ce84ad7371cfa0c891ff87","id":"trend_following/0265_1079_bvsb","metadata":{"category":"trend_following","jsonl_record":1029,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5acd811c029f001e74fd4d4f5925234675872d6112b58a2d8d175eaea1b32f5c","id":"trend_following/0266_1080_bnb","metadata":{"category":"trend_following","jsonl_record":1030,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"65adb1719c1d7e06c3ae7c0b7393ee16704a067e75622ebef348c2998cfd2db5","id":"trend_following/0267_1082_tsi_macd","metadata":{"category":"trend_following","jsonl_record":1031,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"319e5e13a947958e1271d19d99adb978d35ea7d5fd8a1eeafcdbfd4dea686692","id":"trend_following/0268_1084_wlx_bwwiseman_2","metadata":{"category":"trend_following","jsonl_record":1032,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"737f9a8447bca4a1caf507c1f63ef8468b4c31b88d9dc98baebbba6ca27a52c9","id":"trend_following/0269_1088_cronexao","metadata":{"category":"trend_following","jsonl_record":1033,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0af92ca4fd8bc7f8cbc660911846a6a08020537d0d87b0d9a358a5767c34ef43","id":"trend_following/0270_1091_highs_lows_signal","metadata":{"category":"trend_following","jsonl_record":1034,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"daa26b936815c5c5ba3b349f11bc80ce8b92b5f4aa710a4133e77326533f07e8","id":"trend_following/0271_1094_afirma","metadata":{"category":"trend_following","jsonl_record":1035,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"23623e36e0e7506dac0d23562642fe4b9bed4457f91e2ac3509b4fa4338b6cb9","id":"trend_following/0272_1096_xd_rangeswitch","metadata":{"category":"trend_following","jsonl_record":1036,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"19d2c4cfc48199a2aae006893b6f8518ef0eac9e3a5e36fae2505b029f2f3cb7","id":"trend_following/0273_1099_simple_ea","metadata":{"category":"trend_following","jsonl_record":1037,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5937239120e9ba1221736c4cf3d6d5e98d31c871e6a1ed45a91a4caad6ee37b4","id":"trend_following/0274_1102_bw_wiseman_1","metadata":{"category":"trend_following","jsonl_record":1038,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c7d234d691b85ae1c650f890a0b9df57efba825b7ce77d1e316122fbc84f8bcb","id":"trend_following/0275_1104_digital_macd","metadata":{"category":"trend_following","jsonl_record":1039,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0ba7e51fc204d353c14dfada7de4e2ecf620c2567935fc68435d8fcb87742902","id":"trend_following/0276_1106_t3_trix","metadata":{"category":"trend_following","jsonl_record":1040,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e3f623cac4aec4d06234a3e6ce37dca39dea0616d29bf3611497ef88e35a9ff4","id":"trend_following/0277_1110_cs2011","metadata":{"category":"trend_following","jsonl_record":1041,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"64cd852958ab5e2d3734fa8c04b78903e6e8e7a073a0d1202ed617e7c72ca003","id":"trend_following/0278_1122_irea","metadata":{"category":"trend_following","jsonl_record":1042,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5672d5200d1c44cf715c64ede64aac5fd82fa973cd188b1cb538d8d38e53ea23","id":"trend_following/0279_1137_jpalonso_modoki","metadata":{"category":"trend_following","jsonl_record":1043,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"51107d52b9ea965194ccec7dc371f10bc1e94e039cbd5f686789942f39fa0950","id":"trend_following/0280_1142_smatf","metadata":{"category":"trend_following","jsonl_record":1044,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5c77d8c8068429777f6dcf4c18437abcafb82d243de20398ba931c2322a832db","id":"trend_following/0281_1144_20_200_expert_v4_2_ants","metadata":{"category":"trend_following","jsonl_record":1045,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ef1b003108867cd5f1c3e0d8b7f7988ca486382d18d1fb960590e2c07e69cfd0","id":"trend_following/0282_1152_go","metadata":{"category":"trend_following","jsonl_record":1046,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c881597fff328789b41cbf009e2f639895e4c8a4a2e034d46244dd2e547abeed","id":"trend_following/0283_1153_e_turbofx","metadata":{"category":"trend_following","jsonl_record":1047,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"899762eb1e9beb2daf15dd0f70991e8c3c13d738d7e3e01cd8ceb2a91d496dce","id":"trend_following/0284_1157_she_kanskigor","metadata":{"category":"trend_following","jsonl_record":1048,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b5845264e196a64dd64aa95a2f17a58da69ab9d5f710a845517055736cb1500f","id":"trend_following/0285_1171_jolly_roger","metadata":{"category":"trend_following","jsonl_record":1049,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d852aefc026f9c09dcbf0f044ac6de2af186a4c60020a7371d278e4a7fc0ee8b","id":"trend_following/0286_1186_20_200_pips","metadata":{"category":"trend_following","jsonl_record":1050,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"09c660130f287bd2c8ffa741e24d99a7c9a709c44a979e442296bf44267ca38c","id":"trend_following/0287_1186_20_200_simple","metadata":{"category":"trend_following","jsonl_record":1051,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"15e5bdef2af41fcd53ef700f956966290a986e6cfa187cbf1b4551aceda3e040","id":"trend_following/0288_1199_index_ma","metadata":{"category":"trend_following","jsonl_record":1052,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"68de71b4809dece983bf5fb57d7e20fc5172e177d1fd367fc2e69420aba4dc43","id":"trend_following/0289_1203_simple_ma_adx","metadata":{"category":"trend_following","jsonl_record":1053,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"45e16262c7102c04b5341c34e6683d751f32807063477fc0753465093088b5ae","id":"trend_following/0290_1205_simple_ma_ea","metadata":{"category":"trend_following","jsonl_record":1054,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"91804042dde383fe474ae04cbdf2d8e9285f343f02f2a5a0a9bed16a22f8afbd","id":"trend_following/0291_1209_figurelli_series","metadata":{"category":"trend_following","jsonl_record":1055,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"342435269c33e5e341165ceb6aed6f28ee408f1c347c0186629f67917f0b228a","id":"trend_following/0292_1214_tma","metadata":{"category":"trend_following","jsonl_record":1056,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"59faf8b0aaebf12b7c6e7f07b2ce0639178195f2846b72b59126e9a83945f273","id":"trend_following/0293_1216_beginner","metadata":{"category":"trend_following","jsonl_record":1057,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f49d869c74e7b5aded6b68ec991a6dd1f5cab59eaa153eeb60e1ad7756e9f397","id":"trend_following/0294_1218_stepsto_v1","metadata":{"category":"trend_following","jsonl_record":1058,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7dd91ecac58674ac87b83222faad31a076e4709370a0fb8a81c7836c0888c692","id":"trend_following/0295_1223_color_metro","metadata":{"category":"trend_following","jsonl_record":1059,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"08f0f905c9e3454684def95d05b67999c750757972d312b4283760787b840a7f","id":"trend_following/0296_1230_macd_xtr","metadata":{"category":"trend_following","jsonl_record":1060,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ffe17c78a5257179cfdc5769f641d3f6e6c3b253d9695f3166326371724dbd49","id":"trend_following/0297_1233_mama","metadata":{"category":"trend_following","jsonl_record":1061,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d3b9f600443c6c3c2f569428c98dba7240a56ecd4930e53412fc55472389fef8","id":"trend_following/0298_1235_oracle","metadata":{"category":"trend_following","jsonl_record":1062,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"008e4005eb174733784e7ecd91335ceebd21a56927e80025357a3d4c9bd15ad3","id":"trend_following/0299_1237_2pb_ideal_ma","metadata":{"category":"trend_following","jsonl_record":1063,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c140bbcaf5469982b0b8f5a19e2134cae3c96964684c224a0d27e549acecbbd1","id":"trend_following/0300_1238_coeffofline_true","metadata":{"category":"trend_following","jsonl_record":1064,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"2de526ecf2bfd0b91eb47485857eb7d1b25f1f5e1f0130e7768c86f83030d899","id":"trend_following/0301_1241_buysell","metadata":{"category":"trend_following","jsonl_record":1065,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f594b44c0635f047ceb672f9320da1b3f87d6dc44aa35981e00f2562b7072957","id":"trend_following/0302_1242_bulls_bears_eyes","metadata":{"category":"trend_following","jsonl_record":1066,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"22c52fcb9b1d380d6fedc2e14514c57e03ca580fec25a2132eef864d10559b6b","id":"trend_following/0303_1243_bezier","metadata":{"category":"trend_following","jsonl_record":1067,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ea30f19370b724e2bbc2bb6ec98a896c8beeb6abb56ea1740c4ffa960b34feeb","id":"trend_following/0304_1245_3parabolic","metadata":{"category":"trend_following","jsonl_record":1068,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6603ca7e9c9a6da4a3b83b50875a2a34e6a66fde4756299ae12f9ac3c77d9166","id":"trend_following/0305_1246_aroon_signal","metadata":{"category":"trend_following","jsonl_record":1069,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c78c8a5cf946ddb7cc7fc8a8b92d56b4b1d580afe1dca0420775a8d9e96fa631","id":"trend_following/0306_1247_amka","metadata":{"category":"trend_following","jsonl_record":1070,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a173897114905c43aeeffcda29bddb4e87f721349a7483cca7309ddd558e22a5","id":"trend_following/0307_1249_arrows_curves","metadata":{"category":"trend_following","jsonl_record":1071,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1549b1e03f9486c9d069ed339ebf5725e08b30d6e251e469b036e0e46481cc68","id":"trend_following/0308_1253_brake_exp","metadata":{"category":"trend_following","jsonl_record":1072,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f8d5ccc6bee7b671dbdca5904fb79c222086b0421a91b0842cd00fa1e5015191","id":"trend_following/0309_1254_brake_ma","metadata":{"category":"trend_following","jsonl_record":1073,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5e8803e1417334b741c877ed1fc02a4c4225d3d5d1c21565846788e35f0dfa0b","id":"trend_following/0310_1258_brakeparb","metadata":{"category":"trend_following","jsonl_record":1074,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7b09da7245a9b7e239cdcef29b1ed5700d3be50416835f44df0f61ced0fef5e7","id":"trend_following/0311_1259_muv_nordiff_cloud","metadata":{"category":"trend_following","jsonl_record":1075,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"0797020c7806feb57a018187fc41b715a0d7b6626a24959181f40ef097c9038c","id":"trend_following/0312_1260_color3rdgenxma","metadata":{"category":"trend_following","jsonl_record":1076,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"1a285a588e87b4523e61f9eb91daa76f512c40ddacef7d349529be6f975a01a0","id":"trend_following/0313_1262_f2a_ao","metadata":{"category":"trend_following","jsonl_record":1077,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"965881c07c2769b33ca4b6b28c6f5f16020c7264c08cbdf9f506e7c403afd745","id":"trend_following/0314_1264_jmaslope","metadata":{"category":"trend_following","jsonl_record":1078,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"9e32d1f64b57bbbc48c493ab39096a106fc10381c40f089f12ac9b90727c9bbc","id":"trend_following/0315_1270_colorxadx","metadata":{"category":"trend_following","jsonl_record":1079,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b68f1d0740698e46813cf6b1b95e6f19890a3e0def17ddb0bdea820a885ce8ce","id":"trend_following/0316_1277_colorjvariation","metadata":{"category":"trend_following","jsonl_record":1080,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f4cb9f9159f926777cde890d963a38450a969b7292234407a64e732a790324c9","id":"trend_following/0317_1280_3xma_ishimoku","metadata":{"category":"trend_following","jsonl_record":1081,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ff94116789fbff6e65703c6d7d648803a61731ee3d402ea18732e5a123eea1d6","id":"trend_following/0318_1287_linear_reg_slope_v2","metadata":{"category":"trend_following","jsonl_record":1082,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5f4fe079718be419b3f3e85ebfe413c0296366347ee7c0758092a4182d6967be","id":"trend_following/0319_1289_zpf","metadata":{"category":"trend_following","jsonl_record":1083,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7d7ceb51952f5d959938f45cd0f390ef92db28b6b59eaa34bfcde28cf82c14e2","id":"trend_following/0320_1290_rmacd","metadata":{"category":"trend_following","jsonl_record":1084,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7688fc46bfb77fd1e510efea74f662edee1ba962cabac5b650b63c0e658ea251","id":"trend_following/0321_1291_ma_parabolic","metadata":{"category":"trend_following","jsonl_record":1085,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5b3b30cb731ff6177abe529ec023a1366712bd89a5a08894393d19b74c16859a","id":"trend_following/0322_1294_2pb_ideal_xosma","metadata":{"category":"trend_following","jsonl_record":1086,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6fe1c0faf40bdf3a7e2a499b2c0caeb2a641d20dd62390c43620d97a396f4758","id":"trend_following/0323_1297_bulls_bears","metadata":{"category":"trend_following","jsonl_record":1087,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7cdcdfdf12f80ffb04ac4fd8389fc424f5c0a8714e922c2259f0d350fd0de50d","id":"trend_following/0324_1298_xmacd","metadata":{"category":"trend_following","jsonl_record":1088,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ace90b07f3fc6b2f6f1626549255d7bf0df2da9ae012d91e0a84bc5443cc2b0e","id":"trend_following/0325_1330_three_ema","metadata":{"category":"trend_following","jsonl_record":1089,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"bd186bbb022e00e35927bd0ba44d1ec2abc5ed6f38af69e0f48bfdf52723d54e","id":"trend_following/03_two_ma","metadata":{"category":"trend_following","jsonl_record":1090,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"80f02fa3d891f8ed5b933102d6ad6e9fe3081e1bdba42ab04d01b12339a42951","id":"trend_following/06_macd_ema_fase_strategy","metadata":{"category":"trend_following","jsonl_record":1091,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"8c8911d9f51921bb4b37b109dd798bb6768ae02d7f05e3b4f11029df0f01d102","id":"trend_following/07_macd_ema_true_strategy","metadata":{"category":"trend_following","jsonl_record":1092,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"e677fb62443ddefe7f1a126c3fbab86f304323a307a385aa37cf16ca9381ba09","id":"trend_following/116_triple_ema_strategy","metadata":{"category":"trend_following","jsonl_record":1093,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"5eb13fa3b16f85ec396fb63513565351bbc58780e0bf99eb82638b2e63e339b6","id":"trend_following/15_fenshi_ma_strategy","metadata":{"category":"trend_following","jsonl_record":1094,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"4fa321e859e56198584264899eaf58e0333b150d25da51c853e2d7750739a9ca","id":"trend_following/30_macd_kdj_strategy","metadata":{"category":"trend_following","jsonl_record":1095,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"d9dd24f06ba124217ff914a30d739841b18ae68f016f344a05110a4b50707a02","id":"trend_following/34_turtle_strategy","metadata":{"category":"trend_following","jsonl_record":1096,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"2daeb48bc28bddba8e658d3567c8d0ad24b5cc15f4fbb085df1805ffce1e370d","id":"trend_following/35_sma_cross_signal_strategy","metadata":{"category":"trend_following","jsonl_record":1097,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a59622dcc4588320513df71f970332a1edfba99d21c6920e329d3c51fb1e9bc5","id":"trend_following/72_triple_cross_strategy","metadata":{"category":"trend_following","jsonl_record":1098,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a12fd665cab1d5ea82f06745a137b3f379dfba10931447cf2e42496aa913f2aa","id":"trend_following/75_extended_cross_strategy","metadata":{"category":"trend_following","jsonl_record":1099,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"fa5cbbc92104efcbd72f909e47ea1ab442b803d5fbfb9b767f61e4f0e943d239","id":"trend_following/86_sunrise_ema_crossover_strategy","metadata":{"category":"trend_following","jsonl_record":1100,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a2955943ab2a19e16eb44a4c88bb319cdf8789044aa51b1d420fd4a39bb1769b","id":"trend_following/87_hma_crossover_strategy","metadata":{"category":"trend_following","jsonl_record":1101,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"8cf17a0aa308fa23699df8340b59d9bcf2d4dc33a5ddd936f4f18de61a2c042c","id":"trend_following/90_forex_ema_strategy","metadata":{"category":"trend_following","jsonl_record":1102,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"dcbb9c94c7e0a537f11bfc12b78cf8276407dd6dc872f08af2c73c06502017d4","id":"trend_following/91_hma_multitrend_strategy","metadata":{"category":"trend_following","jsonl_record":1103,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"dda82aecd67baeda9de23c9d759ad41f2506b082e4b8df43eb12f3bea6549fdf","id":"trend_following/93_macd_dmi_simple_strategy","metadata":{"category":"trend_following","jsonl_record":1104,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"1abd662dd57d8230d5c8afced92b0571eaee87067a2c7fd2a9506d921dc05f40","id":"trend_following/96_ichimoku_cloud_strategy","metadata":{"category":"trend_following","jsonl_record":1105,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"f9e44959a29e9b277b58222da1b8703a311ba0a7cccaa1766e33d4309f7ee695","id":"trend_following/98_dema_crossover_strategy","metadata":{"category":"trend_following","jsonl_record":1106,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"5410c4302845a9a67e9500984689eea9600dfbcb4d85883a60e2e791b0922d62","id":"volatility/08_kelter_strategy","metadata":{"category":"volatility","jsonl_record":1107,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"ffcd99e2d607e238a209104cb4f7eed299a67090511cf9f882f1e2c54b67c9ec","id":"volatility/108_keltner_channel_strategy","metadata":{"category":"volatility","jsonl_record":1108,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"d2306a1d013d28bafed9259eeddd5c13916f0431a084d75af8bb89d82f110112","id":"volatility/111_chandelier_exit_strategy","metadata":{"category":"volatility","jsonl_record":1109,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"a6d717812b138c4aeabe68fccffc7c9ea4b99be36984e406164ae7826160912d","id":"volatility/114_supertrend_rsi_strategy","metadata":{"category":"volatility","jsonl_record":1110,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"d59c466374a7eb1c8e7bf53175edd8d16a40051f0b787ef4ffe367287f97624f","id":"volatility/36_macd_atr_strategy","metadata":{"category":"volatility","jsonl_record":1111,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"70276772a05e2fb7050381675537ff88efdc1b909b0359c30dad63712094a22f","id":"volatility/70_keltner_channel_strategy","metadata":{"category":"volatility","jsonl_record":1112,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"2ab8700f6cc6013c3a0a09bfe0a75278a9950d98d135a5ad98cc32978c8e7ab0","id":"volatility/81_supertrend_strategy","metadata":{"category":"volatility","jsonl_record":1113,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"b4a48112d3c2305ae52d0eb0b55f0d74cdf8b8e974438a8399a25aab39d91ded","id":"volatility/88_supertrend_indicator_strategy","metadata":{"category":"volatility","jsonl_record":1114,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"aa8075f1f5deeb1ad2f14e9f9a3f9137d27990dd7110e5423e5bc5039509db9b","id":"volatility/89_adaptive_supertrend_strategy","metadata":{"category":"volatility","jsonl_record":1115,"mapping_status":"functional_only"},"source":"functional_only"},{"archetype":"single_data_indicator","content_hash":"101d15b929ff3c8b0b4e593f7ec2a991ebb8aa2bb5935bee3e3dd8ae70354cdd","id":"volatility_systems/0001_0021_gold_paired_switching","metadata":{"category":"volatility_systems","jsonl_record":1116,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"ff662d0fa45a19479e89b3f06281a72b063eabe9cf613bfe1a77be4e183b2bea","id":"volatility_systems/0002_0022_gold_self_similarity_regime","metadata":{"category":"volatility_systems","jsonl_record":1117,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e0124ef1265c0ab9927c8843fb6fd1d6af2912439965f027cd54126fbb7bc641","id":"volatility_systems/0003_0025_gold_paired_switching","metadata":{"category":"volatility_systems","jsonl_record":1118,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"278d8b56d52af312237eedbe960dd6b9e1592a052244a1e1491fb5c76141b7a7","id":"volatility_systems/0004_0032_gold_regime_filter","metadata":{"category":"volatility_systems","jsonl_record":1119,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"59594c7e6f7d489d4c461397837d96f02e4cb2cf5f27d0ed6a6d23e16cadb214","id":"volatility_systems/0005_0053_gold_volatility_position","metadata":{"category":"volatility_systems","jsonl_record":1120,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5645e778af9154366d8be334affaccd3995444686aac61bc9e6e68e249e59697","id":"volatility_systems/0006_0073_high_volatility_reap_policy","metadata":{"category":"volatility_systems","jsonl_record":1121,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3a68a0aa04b698b450161277c29a04bc536d2db3342b79850630d7e18bb1b54b","id":"volatility_systems/0007_0125_hmm_regime_detection","metadata":{"category":"volatility_systems","jsonl_record":1122,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"931880bd70e042439e5b734dd90c04697a533f9363c7e1ce23419a58a57519d9","id":"volatility_systems/0008_0144_volatility_correlation_model","metadata":{"category":"volatility_systems","jsonl_record":1123,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"cf8dc1893c5ce2f8ba5115b1c27c1b219b1c3a548474b0fabb5d0771fcdaf643","id":"volatility_systems/0009_0192_regime_switching_modeling","metadata":{"category":"volatility_systems","jsonl_record":1124,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"4467e5169bfadf815d3b2fb99200d7b88cd64cbea10cc5716361a457ff5b8a06","id":"volatility_systems/0010_0206_volatility_long_memory","metadata":{"category":"volatility_systems","jsonl_record":1125,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"eceeb9166c70304c4a58aa1f114a74a1bc1b6895bf825d8a83fb522cd7322cb2","id":"volatility_systems/0011_0285_vix_spx_divergence","metadata":{"category":"volatility_systems","jsonl_record":1126,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"39ddf6cc141d1abfa8548d15d8c1a7a35d529ef68a19a138116105475213ff46","id":"volatility_systems/0012_0302_adaptive_vix_ma","metadata":{"category":"volatility_systems","jsonl_record":1127,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d400b4e317f4df6e30a53597ed3c7e1963db35612e7e0eb4caa955c9bef50f4f","id":"volatility_systems/0013_0320_vix_futures_basis","metadata":{"category":"volatility_systems","jsonl_record":1128,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"86f7fc998bbbe9d523df3131dafdd08e3d8bea0b7f9967be2c0cb49cfb7d5a3d","id":"volatility_systems/0014_0327_volatility_hedge_fund","metadata":{"category":"volatility_systems","jsonl_record":1129,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3ebebecde6d709f9341b9628ab6667ad8a79ad982ef733e0492c4821cba17e01","id":"volatility_systems/0015_0374_correlation_regime_strategy","metadata":{"category":"volatility_systems","jsonl_record":1130,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"abee634298b998cfac0dcbef35738457d1ec5d1b8b4afec4d0cfc1d68db8a619","id":"volatility_systems/0016_0411_hmm_random_forest_strategy","metadata":{"category":"volatility_systems","jsonl_record":1131,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6b71dfa1d53cac08662e92726609177795dd00fc27c1336b1d9845201986bb2b","id":"volatility_systems/0017_colorschaffdemarkertrendcycle","metadata":{"category":"volatility_systems","jsonl_record":1132,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e210369750a29ff2b8d49a8a3d2e1ba5ddaf574690dace75e0213795b69a527b","id":"volatility_systems/0018_cycle_period","metadata":{"category":"volatility_systems","jsonl_record":1133,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"d392f3b79edf44b9e0559661f7c92fd57f4578b315bb82f87070e462222b15fa","id":"volatility_systems/0019_fisher_cyber_cycle","metadata":{"category":"volatility_systems","jsonl_record":1134,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"6a34fc280b81dc51e8281c23c0496153440fe07d1d8476788c0081f808b61192","id":"volatility_systems/0020_adaptive_cyber_cycle","metadata":{"category":"volatility_systems","jsonl_record":1135,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e56731b1d08827ff64afd37fd140db075a3f0bec4ccde3d6f911e4a74dea7be8","id":"volatility_systems/0021_bollinger_band_breakout","metadata":{"category":"volatility_systems","jsonl_record":1136,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"516f7c0a6d273fab73c16fa913a3f877c387c3e4107563ffacfed123cb8e4fde","id":"volatility_systems/0022_bollinger_bands_setup","metadata":{"category":"volatility_systems","jsonl_record":1137,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"46cb116dc565992b9fa0e55cd1859b4db9281fe5b5624d76a7c8a14247fcea40","id":"volatility_systems/0023_0105_band_r_squared","metadata":{"category":"volatility_systems","jsonl_record":1138,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f3bc11d04440bca38566059b375d5df34fb17c00c3cab1584a88fef657bfb385","id":"volatility_systems/0024_0196_high_frequency_volatility_trader","metadata":{"category":"volatility_systems","jsonl_record":1139,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"f7712a4597a939fbb3a57b35baa661502a32cf1f7f35d08687be94ccae0e31b8","id":"volatility_systems/0025_0490_breakthrough_bb","metadata":{"category":"volatility_systems","jsonl_record":1140,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"a4f45eb2fa5c394149dc8e932eb0235fd5f015d7b2d20a6d1a24c383b144f9a4","id":"volatility_systems/0026_0706_bolltrade","metadata":{"category":"volatility_systems","jsonl_record":1141,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e8d8709cc5d182cd4bbc92ca9ce313859a1ad2cc6f653a45e374382a46cab574","id":"volatility_systems/0027_0838_wlxbw5zone","metadata":{"category":"volatility_systems","jsonl_record":1142,"mapping_status":"package_only"},"source":"package_only"},{"archetype":"single_data_indicator","content_hash":"244ed1c5bcbc1c40e1da1db4939aff0b479439ea03a995f1bde0c808cbb5b2f6","id":"volatility_systems/0028_0899_bezier_stdev","metadata":{"category":"volatility_systems","jsonl_record":1143,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"223fca37f93e96cf558b8f54ecb4f6b729bd8174f1269a3d7ef1a327d297d790","id":"volatility_systems/0029_0916_karacatica","metadata":{"category":"volatility_systems","jsonl_record":1144,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3ccb8c0001e2919c1ff8e10a5a423bc3231d984e4daa15ab87f6d89ac306d05c","id":"volatility_systems/0030_1100_the_20s_v020","metadata":{"category":"volatility_systems","jsonl_record":1145,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c1f3275898f3f63f70b0dd933bc6c9197badbc50076c859b7da31e760ab0036c","id":"volatility_systems/0031_1115_rock_trader_neuro","metadata":{"category":"volatility_systems","jsonl_record":1146,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"b15c46c3b3ad97f408a2f4ff81bc8b5ad668a879e5e78fa0c05438683eae3ba6","id":"volatility_systems/0032_1269_ef_distance","metadata":{"category":"volatility_systems","jsonl_record":1147,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"c54239a1c39db2b128de7db3cab9c897018c175d98230d6f8fe3b69e0fc4e77e","id":"volatility_systems/0033_1295_color_bb_candles","metadata":{"category":"volatility_systems","jsonl_record":1148,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"3b4beea7a6557e934eeac26409f1f47c631081cb8a19406d967899c990ae4532","id":"volume_system/0001_volume_weighted_macandle","metadata":{"category":"volume_system","jsonl_record":1149,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"e5bdd8b6f88663721e07f64903d3dde5911eb24b9ad97444b70d20172d7f3d2b","id":"volume_system/0002_volume_weighted_ma_digit_system","metadata":{"category":"volume_system","jsonl_record":1150,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"7cd135c14ca4cc3f8dd7f4a50305ecfb3bdb2af2fef1ff6b62de70f31ad92fc6","id":"volume_system/0003_volume_weighted_ma_stdev","metadata":{"category":"volume_system","jsonl_record":1151,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"684c5e154642b49e9c17d192207d27be90f4a919db8e412809bcfa029ab855d7","id":"volume_system/0004_volume_weighted_ma","metadata":{"category":"volume_system","jsonl_record":1152,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"73039b31ab5b73853b6e190b4df852e8804c75d8709f976318c140c1441163e3","id":"volume_system/0005_ergodic_ticks_volume_osma","metadata":{"category":"volume_system","jsonl_record":1153,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"be0f56141fa673353a5b7c3a2d87765e10f348790f9cfd0818c0d7133c395dbb","id":"volume_system/0006_ergodic_ticks_volume_indicator","metadata":{"category":"volume_system","jsonl_record":1154,"mapping_status":"mapped"},"source":"mapped"},{"archetype":"single_data_indicator","content_hash":"5efe6e80001abf1d78af3e2bc3e20838d72ef3ccdb31472894be198aa93945d7","id":"volume_system/0007_xpvt","metadata":{"category":"volume_system","jsonl_record":1155,"mapping_status":"mapped"},"source":"mapped"}],"entry_count":1155,"extensions":{"counts":{"functional_tests":1152,"mapped":1032,"strategy_packages":1035},"encoding":"jsonl-following-records","entry_count":1155,"template_count":14},"mode":"snapshot","provenance":{"functional_adapter":"functional-test-adapter-v1","package_adapter":"three-file-package-adapter-v1","source_available":false},"schema_version":"corpus-manifest-v1","snapshot_hash":"5a47140a11352e34b75c73ae89583e448833faf998d32d3800917e51cb15a33f"} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"advanced/44_signals_strategy","category":"advanced","dependencies":[],"entry_hash":"b9f2a82df95b3331d27c06e53be794c74cefb22d77ea6cd4380605210e5f312f","functional_test":{"relative_path":"advanced/test_44_signals_strategy.py","sha256":"f43be2c09c9edd01db64ea278d83af631cd2ab99927fb35310869408855889f0"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"44_signals_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"advanced/45_multitrades_strategy","category":"advanced","dependencies":[],"entry_hash":"13734a38778ebbe18c5add3ede9b93a875f054e27727d98dfd61ddeb9c62c115","functional_test":{"relative_path":"advanced/test_45_multitrades_strategy.py","sha256":"52b6fe95140faa98c85173a5a21e5fc724736d89f34450eac654dc53b0c3cde2"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"45_multitrades_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"advanced/48_strategy_selection","category":"advanced","dependencies":[],"entry_hash":"a83736cc9af4506039b4773a515b348470e7305833ef42d9e8ab9929cb0731d2","functional_test":{"relative_path":"advanced/test_48_strategy_selection.py","sha256":"cc91fd90fc16bd448eec779a2ba0883b369f15b5db869296423cfc9f1c956040"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"48_strategy_selection","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"advanced/51_optimization","category":"advanced","dependencies":[],"entry_hash":"1d2d46fac674337efdf1a7495df006ca12ec1a0403cd65de96325625239766aa","functional_test":{"relative_path":"advanced/test_51_optimization.py","sha256":"2579b610b5ca80c4f956324bdd446bd49ed99c7995f7485d83952ad429815e3c"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"51_optimization","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"advanced/59_multidata_strategy","category":"advanced","dependencies":[],"entry_hash":"335787d70a88726cdefa2f113b1584b4e302c5322c05588cf4ac829077c4f9c6","functional_test":{"relative_path":"advanced/test_59_multidata_strategy.py","sha256":"74256b5c6d2aad2c61c3845c66077c900fa1657a271d5fc24da1088e24789db3"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"59_multidata_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0001_gold_tactical_allocation","category":"asset_allocation","dependencies":[],"entry_hash":"ea02437df7db073a46083406aa2357f48dfc72ef1e0462c6478554d2d8fecac5","functional_test":{"relative_path":"asset_allocation/test_0001_gold_tactical_allocation.py","sha256":"c9b56a2dea39adab76756f49c0b13e24735e2fd993f38e40acb9648bbe82bb3c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_gold_tactical_allocation","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_tactical_allocation.py","sha256":"da051e0e375293a815a65579b8e61ed11c7280d9a2c80151def60453d777a73c"},{"path":"config.yaml","sha256":"46a44fafb1bac2fd141053e7173c4456c77f51f0f53d241f066aa77e64095ac5"},{"path":"run.py","sha256":"5a6f8392a045e5bb71fdd2a888054b9ffea7157617b1e4ddcf2896818e2ecc3c"}],"relative_path":"asset_allocation/0001_gold_tactical_allocation","sha256":"1d2c5686fb5ba352e07b7c2ba81353677364852787c9163933f20b8b78775ccb"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0002_gold_60_40_enhancement","category":"asset_allocation","dependencies":[],"entry_hash":"53710839905b3c662c55db97b935e80d49181fd52db8d0a5bec04c207db3d348","functional_test":{"relative_path":"asset_allocation/test_0002_gold_60_40_enhancement.py","sha256":"bf6fad94809c4a1f70b63703b3c23849e16bb776bec867ab5bed489768e69a5d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_60_40_enhancement","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_60_40_enhancement.py","sha256":"ca4ba77847903e3652c7df533fa4afbcf5bc7d838995b39a87adf20cf83ef3e0"},{"path":"config.yaml","sha256":"de80eb6d12c1b6979facd60917454e9a5580f83f54f223c996949dc068d172b2"},{"path":"run.py","sha256":"e1ea2ec2c0b47b050ac56ddef38ca9e97503d5b5779d2b224c4870d09e09c7bb"}],"relative_path":"asset_allocation/0002_gold_60_40_enhancement","sha256":"bf537c9815f97843bedcbeeb4cd44138d25d3dc6885723dd5871fd619abe1ad9"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0003_gold_enhanced_60_40","category":"asset_allocation","dependencies":[],"entry_hash":"451a128723682e110e14119e165fbbf739d7c68d78734507a3564cb937283057","functional_test":{"relative_path":"asset_allocation/test_0003_gold_enhanced_60_40.py","sha256":"e5631bb07dc4ea6e06b870aebe2bf461fc323a819b2acb0ec2dc4f6056743e54"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_enhanced_60_40","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_enhanced_60_40.py","sha256":"0c7545be660be93cbc3fd43459de54d0454985faf1b0fecb1ab7b99b416484ec"},{"path":"config.yaml","sha256":"95814430ab586819a1e4f4d59e0d4fad99b225d79cb0fb2522a3fae8f2d149f0"},{"path":"run.py","sha256":"c897c3515b1f71735431798f8cada13758a2a2d387631765d149c6273bc7da88"}],"relative_path":"asset_allocation/0003_gold_enhanced_60_40","sha256":"a3d191b932c21a573c4606982cefe2ec6a48b6f103eb65f83607f5bebc324658"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0004_volatility_managed_portfolio_gold","category":"asset_allocation","dependencies":[],"entry_hash":"fbf046b0f6457ff5d8ac779c90a139af67900a3fcc9f713c68f51685d11180c1","functional_test":{"relative_path":"asset_allocation/test_0004_volatility_managed_portfolio_gold.py","sha256":"45a0339186b033a3ef888371f8428228f0a468d35aa2ce28399f85087fa25345"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_volatility_managed_portfolio_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_managed_portfolio_gold.py","sha256":"3a223c50ccffd23119a29c1b3bda6e826bc68ee02ebce3dba76b9293e63b64f2"},{"path":"config.yaml","sha256":"c21c113c92cac2095860e0a1f749e460ec3f6d1c054830bac6c51e991e368eff"},{"path":"run.py","sha256":"df14fbea1aa9bd102abaa25042f9ba2c53b204dea70e3a388d46536999840c44"}],"relative_path":"asset_allocation/0004_volatility_managed_portfolio_gold","sha256":"2272b021e63643e3bc246aeb87fe5cd336b3ec26dd30fd5f6e6673ffc5c02b59"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0005_trinity_portfolio_gold","category":"asset_allocation","dependencies":[],"entry_hash":"5d2ab2bd93d9289ca03d501c7232eadefe91507bccb52a2a7f8374ae34613edd","functional_test":{"relative_path":"asset_allocation/test_0005_trinity_portfolio_gold.py","sha256":"a26b95a0d4c9a0afcd563863906964f14a34c9349671acb8eb8d7b89d766fa34"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_trinity_portfolio_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_trinity_portfolio_gold.py","sha256":"80fd4806fa4c963f731e895cc12d67f73d291721b35bae4e7e1aadf7df307911"},{"path":"config.yaml","sha256":"731f3b0240ba7b635017bc50083777cc297eab5702caa5491f4fc172d2b8cf92"},{"path":"run.py","sha256":"07c5c9f0aa1ed4dd179535ef13970d307719963e9d461579a626a52958b7e38a"}],"relative_path":"asset_allocation/0005_trinity_portfolio_gold","sha256":"02ce86a901a8dad7a3da831d9d3cde25383ef55b962de67f40f17783a1c91943"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0006_portfolio_optimization_random_data_gold","category":"asset_allocation","dependencies":[],"entry_hash":"defb637bc5d6117383a38d5116b09aa93741a6e771653b9055a4d07983e7598b","functional_test":{"relative_path":"asset_allocation/test_0006_portfolio_optimization_random_data_gold.py","sha256":"bf62bdcec457be14d5ab1bfd1cc31cb1d232ac84cebf4fc49c374e8c0fe922e8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_portfolio_optimization_random_data_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_portfolio_optimization_random_data_gold.py","sha256":"7028c40a562ed6961f2386c278e1aa2c20c8926fdffa57d9f07231fc8cd772bf"},{"path":"config.yaml","sha256":"0d7fb7653f7578e3692f8bf788d3b816c047ec2f7c2a7da32f4e60adfc3b4825"},{"path":"run.py","sha256":"74f49f93e67a76aaf5ac786f6e620a9a8e3e829dfe75141193013ac87ae5f871"}],"relative_path":"asset_allocation/0006_portfolio_optimization_random_data_gold","sha256":"f98b003308c6b2782ebcdc5e4656c8866debbabc1c656b6e61ce7f1ad6ffb5c0"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0007_permanent_portfolio","category":"asset_allocation","dependencies":[],"entry_hash":"3361a07ab55dfdee23276535285aeeb8570a9b04883fb2f352246bff28b0764b","functional_test":{"relative_path":"asset_allocation/test_0007_permanent_portfolio.py","sha256":"e94050f621c70aef55df9f611f22432487e045238c01145ea7b11fbc18284277"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_permanent_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_permanent_portfolio.py","sha256":"6a3d25c4fcb7ca14407ca07b4dad8056a6effb3be24243bad8047b05810ec4aa"},{"path":"config.yaml","sha256":"7c66eb800f68292b1f6ec970ccd2fcac88ab9cf97120d331ad96bbc35fc5ea68"},{"path":"run.py","sha256":"9d2f4c8cff1e35ff7ac1d2af1bf892f6b149bc6176060429354a5905bc8ce1f8"}],"relative_path":"asset_allocation/0007_permanent_portfolio","sha256":"087413a752c687dc5715fbd906ebfba5a0d034295488e863d3642d3664e2cd85"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0008_taa_risk_parity_trend","category":"asset_allocation","dependencies":[],"entry_hash":"115767e391d948dea668bbcaca614cd35a24ea08f9e0bf9de274ef96d4eb4f76","functional_test":{"relative_path":"asset_allocation/test_0008_taa_risk_parity_trend.py","sha256":"299e1576a934f5f25ae930d01435246ac2bba4510b973a0f72ba140065d61e90"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_taa_risk_parity_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_taa_risk_parity_trend.py","sha256":"9b762996cf0f73f0bb389ce905a186cd70b172850966e96d5f0cbd6d0c93664d"},{"path":"config.yaml","sha256":"9d98e6cd991564392c44174b845bfe4765de66a801fb79944219902a09f216e9"},{"path":"run.py","sha256":"164a09c7a54773274892c3e34ad16b63eec396997459812178bfd6fb5b472652"}],"relative_path":"asset_allocation/0008_taa_risk_parity_trend","sha256":"9c037498ee825ec17fc839093135bd6f4a2d95e32a231894ddb7fd2797fbc959"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0009_dual_asset_leveraged_portfolio","category":"asset_allocation","dependencies":[],"entry_hash":"86d4852440c85ebe6b22d5911517596b1b31fcaefed5b43cb4b5feebebfabdb4","functional_test":{"relative_path":"asset_allocation/test_0009_dual_asset_leveraged_portfolio.py","sha256":"7b3f0ac54ddecd151f2ffe321525a1eb3fa8d9c307c7ea0318dd778b4adc4f9f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_dual_asset_leveraged_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_dual_asset_leveraged_portfolio.py","sha256":"6bb8234f7a7b54b5948453eacef38a1abf9a2689287494c955383771ba3a8543"},{"path":"config.yaml","sha256":"6f556e0b07382883561ec89b1a45c94044f4267e49aabde3f1daddda02658f0c"},{"path":"run.py","sha256":"c2a06c31404d08d7a083d449a5d64ca69774ccda787e8ff21cbdd2fa8d9907c4"}],"relative_path":"asset_allocation/0009_dual_asset_leveraged_portfolio","sha256":"b33369975cb9f9b1a7a2358efa79f1ecc0779dfce6b2568d26e3068a87881f63"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0010_composite_asset_allocation","category":"asset_allocation","dependencies":[],"entry_hash":"aab4c65f334441aade7828bda9eefddadd2cd63bce617cc0d6e9e72babeaed2f","functional_test":{"relative_path":"asset_allocation/test_0010_composite_asset_allocation.py","sha256":"885b5b901b399f15bb3efa26208c58a648d450d73d4113b8e11f42b8a6021a71"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_composite_asset_allocation","source_available":false,"strategy_package":{"files":[{"path":"strategy_composite_asset_allocation.py","sha256":"86d074746ee945b1c0eee553005c000e5dce8e15e1cd1e53c7e43f82f13992b1"},{"path":"config.yaml","sha256":"4280aecbd99a23e0cd2c011a16be931673e00c699ecfbb2a93e1766ef1718f16"},{"path":"run.py","sha256":"9b8b3b1610533b827a6f3f8143d2b15a9720289f8e942bcbddcc1412835d2137"}],"relative_path":"asset_allocation/0010_composite_asset_allocation","sha256":"118d6d41ee8868eabc7c9a3010ec2971f3dab804d71af3e275dd3336e50c2b72"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0011_sixty_forty_portfolio","category":"asset_allocation","dependencies":[],"entry_hash":"7c948071afa07d5668bbe687181af2c97e3b430bc6d94654973bb5c22dc10ae8","functional_test":{"relative_path":"asset_allocation/test_0011_sixty_forty_portfolio.py","sha256":"cb26582ddba2c39eff1b0d964cbab54fa40560b6d4c9f6ef32f484b03bc897a7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_sixty_forty_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_sixty_forty.py","sha256":"0b4037076ff3f0f1a97441ebff741cbc56ea25b742ff9c660ade6f39fa5de819"},{"path":"config.yaml","sha256":"eab427283370f2f3c5def96e7724dff80591c966226f74a09a315dbae4bd9689"},{"path":"run.py","sha256":"770cca056fac559a3e922d668cb60b0132ca7c0ec1edeb39c45cc98d77bedba7"}],"relative_path":"asset_allocation/0011_sixty_forty_portfolio","sha256":"f85365f7757e468b092d4f25150d0153cf0b0414d2305cf7f1d262d3afb09b33"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0012_hierarchical_risk_parity","category":"asset_allocation","dependencies":[],"entry_hash":"41c5167d75f35e8991338fe25c8fe160c9c02b709f34fec5cd954146a0140961","functional_test":{"relative_path":"asset_allocation/test_0012_hierarchical_risk_parity.py","sha256":"6b18db1ce41085c9f3c5de04e2992d06ba0ecb43fde845b661d0ad0aaeca86c3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_hierarchical_risk_parity","source_available":false,"strategy_package":{"files":[{"path":"strategy_hierarchical_risk_parity.py","sha256":"b0c3c32a40b0b6026858d6f89dac4d7ab64f5d54981967842fa346f27677c0a3"},{"path":"config.yaml","sha256":"03ef64969d183b9b920ff285cbdfd7e6da4f10bb6ebfd79ab413dab1b48a3dda"},{"path":"run.py","sha256":"3bb41c8878581ac8fb764436773b94884f79f42466f02c1cb2a3e73ad43550ee"}],"relative_path":"asset_allocation/0012_hierarchical_risk_parity","sha256":"34bd5d17b88cf5cc2aee9065e3974bb148825623065b540f343c9fff0bd01983"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0013_taa_aggregate_timing","category":"asset_allocation","dependencies":[],"entry_hash":"465ae794b2467010456f6b22b6b4c658252bc8df04fc3227bee2cda86eeb6eee","functional_test":{"relative_path":"asset_allocation/test_0013_taa_aggregate_timing.py","sha256":"dcd623ec9f22a339b00052599387b4c5a73cb9e19cb18f1132b5eb723ffada6b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_taa_aggregate_timing","source_available":false,"strategy_package":{"files":[{"path":"strategy_taa_aggregate_timing.py","sha256":"3adcff66f1c06685de7d7ef36cc04a821a2f25ee4d8e54ae39ff83031efeddbd"},{"path":"config.yaml","sha256":"63d81ec7acee003e2038c6994e3a805174577f471ce978db46b962ae18a26095"},{"path":"run.py","sha256":"05903e4d613cb99047d23544ac5defca2d28f17294609bb2e11eb1edc34eb2f7"}],"relative_path":"asset_allocation/0013_taa_aggregate_timing","sha256":"9cbf1ffae8ff6c41448c253b67a0ab2b8e388b7df502d1edc62f28c48e343937"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0014_anti_fragile_portfolio","category":"asset_allocation","dependencies":[],"entry_hash":"b0922027a6582dcc1e5cbab3b4dede96c4892be0d058cb45b3949d4f17850ee9","functional_test":{"relative_path":"asset_allocation/test_0014_anti_fragile_portfolio.py","sha256":"43db94c513271ff4b5b5e113565a2e4b0bcd3f80c92eec5d5a69297b1ececfca"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_anti_fragile_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_anti_fragile_portfolio.py","sha256":"2d52062c3b2f18c663f3ebcaf295bf904cf45cfb10ddf91669dd9b1addaa7fbf"},{"path":"config.yaml","sha256":"e32724e778095100561f25f368028476e1d1bb41d930fea1d3e7964c67e90488"},{"path":"run.py","sha256":"5aa3034d76837b1f1e2eb4236b8135d22dc2882d2d9f7913452795556396a879"}],"relative_path":"asset_allocation/0014_anti_fragile_portfolio","sha256":"88d3114f38a83d27e1b6f26b59cefd37abfbdc7a50d0b19b0701f75afd28b71e"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0015_herc_portfolio","category":"asset_allocation","dependencies":[],"entry_hash":"14295a289fc7a721976b17c2429b5202a0878b38dde32a55c795d7fdb8dad609","functional_test":{"relative_path":"asset_allocation/test_0015_herc_portfolio.py","sha256":"381dca3739d83402eae625aead0f641730958bf763723bd3c5d5a06284ceaa88"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_herc_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_herc_portfolio.py","sha256":"72ea16fc9497575b1c8403be72be81820c4c7350f73b7e86824fd440583e7457"},{"path":"config.yaml","sha256":"6c93b2e507896bde66e266ec287b3ba4b563fa1041ba94dbab06e954c012f330"},{"path":"run.py","sha256":"d25458ad6e443f0771aacd90a6781d2258398f53f114f48ab36b5b2e50e7a873"}],"relative_path":"asset_allocation/0015_herc_portfolio","sha256":"b502d40db45c4a9ea1c172dcf214b9d347478a63a60fc3693fd5b5d33cb25b63"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0016_open_to_open_taa","category":"asset_allocation","dependencies":[],"entry_hash":"02c3f88c2b94eb4ba2ad286042764a79a78845f8a1d74b1ad7f091fcd9d8fbcc","functional_test":{"relative_path":"asset_allocation/test_0016_open_to_open_taa.py","sha256":"dca02bf6aeb3c9421c6962f93c9b3e5666ed9253496caf50b42d487e1b1a5cff"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_open_to_open_taa","source_available":false,"strategy_package":{"files":[{"path":"strategy_open_to_open_taa.py","sha256":"8c018959f12530272718fa8a46dcd7282e03e1440378fc4ba35ef182144e08bd"},{"path":"config.yaml","sha256":"513d449e0e143891bddcb1a71aef2b83d1812b1e4f75885e2ca23ca4da5f9e2a"},{"path":"run.py","sha256":"fa5454053cf1de89546d5f95d07164406eeacdd32cdafd3f6595a327964bdadd"}],"relative_path":"asset_allocation/0016_open_to_open_taa","sha256":"fa7ced302d471c6e0aab0054f3d824657885b8cdd5ff7ee4082e455a86914fe3"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0017_cppi_portfolio_insurance","category":"asset_allocation","dependencies":[],"entry_hash":"3f64148dc3ac149600e68fddc93747d536df6b49b29bd244b5c88e192e66e514","functional_test":{"relative_path":"asset_allocation/test_0017_cppi_portfolio_insurance.py","sha256":"56264e2093536f47b1019d190dc2537b2e58c42923a70b159a21eb2624255750"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_cppi_portfolio_insurance","source_available":false,"strategy_package":{"files":[{"path":"strategy_cppi_portfolio_insurance.py","sha256":"357cfd29e91eee32d8ed4b47881b05d52eb09edb80b85ab41a2f4946df67e78e"},{"path":"config.yaml","sha256":"cf86fff8b2b09c13a57201ea9597f7228d460702cc2cf2ecbdf914b22f88b028"},{"path":"run.py","sha256":"da7f73b4c313a55f57a5194e1dca3d6a2101f5e86d67a7f7a6bab4ed5dd0068c"}],"relative_path":"asset_allocation/0017_cppi_portfolio_insurance","sha256":"098ec9b0a1f6470fd99cc29aaf5141b34eb730775b77fffb55f59282c08c4b4c"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0018_optimal_gold_allocation_strategy","category":"asset_allocation","dependencies":[],"entry_hash":"a7f5cd497bbeafb75c2183a1117597a32143539d9ce9beea0abe5db5f379e511","functional_test":{"relative_path":"asset_allocation/test_0018_optimal_gold_allocation_strategy.py","sha256":"0c662207c0b6e61f4aa0a80e9598a8adebcf01bf3b2b61e5c7b2f3e11f8ef3f0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_optimal_gold_allocation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_optimal_gold_allocation.py","sha256":"e79fa75dab2e70a015ff28aaa89baeef96b77457bfc4b0b2e6318136e8284581"},{"path":"config.yaml","sha256":"1deaaae3f0229bb166c4126746dfa17225318cb8ec3a40a0576d87bd2c84241f"},{"path":"run.py","sha256":"5f3a3b7edd54a634ada282a4c95d744804a46593c0130737298a9b8e03a40c0c"}],"relative_path":"asset_allocation/0018_optimal_gold_allocation_strategy","sha256":"76955a395fb3359e90216ddf2fbcaf7cd83ae57566c1334fe0b521a245beb34f"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0019_crypto_optimal_allocation_strategy","category":"asset_allocation","dependencies":[],"entry_hash":"7478fd141fdcb63fb72f52efe353f198305740531ea419ce2c03eb882870a4e0","functional_test":{"relative_path":"asset_allocation/test_0019_crypto_optimal_allocation_strategy.py","sha256":"6d7e972d8886f4a88b1216732c9031dbbbf0798e6115b43764927aa7cc06a311"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_crypto_optimal_allocation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_crypto_optimal_allocation.py","sha256":"541c13996e56b67b0ae1de82f66e9f5e280f476e266812da8ded02b627244895"},{"path":"config.yaml","sha256":"4351be416ebf5047e28538f199fd67e669ca2869c916ae40078104d41d68aa0f"},{"path":"run.py","sha256":"67b9be36e569690b4a1b6780a46a55b8b27964691bf5212947b08b7af0617ee2"}],"relative_path":"asset_allocation/0019_crypto_optimal_allocation_strategy","sha256":"5936f0dba9f75841fbc1e012a7c28d77bbd69fd5b020452a69864d0ec7c69c51"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0020_volatility_based_allocation_strategy","category":"asset_allocation","dependencies":[],"entry_hash":"945e1d9bdfc1964cb1ed502c01c822454ba6b288c986b355591ca9d897a73759","functional_test":{"relative_path":"asset_allocation/test_0020_volatility_based_allocation_strategy.py","sha256":"f636a411f4313a2a6ec36df589b7ef1057e53dfce738c9694b119de9268da33a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_volatility_based_allocation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_based_allocation.py","sha256":"3915dbeb8790af70e2c9b4f51bbf99414c4607320b9c0dc4176cc1e58f88eb03"},{"path":"config.yaml","sha256":"8794de360e26a6eed441c3a163ebf4da4422e555b1d14afd990c6782afab192a"},{"path":"run.py","sha256":"d3f84ec1d554b24dbac90708b906b8e484de1c0599125ed224730d05b37be1cd"}],"relative_path":"asset_allocation/0020_volatility_based_allocation_strategy","sha256":"0309d3f9475acaad3f66b9832bde394bd2099d47fed7d4e4457fc162036d9372"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0021_equity_bond_allocation_strategy","category":"asset_allocation","dependencies":[],"entry_hash":"6052964f28be2fd06b788ebc5318faf82a33e9753813aa11345c904031420e35","functional_test":{"relative_path":"asset_allocation/test_0021_equity_bond_allocation_strategy.py","sha256":"386fcee81923130b7f9f55451e722c23d1e81b3a4b15fc32929f7a2c0e2edade"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_equity_bond_allocation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_equity_bond_allocation.py","sha256":"a73e7dababe1930f684d42d9648bdd6ed317079422a68c39b12748a0905d6572"},{"path":"config.yaml","sha256":"b1f0cb7c7a1ed0e4edf34b44fbe8fa53c6558818dccb2f2a69c8404b89bcae1f"},{"path":"run.py","sha256":"4f4188cb04a00d5812e306227252c70668e317bb376151aeb9c83b2c0b5aea5f"}],"relative_path":"asset_allocation/0021_equity_bond_allocation_strategy","sha256":"1def53aff79fddcff1e0622cc7b000432a15087f6e2f98b22b678608c0c1a83b"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0022_adaptive_asset_allocation_strategy","category":"asset_allocation","dependencies":[],"entry_hash":"70c615cff903332d13f35be1880f1dc53babc979721b56d2767f210267598938","functional_test":{"relative_path":"asset_allocation/test_0022_adaptive_asset_allocation_strategy.py","sha256":"44c252c1978f24a2b618217ca95e6f023512e65b2e55402e543c67220ddf6e49"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_adaptive_asset_allocation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_adaptive_asset_allocation.py","sha256":"a549ab13114dfcd974af1111e12b6e561ec15524847b37cc7d9046c33ed80844"},{"path":"config.yaml","sha256":"04a3084934bcb8dc91c1228ec1c66454d6cfe9abd1be73a3d38a012530cedf90"},{"path":"run.py","sha256":"82ae06812c38745c773f9236e4df3295678f1da81ef991a4a82394bacd0b7f6e"}],"relative_path":"asset_allocation/0022_adaptive_asset_allocation_strategy","sha256":"7d97aa9d0511239a8d38b7b60a7ef43d105e90569581fb0f3037226e70637ed8"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"asset_allocation/0023_tactical_asset_allocation","category":"asset_allocation","dependencies":[],"entry_hash":"f869e5d21f488742eaae9da2976289a810bee68d420c08884fb27289175f39cc","functional_test":{"relative_path":"asset_allocation/test_0023_tactical_asset_allocation.py","sha256":"7dfe344d9a54dfab394e99d894bd28a056abfd6c698b87b2fc81a58525a132f8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_tactical_asset_allocation","source_available":false,"strategy_package":{"files":[{"path":"strategy_tactical_asset_allocation.py","sha256":"5e89c87a9c7dde707ff881f9e0ab7e46046ee69869eea0d00bc3725f62d6d547"},{"path":"config.yaml","sha256":"332c6c670fb5a464d50b865a39973a2c1aa871863e4021464a07464b549eec81"},{"path":"run.py","sha256":"8bd5c050b562d9c1fad6eb0471010853fa76594c9f124855e67fbfaf041a5bd8"}],"relative_path":"asset_allocation/0023_tactical_asset_allocation","sha256":"22c86ce3e520cc53b3422ff670016ead6282e972aff139badc95ac36750b5807"}} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/09_dual_thrust_strategy","category":"breakout","dependencies":[],"entry_hash":"0fc4364e3ce31c6783ed246d0faa76666c6f8740438287c1495155c8c6c976db","functional_test":{"relative_path":"breakout/test_09_dual_thrust_strategy.py","sha256":"1f8613169f64cb8f0a95a90ff3d100f1cf62c980e4a1111e93c6fa1ef9f44679"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"09_dual_thrust_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/105_donchian_channel_strategy","category":"breakout","dependencies":[],"entry_hash":"0ed4017a4933be11009294ac92f35752406d4378fa0825472fef5eaab72825a8","functional_test":{"relative_path":"breakout/test_105_donchian_channel_strategy.py","sha256":"3b3227fb2a64149e0d37533522d0b22fdab8ee88218945e7e0a1a13347b99455"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"105_donchian_channel_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/10_r_breaker_strategy","category":"breakout","dependencies":[],"entry_hash":"5397b9950fddcbe2f9dfb8a1e7fca8daa1201cd55158ef23bf478883dd2c444e","functional_test":{"relative_path":"breakout/test_10_r_breaker_strategy.py","sha256":"442ef38f335b5dd1017bd894217565b3783bc2d78e592eca11b6472f4b941ed4"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"10_r_breaker_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/115_volume_breakout_strategy","category":"breakout","dependencies":[],"entry_hash":"78fc190a14948f62ce9088676d791f329f647e59f0f6fbb40aca9d66639876a1","functional_test":{"relative_path":"breakout/test_115_volume_breakout_strategy.py","sha256":"7d9ea48be92f3a2beff7157ae789465a3fadd59df0b8854a3bebc98a3a4d6eb4"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"115_volume_breakout_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/117_price_channel_strategy","category":"breakout","dependencies":[],"entry_hash":"09c0d78abf6873ac38029c8c19ea4a47380b7f83c15a9583c47dd15f193a426e","functional_test":{"relative_path":"breakout/test_117_price_channel_strategy.py","sha256":"6b344680cf98db74ac65d68514661953172ef4857f4dce12f701c768a928a24e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"117_price_channel_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"breakout/66_donchian_channel_strategy","category":"breakout","dependencies":[],"entry_hash":"40ae2266cef562ea491244d8b73da7f9fc8e29fb68d965590485766d09fff986","functional_test":{"relative_path":"breakout/test_66_donchian_channel_strategy.py","sha256":"64acac5ee85c9546f4d08f15e148a5402fe20428a5e88e45572a29c250098dde"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"66_donchian_channel_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0001_0005_gold_calendar_effect","category":"calendar_effects","dependencies":[],"entry_hash":"a528701e3071ec2c9baf74e21c965b2dfe34a07fcfcb1a5c2ded916cf7119cb7","functional_test":{"relative_path":"calendar_effects/test_0001_0005_gold_calendar_effect.py","sha256":"64f0af5cf8e1a545707ee92baa7cb1ed360a147db146d4d9971ca00c9826e137"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_0005_gold_calendar_effect","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_calendar_effect.py","sha256":"32e0e0078e7b563d6c1e094e7cddcc05f1c039b2360cd027d2feae87b50e50e8"},{"path":"config.yaml","sha256":"8622df480b9b6f9954e0731ae30aae609874907f57a89fd48ed2506fcc93e561"},{"path":"run.py","sha256":"b03bb211e1e64e28607dfcd630daae565ff214b213d406d63ead94b7d183e569"}],"relative_path":"calendar_effects/0001_0005_gold_calendar_effect","sha256":"e8aa68ce3e5528e5e20b24d95138e35b25406357bac346d7d75d347aefe3cf13"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0002_0007_gold_turn_of_month","category":"calendar_effects","dependencies":[],"entry_hash":"23ae0d76fef006ad6840f9453bc1617500a90e82ea989ec4a95f8949c567321d","functional_test":{"relative_path":"calendar_effects/test_0002_0007_gold_turn_of_month.py","sha256":"e0cbe1fe8d19b9722b5b6e0011a829d16b43ba1bf13443b5eb8b0fc9749dd05b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_0007_gold_turn_of_month","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_turn_of_month.py","sha256":"b16ec038890caaddfc5adf4ba80fc440e69e6b918fbbebe7629cfe12d8981900"},{"path":"config.yaml","sha256":"ddb8e17e5fd6fd8baf743570c33f450492a49c005f6c8a700e2333576bc2bc0d"},{"path":"run.py","sha256":"3864481f2bc188bcf021afd50b34de6f4064040d25ef2ebebeb05548ce764d64"}],"relative_path":"calendar_effects/0002_0007_gold_turn_of_month","sha256":"baf395a8a8326f0ea913e4cec3ac756788308d424634166e35a672f1a4f32f47"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0003_0017_gold_seasonality","category":"calendar_effects","dependencies":[],"entry_hash":"0aaa624a4c60b46cd862bb53bbdc988bd06254d5575456fdb5ddcbac6552574f","functional_test":{"relative_path":"calendar_effects/test_0003_0017_gold_seasonality.py","sha256":"5c20ccb755b42f7a89bed23a097e224722e988004f35b8ac88b843db9d613baa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_0017_gold_seasonality","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_seasonality.py","sha256":"8b6f1eb5f19edda45a411bc586b2491f4304a42b7845154fdbf0e7677ad9afa5"},{"path":"config.yaml","sha256":"cc7e31b1e990ab1fa34486a4a33e4b777cdc4925be06410d024fad92783f4a90"},{"path":"run.py","sha256":"1fc9a0758fdc516144224c8e94987a15309eaa5351765c5ef68da893952d6c22"}],"relative_path":"calendar_effects/0003_0017_gold_seasonality","sha256":"e358cb3da97a0da6c0c2ff7419f048a7419d6a2bbba446a895c3bfa7d1c081c2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0004_0027_gold_turn_of_month","category":"calendar_effects","dependencies":[],"entry_hash":"739e538c2600bb00b750f22e6c0ccf09c38dcc27873ce040b22c1fdb7df34e47","functional_test":{"relative_path":"calendar_effects/test_0004_0027_gold_turn_of_month.py","sha256":"c3b48092891566506dd31afc7145bd05e624a4cf2ef43b13965de2d3dad85406"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_0027_gold_turn_of_month","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_turn_of_month.py","sha256":"6290df3f01f73ed7289cf4068e0e738a9927d8888248323888efcad0e2453130"},{"path":"config.yaml","sha256":"82286fdb8d6e2dd3ccfbacb932374da9954db5987eb9ea955e8777835ef886b8"},{"path":"run.py","sha256":"7557eaf3b0c7cbd1bc3eca163de97082e03d0c2a24cda205f81f66651a9983b9"}],"relative_path":"calendar_effects/0004_0027_gold_turn_of_month","sha256":"faa7cbc1a90a0f4f350f16a13297e0269a17a01cc0f4703f12edcf6c6edf3210"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0005_0039_gold_seasonal_windows","category":"calendar_effects","dependencies":[],"entry_hash":"4be0704f53eb6c52820d2f48aca6635303ff34eb6cfe7d0983805f16b1975503","functional_test":{"relative_path":"calendar_effects/test_0005_0039_gold_seasonal_windows.py","sha256":"262206d9017868548ff3801ffa63bee87a1919249f45f3696826d64488ee8967"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_0039_gold_seasonal_windows","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_seasonal_windows.py","sha256":"f9d493cce64072beb71fc505a23d391ea284c013ecb8811fa2241f010f5b648b"},{"path":"config.yaml","sha256":"b8a6be1c54ae8f4cae3b25ffaf01d8abb1513da80562ac393ef90091b2ac0113"},{"path":"run.py","sha256":"40df5b241ee83e9505c263adf5f8c40cf5581a83d23b6486e018103da93d70f1"}],"relative_path":"calendar_effects/0005_0039_gold_seasonal_windows","sha256":"fc4b95330b6f0ad33671188f85f48735bec58269719528b72459d53f8d7bf32a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0006_0043_gold_seasonality_rotation","category":"calendar_effects","dependencies":[],"entry_hash":"99ddd480bf3d04bfba864a71262c851153b1cc113ddd2a3b6432a27beb5a1abd","functional_test":{"relative_path":"calendar_effects/test_0006_0043_gold_seasonality_rotation.py","sha256":"81ab03829bb6efa8c847553889d96e357ae4e26d1836f5b09ad8f393ee7103a7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_0043_gold_seasonality_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_seasonality_rotation.py","sha256":"6f60c92781eb11f64405865869e8782f0161bb7d577111f50ff686d1aabf9ea0"},{"path":"config.yaml","sha256":"f873b127d45412844f7f955f5b407b1b4c09ba2e86bd9973943a0f693739f885"},{"path":"run.py","sha256":"4f86b3dcba5ecd0e92182d3f6f6ade835c9dc5b84d61b2c8a30fd7f1bb29323b"}],"relative_path":"calendar_effects/0006_0043_gold_seasonality_rotation","sha256":"fb30ba1e55b945eda21efe8d7e5bbcce9e2873ad60b3339fe8d34a44f0986c34"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0007_0097_gold_end_of_month_seasonality","category":"calendar_effects","dependencies":[],"entry_hash":"f29dca96b8811a2b247f3e2e3dd48ee5348562ac43a2ec7a546039f107685d85","functional_test":{"relative_path":"calendar_effects/test_0007_0097_gold_end_of_month_seasonality.py","sha256":"63ab3d94cdbac3a35a86d877f03b34273c15dc9136e0addabb0fac12cf921332"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_0097_gold_end_of_month_seasonality","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_end_of_month_seasonality.py","sha256":"79e7b2c3bf7733cace054c960708ec0a2d8e37e5619b03d2b62c8579cbe0c372"},{"path":"config.yaml","sha256":"f50ec9483ba9ace98e66c30a15d96ba09ff5e72594a1e7a45d2d472c48058da8"},{"path":"run.py","sha256":"4b5884ff84ce42e38344aa3ab100b36b4b66dcdb941b9d5b4468df139027eb86"}],"relative_path":"calendar_effects/0007_0097_gold_end_of_month_seasonality","sha256":"e8f8ce059d8d7952cab9f569ab1194e8e53ff1f107916786535e78d6b565e6ec"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0008_0103_sell_in_may","category":"calendar_effects","dependencies":[],"entry_hash":"51464c9aca5d3165e24b4d9cf94c3543ab99eeaa7d8685b0ecf31aad0ec768ea","functional_test":{"relative_path":"calendar_effects/test_0008_0103_sell_in_may.py","sha256":"bd08601b17d44ebcc2d006e565f7cdb70b3df3d93f86014da0b806737cd40de8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_0103_sell_in_may","source_available":false,"strategy_package":{"files":[{"path":"strategy_sell_in_may.py","sha256":"53e8d3501b6b26c06675d57adeeb3fb15b4effdc21bcbcde61b589aeb156b6b3"},{"path":"config.yaml","sha256":"c8dd0652b9a2d30eae660cbcaff4967e6c52d92dafa99a64f12db4e34aa62b65"},{"path":"run.py","sha256":"abed896ba7acca4bc76f4196844c25658e8a6c3e7332feeb16ebaa3fb28ee749"}],"relative_path":"calendar_effects/0008_0103_sell_in_may","sha256":"de3440f1414169016107ce002cb65b4dcbc194847353e5a8487b1f93f1ae38fd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0009_0256_thanksgiving_seasonality","category":"calendar_effects","dependencies":[],"entry_hash":"20090d32ba930b282d619b9b69220c38dd953a4f07f0e89a98ac422c165860cc","functional_test":{"relative_path":"calendar_effects/test_0009_0256_thanksgiving_seasonality.py","sha256":"b5a37921cd578f3b065153a3cda650e750379dff849459f486e331804529f7e2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_0256_thanksgiving_seasonality","source_available":false,"strategy_package":{"files":[{"path":"strategy_thanksgiving_seasonality.py","sha256":"606634d5d016c994fd5f5eb3f3ad301b16e04ee53c214ae9daa5c10e37074d2a"},{"path":"config.yaml","sha256":"7e77ec09acdd126dedb478d4a07f8040f746c17169b6c2fd2b132eb1b4eef8fd"},{"path":"run.py","sha256":"686f22ff4762ba1b3131b73bf16043e0de6c348e03d1fce1b584055b15bc7f58"}],"relative_path":"calendar_effects/0009_0256_thanksgiving_seasonality","sha256":"4fb8f99cb93dd48c49a56636a138daae7c2d0db7034f72e0f13bd6da9fae7aef"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0010_0258_december_opex_seasonality","category":"calendar_effects","dependencies":[],"entry_hash":"79a25cccee48da8850301700e058d1aebf6748272d8874d7a5d0aaf49f8ac7e8","functional_test":{"relative_path":"calendar_effects/test_0010_0258_december_opex_seasonality.py","sha256":"097c4e05fb8eb71f1287da6dd539fffb38c1be5a213ac49c70d768b0e848481b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_0258_december_opex_seasonality","source_available":false,"strategy_package":{"files":[{"path":"strategy_december_opex_seasonality.py","sha256":"007460e0c59b321a677a21c1a3cbf28891ca3ff2274eb07dccae2dd9119df902"},{"path":"config.yaml","sha256":"42809e2fb8ec5ef3457f0ec33b40cd0ae477cc9d0770648d7b10993514b0cb6c"},{"path":"run.py","sha256":"8a8825ad0a284c8a7c634535a15640b6af89b24427bf95f2bb462d97b6614588"}],"relative_path":"calendar_effects/0010_0258_december_opex_seasonality","sha256":"51e2be76feb6441e969ae106456e722d6a1653043b7b584ba6b2c0657dbdcfdd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0011_0266_quad_witching_seasonal_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"c33a926255cf1c0aeaebac040c0ee6b2ae77c349c31e496eacd31a50cd80ec91","functional_test":{"relative_path":"calendar_effects/test_0011_0266_quad_witching_seasonal_strategy.py","sha256":"0aaaccaf798985bb1b41ef23af5be77a3862c5a908140f8b1bbff8fc0c032540"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_0266_quad_witching_seasonal_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_quad_witching_seasonal.py","sha256":"8aee43d1abcd24e6d5e622138af64700be30f9e5b9f67a1c43c057fe93601645"},{"path":"config.yaml","sha256":"6282858b339cd0a825efd270914b4554bac21a50e4e76680cec06fd83c75c645"},{"path":"run.py","sha256":"72e7d7ec6a1620b2b28b78ba07b49cf014bee9e81497365611883d54fae09aea"}],"relative_path":"calendar_effects/0011_0266_quad_witching_seasonal_strategy","sha256":"74324c4b8494f368253b29530d655dcace212e337c4c007fa1da5d9d82b0d391"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0012_0275_seasonal_flip","category":"calendar_effects","dependencies":[],"entry_hash":"bf60c0801c87e71af6d5c0adf69e44d33d3fb615d66f1b4996e5c68cff18a3ec","functional_test":{"relative_path":"calendar_effects/test_0012_0275_seasonal_flip.py","sha256":"857aa0d173cb2b85abded20ca282021263321fe3235ecb63e838f8cbb4b6391b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_0275_seasonal_flip","source_available":false,"strategy_package":{"files":[{"path":"strategy_seasonal_flip.py","sha256":"e635833daeb743f2ae994b585e091832bd0b2d770078d82ee43ea573dac4c1c6"},{"path":"config.yaml","sha256":"85125fa8150ccc8f923e1c0a9d4ca04f3affff779e5e672d6d1c9ec263330dd6"},{"path":"run.py","sha256":"149996d43b983bae2e209ba25d21077c214458bc39193bf040ab184e4a0aeb24"}],"relative_path":"calendar_effects/0012_0275_seasonal_flip","sha256":"a1db05cffba57cd46a15f31acb60d5510c68522cce67bb4a8604e1db2fc5a4c9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0013_0281_composite_seasonal_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"b8bbb4948acc08981e912e0882893a90b70e62c5bcf57d5cb3caf83a15260dea","functional_test":{"relative_path":"calendar_effects/test_0013_0281_composite_seasonal_strategy.py","sha256":"33c0ba1cac3fc94918b5319c24cfa222a12b99ec3ca173ac2924cbd9ed9164de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0281_composite_seasonal_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_composite_seasonal.py","sha256":"c9faf1cfd6876f69780b4dc19de520e422668092f82127f3a899ab809f200675"},{"path":"config.yaml","sha256":"2f5084623feec0a51a8500ab1890ebdbb5b8e4e64bc6ffc696144191500203d5"},{"path":"run.py","sha256":"da6f29894a7ec78699fac45468951734132698e8710f1866ef25bfd3a996f904"}],"relative_path":"calendar_effects/0013_0281_composite_seasonal_strategy","sha256":"1e1689d4e47cf848b7d1435b49768f6b2800378dfba18cb4f054bf79ccbe526f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0014_0364_bitcoin_seasonal_anomalies_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"3eb9c6aebd958550a146d4c0c3b9376fb1078b36e3cf5eed011457ed2c7eaeb9","functional_test":{"relative_path":"calendar_effects/test_0014_0364_bitcoin_seasonal_anomalies_strategy.py","sha256":"3dcff39031282c033bfa927e8243dd1286a40c01fd09137923a339a08b2c23c7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0364_bitcoin_seasonal_anomalies_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_bitcoin_seasonal_anomalies.py","sha256":"c50df2449b20519e118b7be37a5fcd7d9959e93a0749a6b958f5df6cd83a5b03"},{"path":"config.yaml","sha256":"1c39fcd36aeb9e9e57a9d6a9cbf51e9833156975fc73c1a3492896839f37ceef"},{"path":"run.py","sha256":"63e4ef0cb86072fcff6c4474f93613f8dd282bb17d6dc9ba34b293963628039e"}],"relative_path":"calendar_effects/0014_0364_bitcoin_seasonal_anomalies_strategy","sha256":"73bf58633def77e2f4dcf45ef363ca3222a0b72480033b07aebac7d41797714c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0015_0366_sell_in_may_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"419d98d8cf7ecf689cdaa0fb97a6600142895685b6c3e76c9274ea5aeb1c9be2","functional_test":{"relative_path":"calendar_effects/test_0015_0366_sell_in_may_strategy.py","sha256":"a96f52612fc79d22c92c3a64faf471d35df5ea800b7318c12b57b79923b21b9b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_0366_sell_in_may_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_sell_in_may.py","sha256":"a05f697d51805cb35139c867c0dfa2fca84eba292fd8e416475e52f1a9dbee31"},{"path":"config.yaml","sha256":"af16a10694c83ffbb64c1da4a9be7622a2b71641acf5d99d0b9997c3c0b86f8c"},{"path":"run.py","sha256":"c590130e72aadadcd23b8aea6f169536973240b0e53d3ba5291b1bdcf7a53fe7"}],"relative_path":"calendar_effects/0015_0366_sell_in_may_strategy","sha256":"1ac40f2e9ab37d5396104ee773af96096994b942bcc6723bb81f352edcaf02ad"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0016_0387_bitcoin_seasonality_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"8687224b49b949abbb52566ce4a22bd09fb0b2e6dee1796fa03a63c3ea3087d9","functional_test":{"relative_path":"calendar_effects/test_0016_0387_bitcoin_seasonality_strategy.py","sha256":"b04126420fd23b62f8d9606925b452b267ab3a10ace44fc4063ce1288b58f18e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_0387_bitcoin_seasonality_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_bitcoin_seasonality.py","sha256":"4749de361c58e7515ec5a3e409d43c9b8096c4c57710d46b01056af25b10eacd"},{"path":"config.yaml","sha256":"b5f8853113873ff9283bfe2f1cb74f49f5638ef31dc31fd6926bbdbcbc052732"},{"path":"run.py","sha256":"bdeffa64b6f11f69b89f2508152bded8149078bff51df55cc1079903afeb1880"}],"relative_path":"calendar_effects/0016_0387_bitcoin_seasonality_strategy","sha256":"208e41ad516cdb28468199cb0cdeba3b727fdbcfef45df916165fb21b779bb5f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0017_0401_seasonal_sell_august_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"7eac20c3452f217bc62933e5d6b8511498d4aca28e7429aacca7874a7dcb8ac5","functional_test":{"relative_path":"calendar_effects/test_0017_0401_seasonal_sell_august_strategy.py","sha256":"b049bbbca6531d96dd6b024eea9fc56a590a13ff9335725fa2f9e1033bd1ecf4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_0401_seasonal_sell_august_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_seasonal_sell_august.py","sha256":"f9d1fd4c742446e01b0c33f00de711f290e8499dd1e25602b72e8c93f5098b7f"},{"path":"config.yaml","sha256":"1518a0d2947bc1586ee9750499106a505874fa347ff91252f5c5cdf4ac46a3c0"},{"path":"run.py","sha256":"c225d63deaf24eec6a23b6c0052152a95c616608b27d367aa0956f3d07d80c01"}],"relative_path":"calendar_effects/0017_0401_seasonal_sell_august_strategy","sha256":"8f8f9dc3c01ef63e4ac175293bbb4b7972a62d4214c2646d9bdf180443d3a487"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0018_0402_seasonal_trading_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"602414ea255b4c49096410019dda5406f18fe9d962baae502b495b85e32888bd","functional_test":{"relative_path":"calendar_effects/test_0018_0402_seasonal_trading_strategy.py","sha256":"b69ed740c26b4d1a4b9bca17ae344a1dd92ff31c91dbf8475863d35a57e78ef9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_0402_seasonal_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_seasonal_trading.py","sha256":"f011eff0c1d5c7ef574c991cac30d8c5bf20df40ccd29582f23a0aeffeb32ddd"},{"path":"config.yaml","sha256":"e2892d3dcc4d4bb28af77dc456cb4d295ff78f6aba838bddc83087bc1cc8d246"},{"path":"run.py","sha256":"a95478a0b591c869c295a779d16972b4e4b7189d37ee7bb9866b107e6fcff40e"}],"relative_path":"calendar_effects/0018_0402_seasonal_trading_strategy","sha256":"e429a8ffa8000f9ed7f99d97b6d1eb9dd633082373f0cd86e85a5c29e202101b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0019_0406_commodity_seasonality_front_running_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"ea7a299ef3e65b796541b97feaedec8900b6de407590e4c9773ad4a2e40a59e4","functional_test":{"relative_path":"calendar_effects/test_0019_0406_commodity_seasonality_front_running_strategy.py","sha256":"020896065039db2413418646102843e130f8a9afbeb1f69862bcbef4da64cf87"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_0406_commodity_seasonality_front_running_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_commodity_seasonality_front_running.py","sha256":"1139c66edd3d2329ec892ffab3dee76700ea6509c4e99b3a46b1abf9d97b8eaf"},{"path":"config.yaml","sha256":"1abfc4bf1b980e95b68cffd5d7efacd8464cca227e24577f4171f397a8323b71"},{"path":"run.py","sha256":"7df2287683b1f338790e6cc0be9fcbe8a11d2efbd71cecc0d10ddfa8789dbe0e"}],"relative_path":"calendar_effects/0019_0406_commodity_seasonality_front_running_strategy","sha256":"88ac47c0a6d05107985125734a0abaeba2a7f48e6c2efb6bab1fdd4365e19a64"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0020_0407_turn_of_month_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"6b364dd5951c86884e58661f10d22bfdcf382a4ba4db2e4b8cbbc89b1280fce9","functional_test":{"relative_path":"calendar_effects/test_0020_0407_turn_of_month_strategy.py","sha256":"dd00af985cd7195f7c14bae6e8941149cf2273a7ee6a90b2256390eeb4ff8eb5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_0407_turn_of_month_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_turn_of_month.py","sha256":"a2cbdc9453262b8974a1fa865820a74ac9a468c7b8be0085034af5f5df74c6d7"},{"path":"config.yaml","sha256":"474ab83256f60944e3ef58828133357375dd9767589c3a9b0cbadaae2295850a"},{"path":"run.py","sha256":"7603de45a6eaf133082f4407af94e367e4b004a307bf71613ff83ee4dac14997"}],"relative_path":"calendar_effects/0020_0407_turn_of_month_strategy","sha256":"faae39f78304f6a9729581eff1fd0776fa254e7478e2855438ee405d53831448"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0021_0412_cultural_calendar_gold_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"883d2d8207ec111188ccefb817abe69858785fe8f496ec73566b1c0ce9399635","functional_test":{"relative_path":"calendar_effects/test_0021_0412_cultural_calendar_gold_strategy.py","sha256":"d131d85684da5b4d476c227496fe6874c3962ebcf072520e085b2463b27c442c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_0412_cultural_calendar_gold_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_cultural_calendar_gold.py","sha256":"a7165885f6c7050c07173b6a3d28bd49d33c72e684a391f947c6060d18d3eda9"},{"path":"config.yaml","sha256":"3f5cc06ac40d160dceefb2cb5b3d358986a684f873f64549c193b5b3668d9a31"},{"path":"run.py","sha256":"28af1545bc2943bf617e87500a89b95230892b202b817013b26222e8a9fa3672"}],"relative_path":"calendar_effects/0021_0412_cultural_calendar_gold_strategy","sha256":"9717cf198663fc1cdd4924ca135c1212a90ae69e90f8cb605f480fe586cdf818"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0022_0016_gold_fomc_effect","category":"calendar_effects","dependencies":[],"entry_hash":"9183938fb0c68aeb972d104f690d5a6d8870b47dcdd57d43a7e52ddf9d127efd","functional_test":{"relative_path":"calendar_effects/test_0022_0016_gold_fomc_effect.py","sha256":"0130b99a21924e2b41b3de3e24580879c7eba7230b872fc9c54b1cd8af92eb64"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_0016_gold_fomc_effect","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_fomc_effect.py","sha256":"15930b6f7492fa4287e4128063d5d0bf7a71aacf4e6f34c010f62387a1b53565"},{"path":"config.yaml","sha256":"e4219fba74ec0aeeef3e7c5722463deb1d47e886838a928700581b5c964e0046"},{"path":"run.py","sha256":"b750943a82861439a02344fee41f1007674d8d090b4a925e130f1cedcd2c2b8d"}],"relative_path":"calendar_effects/0022_0016_gold_fomc_effect","sha256":"54396978381067bc9959a400529f3f1f6928b523189982fd3d8c6c72b2b5eca9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0023_0079_rate_hike_cycle_gold","category":"calendar_effects","dependencies":[],"entry_hash":"48f30c0e71e764608aea8ca951993d734e5bd7a411b403e622d966f42b74eeb6","functional_test":{"relative_path":"calendar_effects/test_0023_0079_rate_hike_cycle_gold.py","sha256":"6b4a9ededfbd3afea2aa4e6db473aeefa357e4f01bc471c384a402b9599547e4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_0079_rate_hike_cycle_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_rate_hike_cycle_gold.py","sha256":"bf1eb53139b8088cd84d766c94baff41348d9a8f8f073895cb763144143b39b2"},{"path":"config.yaml","sha256":"a152a86889880397465f5f13d1e2e50572e056e2f5e446711ec3fbed5c37eabc"},{"path":"run.py","sha256":"ee9c6ba624c01569f82c05d4f91c8a48e9a3441e9436240300d2e1245394b400"}],"relative_path":"calendar_effects/0023_0079_rate_hike_cycle_gold","sha256":"c85b146cdbee27a82644de4a1b6f487b4afa49350ca1efba93c6f79f9dec57a5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0024_0276_jobs_report_new_high_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"1bcdb89ff899e440c450dd86c996d7d374aadfbb846f063e509bec7ef73ee412","functional_test":{"relative_path":"calendar_effects/test_0024_0276_jobs_report_new_high_strategy.py","sha256":"14dc56233d79b5d2d7576bce3c55a2b7ba01d7ba17c12ba07b29cd0b9493040d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_0276_jobs_report_new_high_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_jobs_report_new_high.py","sha256":"46ee29edc91002e6f6af6d712b673edc49cbaeb5d3c08b910b1c121373b25aaa"},{"path":"config.yaml","sha256":"49256cbe6c04223cdfd95269a6dcc177a1f4479b2430cfff0005ffcd4270e041"},{"path":"run.py","sha256":"ae8fef86a8c8271260aafabc03b5b64dc9366cdf0883895a71f2cc502d14427e"}],"relative_path":"calendar_effects/0024_0276_jobs_report_new_high_strategy","sha256":"c639da799afdfbd94ccf0e01d0dabcbac7f592e3ba2f1e1df3760ee9a8556b0e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0025_0282_avoid_earnings_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"3dd616d31831fd14e21819e7aae779041730a9483e7afc4de014b1dd1d472de1","functional_test":{"relative_path":"calendar_effects/test_0025_0282_avoid_earnings_strategy.py","sha256":"6243d319df336ada0708abc5cdc2bb59fd5be51f4e78ed0722e054bd7cd4d668"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_0282_avoid_earnings_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_avoid_earnings.py","sha256":"de8557ab0b614afd21b222ddaa907c50b168ca178c13444e6ef51a3f82bfaca9"},{"path":"config.yaml","sha256":"b9eed9ec6499d6dce066a8f917bf5943f90ad2dd43cd2dfd52225f0744e97fdd"},{"path":"run.py","sha256":"d75554c2aeb1ad90bee8a2bb27219bdf934872bc58cfdc43907c0771d36c5a63"}],"relative_path":"calendar_effects/0025_0282_avoid_earnings_strategy","sha256":"e14f3eb1e63d0d4661f61cb35c934a57cc56e75db597735fa05a7c1278afbe14"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0026_0306_pre_election_drift","category":"calendar_effects","dependencies":[],"entry_hash":"1b417fe8f98e3725a9892f826c1e755139b944e4ade70d10ea6fb346f41ad8af","functional_test":{"relative_path":"calendar_effects/test_0026_0306_pre_election_drift.py","sha256":"fe7c00599b616288966e02bdbb570dc039a3f40d9e9216d1f9841cf9b5cb9595"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_0306_pre_election_drift","source_available":false,"strategy_package":{"files":[{"path":"strategy_pre_election_drift.py","sha256":"d2251001720286d8d15b3607d88f20c1983d77130f6adecbc72d9a1f4b31ca29"},{"path":"config.yaml","sha256":"ca863ac1c6fa0593677735c55d75672e991cba35974992eda36a505aa895c245"},{"path":"run.py","sha256":"f36834472f70e2b4c95c2b9c25bf7764d86758b8d1b567a8d7da469468edcf2e"}],"relative_path":"calendar_effects/0026_0306_pre_election_drift","sha256":"7fca17d7780b835bc695775990f3fb601d96ba6f1a681121df50328d519c6860"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0027_0397_fx_news_trading_strategy","category":"calendar_effects","dependencies":[],"entry_hash":"9adb9f01cdf94ce500660b8f7d4585acd1c67c491893f1226fce52c17879c6ee","functional_test":{"relative_path":"calendar_effects/test_0027_0397_fx_news_trading_strategy.py","sha256":"93e4b6ea7cd3940ed2363d5365eb3b450cee6af2087ec71e3c3916c010d88835"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_0397_fx_news_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_fx_news_trading.py","sha256":"913709e136ed62f6f48e414a4dcbe101a0480784015fba4f702969d0dfb5f940"},{"path":"config.yaml","sha256":"38cc8111cd526aa89366caecdaa406330da1ae40da01c1a0e249f04a38ae362a"},{"path":"run.py","sha256":"736ab5053da419c6f7255e0d4a984f45c9de01599b79c4828fba9335ebef4e74"}],"relative_path":"calendar_effects/0027_0397_fx_news_trading_strategy","sha256":"55fe123e9eeb6fa666595a14082ee7a49fcbecd6e32395ec81f9cd5fcb595277"}} +{"archetypes":["single_data_indicator"],"canonical_id":"calendar_effects/0028_expert_news","category":"calendar_effects","dependencies":[],"entry_hash":"6d953127a4b4c0beaaec5831f45088b23010133aa83b11c72fa785e7b2e6b9af","functional_test":{"relative_path":"calendar_effects/test_0028_expert_news.py","sha256":"13dca26cc1ce6aaa23f1b920e7f59c26961b53d2c74d332cfe6e45b25fccfb1f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_expert_news","source_available":false,"strategy_package":{"files":[{"path":"strategy_expert_news.py","sha256":"dcef6a78ce135be54fdb55aae85ec36c090a279c43b2d4d38cd2de8689386d29"},{"path":"config.yaml","sha256":"31f11ea5447efc249cf529652c5d80c768134b2fbb1219a52431e449ac80c6e6"},{"path":"run.py","sha256":"a3fe4c9b9c410ff4fcb0a441565d2bd143ad063b688c7bf311522a5fb20ff697"}],"relative_path":"calendar_effects/0028_expert_news","sha256":"76a25975fab68bac7ba418ab44a3983811d7689942c0536c764fbb0d8bf2fc5a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"carry_trading/0001_0031_gold_rate_carry","category":"carry_trading","dependencies":[],"entry_hash":"346c46b4795a3596f80adb702943a7e38b2faece1bc23c39eb3d46e965d4bdf8","functional_test":{"relative_path":"carry_trading/test_0001_0031_gold_rate_carry.py","sha256":"aa357698e18da30d932a6d7ba41a02fda4479e4b7ad6a179bbe24af2d18fdbf5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_0031_gold_rate_carry","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_rate_carry.py","sha256":"c65352a0d57e6f9cc4a7bc78c8cce7378b40870e5a72d6258ecbcbe4321e7045"},{"path":"config.yaml","sha256":"82a548dc7e847183b695e7671958a1006b16fd928bbf2ec818d6350c1589596f"},{"path":"run.py","sha256":"8f784d345335a3ec4ac49bbab1c944ea25f7320005854e446a7b52198ecbd84f"}],"relative_path":"carry_trading/0001_0031_gold_rate_carry","sha256":"05507d7219d4674e1cdb576b9552d7490e5688a83ef3ec26e1d2b833f3c3f5e5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"carry_trading/0002_0050_gold_relative_value","category":"carry_trading","dependencies":[],"entry_hash":"79fdf107eba44eb2ade35ed30d7e1abcf79f6c74a4b43ecf7194e0b7b7457df9","functional_test":{"relative_path":"carry_trading/test_0002_0050_gold_relative_value.py","sha256":"7d684c872d5c943aedaa32f1807c17d12e6ce7ce8d74404c90c5a6cbe375fd62"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_0050_gold_relative_value","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_relative_value.py","sha256":"50aa60cc5972b3f7dffd51d38d4f4cfaddfdf89507d4bac58283aee73f40cc1d"},{"path":"config.yaml","sha256":"efe3b763cc01ecc9c51843901c2455e32702021293890f683121ddd56bcedb6a"},{"path":"run.py","sha256":"1e38bf77eba3b06736f63474aceaf766326ba1528108a64b680dd13a700c0dcb"}],"relative_path":"carry_trading/0002_0050_gold_relative_value","sha256":"da22383b7bc512448aa75f81094ea056b7505ea1e521be68fc6b19bfedad430e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"carry_trading/0003_0393_carry_trading_strategy","category":"carry_trading","dependencies":[],"entry_hash":"dc5303e264b93d740b04bb50a401a19ada74f17f1e06f4b3795cc23c8b075209","functional_test":{"relative_path":"carry_trading/test_0003_0393_carry_trading_strategy.py","sha256":"5c5948275ac87e90ecb0827a6d2156a333c604135d9c33d26e784495ce4a5586"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_0393_carry_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_carry_trading.py","sha256":"fcdd5d7f2cfb12ea8c2e4f85b0c2a9173526856e51a59dca8ce7ea96e937bbd6"},{"path":"config.yaml","sha256":"afd3e769bda4ab612ceb662433bcb40e494064f924eb81ed995a2942a2ee2f76"},{"path":"run.py","sha256":"ced2f2fa96bdd64eda2e4a514f4d18d4f2004b96eda4ade09df9734380480a65"}],"relative_path":"carry_trading/0003_0393_carry_trading_strategy","sha256":"3519a6a2ea7ee604824a50084409c22e3600f7ab8b3a479003750a6e54378c92"}} +{"archetypes":["single_data_indicator"],"canonical_id":"carry_trading/0004_0394_commodity_carry_strategy","category":"carry_trading","dependencies":[],"entry_hash":"23a4c58b1abc19a46d7db87496062120af00dda84f74d72d7ff435b177244f21","functional_test":{"relative_path":"carry_trading/test_0004_0394_commodity_carry_strategy.py","sha256":"0b6b93aca9672b09601c91fa88568f45103fe2a6845002396831b0a78bfcb361"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_0394_commodity_carry_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_commodity_carry.py","sha256":"14b8fa79c65bc120f69e02548a000f8410121c8cbfd1d9ee9fbbb7dd88833407"},{"path":"config.yaml","sha256":"6dfb1beed912bdb8780929c201d1c8f35ef97ad831d6b1b12995ac826be5d30d"},{"path":"run.py","sha256":"4370c7462da91f43476dfd0b8f7f9c3ae21339c292a138b8b177af644640c441"}],"relative_path":"carry_trading/0004_0394_commodity_carry_strategy","sha256":"fd1b2b0969eb89ddb088f6a5b129a95ea869c57d37f9ad28fbda0b01a4303a53"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0001_gold_change_point_trading","category":"commodity_currency","dependencies":[],"entry_hash":"5b54d8eb38ef4d49179e68212d8996df72c74dbd7305ff9cc30539486b213523","functional_test":{"relative_path":"commodity_currency/test_0001_gold_change_point_trading.py","sha256":"ffd9397a26d989a363605be56f4e5fed10e02f5c9988ad2237442ba07d5ec0ab"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_gold_change_point_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_change_point_trading.py","sha256":"d81be63b545adf0bba175123d9b1043c9dbc6bdbcc40660fe0eb2aceba459ce2"},{"path":"config.yaml","sha256":"c57e31628c27bc0ed7b46381223bca323d3761169a889618645b1c148cebf945"},{"path":"run.py","sha256":"33fea74551fa07eee03791198748690f34ae49c0bf712be210c36b0f0ce56e19"}],"relative_path":"commodity_currency/0001_gold_change_point_trading","sha256":"70ce1633cc7b238a9a40d02a21270742f63244c1ca04d26dd7a500f3500c4228"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0002_gold_walk_forward","category":"commodity_currency","dependencies":[],"entry_hash":"6e6d667e6f0b468a05e4ddc6b28bd949d69d05526e889df0933199206d0f4212","functional_test":{"relative_path":"commodity_currency/test_0002_gold_walk_forward.py","sha256":"01f7237ceabaf8deac15901306c8e3c4530c427e6102fa2b74bdf0b423499859"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_walk_forward","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_walk_forward.py","sha256":"7b23cd3eedda8eab8ac6526c5af5922c9918a7d693cc1d63e1f77befa854c373"},{"path":"config.yaml","sha256":"bca05d6859a95f57b59dfd72e2cac7f98b78b7e2b3958dd94de066c79da45deb"},{"path":"run.py","sha256":"e39d68d25a065c1c729794aba6512a71c4209cb45b566b04957179fcd88edb9d"}],"relative_path":"commodity_currency/0002_gold_walk_forward","sha256":"1f2dfcae51681aa711a1605438c0b3c916bc47b1c086ec4ed198a8b1a652b950"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0003_gold_factor_timing","category":"commodity_currency","dependencies":[],"entry_hash":"7a21ae9ca43cd18c78b3c975bc3a39e9cef94864b9a0198683700bccc562094a","functional_test":{"relative_path":"commodity_currency/test_0003_gold_factor_timing.py","sha256":"9da387000b6cf0366040d9be636092d7027a8694bacb6f4ebc5290fd26ae984b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_factor_timing","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_factor_timing.py","sha256":"4283d7211c2ddf7c25c09b9e9d7f36ad376aef590f6eab4cf62c9b424d0aafc6"},{"path":"config.yaml","sha256":"91ff907c99691579d7a952443d263d3ccd17fa17a1bef2b3c84eb2f80250e77c"},{"path":"run.py","sha256":"1fe48ecec8fbe4a4fcd4f912c8ea78470c4f6943556c543a39a4ccb7a343dd2b"}],"relative_path":"commodity_currency/0003_gold_factor_timing","sha256":"b12ed0b52f772a8350639d8f0f2978af91cfd56c22e3dbe2e9a893d38a910dbc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0004_gold_cot","category":"commodity_currency","dependencies":[],"entry_hash":"a2cdee136192d4d096fa7f87906d08f9c004cbd60d7909dc3dac416ec524094e","functional_test":{"relative_path":"commodity_currency/test_0004_gold_cot.py","sha256":"38df406c0aa56623724405360918d1f6852cac04587ea9bbe1d44554c9c71f93"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_gold_cot","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_cot.py","sha256":"083dcf45127d8ead68866ced18180eec3b8848a4a9ba5e02c1823b31a0749110"},{"path":"config.yaml","sha256":"87e0ddfa2d855ea8b633c41a54c9ca6462eabcd60732bfef35dd5a84e38d882b"},{"path":"run.py","sha256":"3c81795985df5698bab54654ebf93094ee4111c959ce8ffabedef58a85d0e78d"}],"relative_path":"commodity_currency/0004_gold_cot","sha256":"3599a88c9f60f0848bfc234a50f7f240491170712739dd17e93a05a568c37699"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0005_gold_currency_prediction","category":"commodity_currency","dependencies":[],"entry_hash":"77f2004cc34aaedadcf5ee5cb4becedaae529369be7861bb06beb53e06f076a8","functional_test":{"relative_path":"commodity_currency/test_0005_gold_currency_prediction.py","sha256":"07f3281a573e10062d48cdddf3fcdc26d628d86f3d3aa4c6d9b655c26e5276f0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_gold_currency_prediction","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_currency_prediction.py","sha256":"696427bbd29789ffb9a698c74f9bc6631c9810f069591a3fd27fada315f1c7ac"},{"path":"config.yaml","sha256":"3f5a874d93143e33e766a4716844c7ab03c71463f41b82a02c76b5e017db5c4b"},{"path":"run.py","sha256":"c8d0255d66b4481c29ff0f2ff5e82c34ab2287a3718d21cd5e6ef232117dd8dc"}],"relative_path":"commodity_currency/0005_gold_currency_prediction","sha256":"9e4bbdfa68aa7461e60bff41ff40ae983d822b67cda7ba8421302636d2721db6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0006_gold_commodity_trend","category":"commodity_currency","dependencies":[],"entry_hash":"c3c1894b8f4434801e94bf2538c127d1acf9bc07ac52b9036a2643fae6517839","functional_test":{"relative_path":"commodity_currency/test_0006_gold_commodity_trend.py","sha256":"cbe69562754974e80db5b65738c47f2e4a46573865cf6aedcd9980a9e3d11202"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_gold_commodity_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_commodity_trend.py","sha256":"eb4bbd1df44246082f88f5a92437bc755f25a9ed095fd189ec9084e3b525533c"},{"path":"config.yaml","sha256":"bb17565c8d74adffa5d2e34d3be3c0f3a30bd03029fa82341db04e428754ca8c"},{"path":"run.py","sha256":"e4fbb57b971f2476a8b384b577560085dcf69f61b0fb538e44cf8a3083528e80"}],"relative_path":"commodity_currency/0006_gold_commodity_trend","sha256":"8ee61028110e304a8c8163f6e7f043f21ef5462bde6224b5867d5052ae4f954f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0007_gold_quantpedia_strategies","category":"commodity_currency","dependencies":[],"entry_hash":"2ca12dc729c9349dae4e6fed2582fe33204ebadd1411edbc4d6ea1db306d8fb1","functional_test":{"relative_path":"commodity_currency/test_0007_gold_quantpedia_strategies.py","sha256":"cdf63e95b533fe06004f79c92a591d7f2beaba3ae4b73c55e882fe9df7d7982d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_gold_quantpedia_strategies","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_quantpedia_strategies.py","sha256":"0e19d920fa0bd267c8f87d2363515cd2d1de14b819a4da574a1c6b5b915521d2"},{"path":"config.yaml","sha256":"7523a4d4d5486693fb64e2fd9dbf2ec81143732bc8e6c4a4c1b48fc8c93532a9"},{"path":"run.py","sha256":"d2bd710bf51b6eea740fe6457ccb592a02e5eb21c619ca13dc3e28a1f22f4645"}],"relative_path":"commodity_currency/0007_gold_quantpedia_strategies","sha256":"a1b862e5af47adf18be93e47414cb9eeafc922c442d1b7fc5e49e0fc095c2845"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0008_gold_strategy_lifecycle","category":"commodity_currency","dependencies":[],"entry_hash":"719542e57ba81096e960c30465a14e8ea198fcd32f94588d0a4e79e3389eabad","functional_test":{"relative_path":"commodity_currency/test_0008_gold_strategy_lifecycle.py","sha256":"8b4913a07d64ce317eafdbefa5ce18debf981ddd84c9a4001f0409b58713fd47"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_gold_strategy_lifecycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_strategy_lifecycle.py","sha256":"d6bbf6bc4767b1f7cdfb1be94be60463bb3917f426f1b33936bff0614936ce1b"},{"path":"config.yaml","sha256":"30952c5d30e9e7e3a4696ebe8181414a8b8216e59b9caf95dd53e2c618b61541"},{"path":"run.py","sha256":"6bf4836eec4b37f39c1f7b66f11d9fbf5119b13680a2c531faf545ce93c0db20"}],"relative_path":"commodity_currency/0008_gold_strategy_lifecycle","sha256":"6adace6f21033c61351232f63975fad7ccda6545ae319d980735643b84b65f18"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0009_gold_ranking_system","category":"commodity_currency","dependencies":[],"entry_hash":"ede9e1c4c04f711b7f73f7e2b5704d866918094652fc361d984eb8e9df88ed16","functional_test":{"relative_path":"commodity_currency/test_0009_gold_ranking_system.py","sha256":"926a81fc768c20c88fa39f2119963f85a755a3651e227cbf8c2e2b9a29ab7c99"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_gold_ranking_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_ranking_system.py","sha256":"f7486160c9eb82fcbe84f450bc9bdfdd7b85eca9ea1084ea457b60eee404b5ef"},{"path":"config.yaml","sha256":"15a22c3ab85936551420f84dcef4cbd3eb59baee9d5b93abd81d76ae6852d4ce"},{"path":"run.py","sha256":"fd1666c8c01c84885be2e9d2e23104f93959aef61e6399de42136dd858b175fa"}],"relative_path":"commodity_currency/0009_gold_ranking_system","sha256":"20e92d5034648ee9990a669e2b50c1f9815a664c0e0ecf2f6e5654bcab89d5b5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0010_gold_real_rate_signal","category":"commodity_currency","dependencies":[],"entry_hash":"267fbb612add5f9b14d95ce6932fc005ab76ec67ce35761b61a58592b8b81f37","functional_test":{"relative_path":"commodity_currency/test_0010_gold_real_rate_signal.py","sha256":"ad612dfe0ffbbf4c007b83f25e68f496b58b9477677f8815e73bad6921689f34"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_gold_real_rate_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_real_rate_signal.py","sha256":"958a97fecdb2f067434a2cc3d5b08f996e64fb59382d728459f6ec1f34cebf32"},{"path":"config.yaml","sha256":"f7208441686dc4f2e8cc158f7aa70f5eeeb668d902fd4783bae081cf3ef5f41e"},{"path":"run.py","sha256":"5f26b05359f13d62066252d945d433c44049f1a3708e948bd54cad597c87bc51"}],"relative_path":"commodity_currency/0010_gold_real_rate_signal","sha256":"90fdc385ad2afa6a62dac3453b85f680da6c59d04c99ece2feb3c157f2a028a0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0011_djia_gold_ratio_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"3c2c1b1c6da37938d9f057924a0d2d1ea319bdc2f31a427788fb81f46d2aabde","functional_test":{"relative_path":"commodity_currency/test_0011_djia_gold_ratio_strategy.py","sha256":"a3d6876a5b76d61aa183925cd8828bbf7e975ecce1039b662be6ee417fe6d0d5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_djia_gold_ratio_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_djia_gold_ratio.py","sha256":"d854ba22713d3c84316c0557fc725b3327d95ba49eeb38bcf4513d1cf653f347"},{"path":"config.yaml","sha256":"85573c80b7dd71baed5e474d30a884b1f99cb6c313efa0ae42eff090021e18ec"},{"path":"run.py","sha256":"e3715cfdaa492bd7c5afc21e4e3cf6642733930ee3eaaba428a0ac3ee52ffa3e"}],"relative_path":"commodity_currency/0011_djia_gold_ratio_strategy","sha256":"7b2696f063869fce3f0cbb3f3e9c16610a33d3aab5b041a9c0570611a7be1146"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0012_gdx_overnight_session_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"6569587df56423b304e74be115fe2a781789287bdca81bef55e22de88121edbd","functional_test":{"relative_path":"commodity_currency/test_0012_gdx_overnight_session_strategy.py","sha256":"638e1e7018adb095cdbc8dbc558fbd123a3eb00c15aedefba0987d47159a8f23"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_gdx_overnight_session_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_gdx_overnight_session.py","sha256":"df4c095b0d28ce6889f71df91f7fe4bf2cad05ce6ad6eb691d57f616649dda4c"},{"path":"config.yaml","sha256":"3382d79a0c8f4991897f2f124cafe69b47751393243101dcc388c213e6d3266d"},{"path":"run.py","sha256":"63c575dced1c7e22800320b4dff928b834f198c6cb8b5a2372527f9c02653ebe"}],"relative_path":"commodity_currency/0012_gdx_overnight_session_strategy","sha256":"501f9e48c9fdb4cef74bd290b5f19effbb47898f7bebea552a42afd3e9b9ed9e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0013_arima_garch_gold_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"d4c6894b1ed482796e38366a82070ba86c4346dd2985cca1bf9c6edad6e2ac81","functional_test":{"relative_path":"commodity_currency/test_0013_arima_garch_gold_strategy.py","sha256":"d4dc478665d0f5538f8514082b4dbfbc5496f76cbff9642e32a5ea5b7a799c16"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_arima_garch_gold_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_arima_garch_gold.py","sha256":"f9004d83b519cadb02d5bff3bfd4e440619998f1ddb29b5914149b2cc87c47e7"},{"path":"config.yaml","sha256":"7aee977d0315d75d167f175a4df1bf4d87ab1409da97cda66d66c893575ae564"},{"path":"run.py","sha256":"50dd5630b46385648f4e29d33c82b3cb55288eb060d291ecac38a93e694da9e9"}],"relative_path":"commodity_currency/0013_arima_garch_gold_strategy","sha256":"45cae3b5a5414d8847a06e8f886f5e730363e1d25fa3654efa6d12e572acda14"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0014_gold_market_timing","category":"commodity_currency","dependencies":[],"entry_hash":"c9326f106161a6a5e6ebfb5be705f61b40a768afb702a1603abaef6613489d38","functional_test":{"relative_path":"commodity_currency/test_0014_gold_market_timing.py","sha256":"f4f9426ec47d8fb9747445d4fb04031f8f8abc698b9c8570ec13217bb4b7ac73"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_gold_market_timing","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_market_timing.py","sha256":"094e8c87e09aa11b80105cc6bab646fbec963eee5f4de45eda6eae45ce1eb8c6"},{"path":"config.yaml","sha256":"5dfb9990934bde092d14f1bf073acb8929bea19229ce91c56e455ca1bccc67f3"},{"path":"run.py","sha256":"cb0c1c3ec46e6a48b82e069daa9f3261008cb85796e0b0673545d191475280a6"}],"relative_path":"commodity_currency/0014_gold_market_timing","sha256":"849e8313c94ce3666dca9cc84b8d1d7fb28f1b3b7403ef38f73d21df48579faa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0015_commodity_skewness_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"7247b137e2aec390dda047d10aa813928c731289be1f77ab279567f47df68fe8","functional_test":{"relative_path":"commodity_currency/test_0015_commodity_skewness_strategy.py","sha256":"5d5a139e3feeaeafdc16b5bbdb25319b4f7499048e7444d8fa9f64234deab360"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_commodity_skewness_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_commodity_skewness.py","sha256":"0d42ed09cdec458d4dfc4704b01d4bc1a0dacd8739e45e3c59cd4902ad73caf0"},{"path":"config.yaml","sha256":"b3e575ab6ebe3104e18e5caa8c06c5d61e7d93552bda6284f51602d7a0b28a58"},{"path":"run.py","sha256":"1af44cf8362cc3250f5a072808a6243073ebc4019a8deaecef1cf6cf01a29eb9"}],"relative_path":"commodity_currency/0015_commodity_skewness_strategy","sha256":"fdd54ea09440462babecebaac96a4c30d83f9b22fa71963dec166d71844515e2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0016_macro_fx_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"c9315690661908eb2c5155e0e145e4e4516353797086d341601ba7fa8068add7","functional_test":{"relative_path":"commodity_currency/test_0016_macro_fx_strategy.py","sha256":"04f854f5693aa5dc5451f4c105896a018863e1c9474d3abfb3c68795472928db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_macro_fx_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_macro_fx.py","sha256":"726495ec40535579b611bfcb05632475f574a4062257b4fd23d1163abe03853a"},{"path":"config.yaml","sha256":"8643085ab43514abaec6ae4aacb89cd6824cd11fe9f6d8e26e61b75f3af9d4c4"},{"path":"run.py","sha256":"4ad1cf7e566076e2627f44dbe640a4d7c2d98242abc9370ea5a9b1c95c6cfe2f"}],"relative_path":"commodity_currency/0016_macro_fx_strategy","sha256":"17cd2880128fa67a4ff09ca5cdf9c63dfda4a7ddb4985605e902cc5117a82345"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0017_metal_inventory_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"ddfea026a186a3bbfca1d9746e93b1575c1cbbbdc2f23a59ed9badde2716e7cb","functional_test":{"relative_path":"commodity_currency/test_0017_metal_inventory_strategy.py","sha256":"a9c08fa497d3319d53ec35062d5765570fee7b9e1dcf5534ea46960249c4cfe7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_metal_inventory_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_metal_inventory.py","sha256":"f8aa7e87a5a9b080ad1aedd7737cafb76d5313ae31f2a140c90aad12dbd93b13"},{"path":"config.yaml","sha256":"71274e24fc894a0d85323ae3a6220bb72ee0cb403f6ae1581cfa4fdeec1a83c7"},{"path":"run.py","sha256":"b945e7b7fd07b35387dab377681c1c1f957fb296bf193f33730377952e075b1f"}],"relative_path":"commodity_currency/0017_metal_inventory_strategy","sha256":"326a6cd5fa96b6c8a07a37fdd737cff447b474b8d2fbe13da925e4bd61ac602c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0018_fx_regression_learning_strategy","category":"commodity_currency","dependencies":[],"entry_hash":"cae1efe7263f17631e4165d95576dd851a29e8495219c9c0a500e20ab46943f9","functional_test":{"relative_path":"commodity_currency/test_0018_fx_regression_learning_strategy.py","sha256":"9d1cbcd5dbc5582c6e28484a98d261708380576ebff40c0b5e625e4a568e591a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_fx_regression_learning_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_fx_regression_learning.py","sha256":"2401a5d89f15cbd2f953dbcac22b298d36d484dd1963e46480836980b7884a48"},{"path":"config.yaml","sha256":"e6aba01e75bfb1963ccffee40f8765bb2ccb6b8da6744c86c61bd1df356115bf"},{"path":"run.py","sha256":"a55784b40ffebeed5def33a1ac212fc67085e8eb2915f2c2a7e9261c6025173c"}],"relative_path":"commodity_currency/0018_fx_regression_learning_strategy","sha256":"b5cc62ba2c333b307a5c6e49c3ee2e0db42bff5232cafa5b412c19562ce374a5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0019_0019_ka_gold_bot_mt5","category":"commodity_currency","dependencies":[],"entry_hash":"616c744da2ccd3cf6d7c95026d178bb21ae79af8142f8a5003e7bc30033513ce","functional_test":{"relative_path":"commodity_currency/test_0019_0019_ka_gold_bot_mt5.py","sha256":"49f306740c4e05ab818dc507bc30858e790d392d4879d733d4f7d8ecb412bd85"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_0019_ka_gold_bot_mt5","source_available":false,"strategy_package":{"files":[{"path":"strategy_ka_gold_bot.py","sha256":"2e31b691ab3f87e7c5dca5c56549bebe866c746e05a1819f81d1802eac4cbbcd"},{"path":"config.yaml","sha256":"e8a540202744107396394d9bc457a22f0e3499c8942e56f11a035445743fa526"},{"path":"run.py","sha256":"c35b4cb0c7d54d45dd8cd8d54ee71292fdf156b61de8e8a06cafd4ce8155d698"}],"relative_path":"commodity_currency/0019_0019_ka_gold_bot_mt5","sha256":"a24bcece1999df77cee42c39a64befc9eaa88cf9b30d003c6efca2d64b539669"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0020_0698_silvertrend_v3","category":"commodity_currency","dependencies":[],"entry_hash":"4df3d839cfbe9eae0c6599c87b7de49df8c435c078661715810a701a702767e9","functional_test":{"relative_path":"commodity_currency/test_0020_0698_silvertrend_v3.py","sha256":"80246d8a4eb9635a1f0065ae70de5593e2461a27b6332635c87009583ce7ef9c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_0698_silvertrend_v3","source_available":false,"strategy_package":{"files":[{"path":"strategy_silvertrend_v3.py","sha256":"1389d9ef9a516e794d024ccf1b546bbc6614fa5f1072e945799b4abe1f3c23fb"},{"path":"config.yaml","sha256":"ec1b6aa840fa5d6992ccf20c8c33b9278206e8b5d2aba35e59e2c22c74e91726"},{"path":"run.py","sha256":"fb03ab4c9c6b6951405c5e09741d1e0a28cd04bbbe4089dd6f4066693e5abd41"}],"relative_path":"commodity_currency/0020_0698_silvertrend_v3","sha256":"fbdbb54350e3a194fb60c2898a77085f6145d8241c1718e84a8a769c6b97513a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"commodity_currency/0021_0910_silvertrend","category":"commodity_currency","dependencies":[],"entry_hash":"4c4f2937b1ecdec850f108a87ef215dd49d28517b9311e16ceac7b82a756e76e","functional_test":{"relative_path":"commodity_currency/test_0021_0910_silvertrend.py","sha256":"a8479b714c7e738bd97be910857049477345c67fa8a881390fe160938b21c412"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_0910_silvertrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_silvertrend.py","sha256":"14382fcd3f9b42efca0ade8140a3985be0a44a7558d8568e18d69bcd486af25c"},{"path":"config.yaml","sha256":"998cf2917dc907fb48f4326aa0467d7fa1112773105187204c33a1fa5f85b29c"},{"path":"run.py","sha256":"86911d2f82d2fb3c234f8b2e3793b553e818b8609dc42e26492e224467131013"}],"relative_path":"commodity_currency/0021_0910_silvertrend","sha256":"1a412f6318e2525078387d4b92e698b08053aa381f79f9e57e577cc1750dc749"}} +{"archetypes":["precomputed_ml"],"canonical_id":"forecasting/0001_arima_time_series_forecast","category":"forecasting","dependencies":[],"entry_hash":"5a90f1d9df51171778d400b8364e89aed2f9cb5e10cc47e992926bd5076c23d7","functional_test":{"relative_path":"forecasting/test_0001_arima_time_series_forecast.py","sha256":"d1d836350490e4762a2bb75fd1e5f4e0b025ec4bb198a2c930dfac08e6ef0941"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_arima_time_series_forecast","source_available":false,"strategy_package":{"files":[{"path":"strategy_arima_time_series_forecast.py","sha256":"a7021ec15b81e3ad5e3716f8db35f1d07a1cbd002bec1f43f67b00c7c4597956"},{"path":"config.yaml","sha256":"df8f3136c668db4a1d74dce20e0f68adeae4b0153363f6a836bd1f2ca62992d9"},{"path":"run.py","sha256":"38f8490364694e36b04b873dd9160cef5ca557abde87a8fdfbb347bc159da83f"}],"relative_path":"forecasting/0001_arima_time_series_forecast","sha256":"5a243720c7b9453431c94d4e67507068f1075eebc8703cac7211ad1a1e40a949"}} +{"archetypes":["precomputed_ml"],"canonical_id":"forecasting/0002_1003_forecastoscilator","category":"forecasting","dependencies":[],"entry_hash":"0920762b7a4f36fb01759b5507d45f61e705176a232d431e598a326e08b32f2d","functional_test":{"relative_path":"forecasting/test_0002_1003_forecastoscilator.py","sha256":"b7935ff6c3e7932f6ef3c2fa9ed61d2bc9ac700c005f6a6674bf22c3103f3b0f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_1003_forecastoscilator","source_available":false,"strategy_package":{"files":[{"path":"strategy_forecastoscilator.py","sha256":"d1f8dd7b209287cabd23f4e27a0e5d02d11775adeb371b72b653d58d6071a15b"},{"path":"config.yaml","sha256":"56c823ec427ad7731b311465b1f1b4d1dda280fc4ea2670319316e2a5d3be347"},{"path":"run.py","sha256":"d38e5c119e94063a1bb08eee8aa604e5ab8bde08e62d5f83d71acb2933a811dd"}],"relative_path":"forecasting/0002_1003_forecastoscilator","sha256":"2adb98fa05c008b543846d107e8bb258d6bfc6a3171fe9e65b6fa212c85cda9b"}} +{"archetypes":["precomputed_ml"],"canonical_id":"forecasting/0003_1010_ema_prediction","category":"forecasting","dependencies":[],"entry_hash":"d59ccccefa9fceb2d8467e9e605eda282768b7c5eb80df231fe7e5d0f1a6dbe1","functional_test":{"relative_path":"forecasting/test_0003_1010_ema_prediction.py","sha256":"b3c73c45c59ccd620d8623c0f32a1b88f7c900b78f87128bc193e12e4d8edc9c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_1010_ema_prediction","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_prediction.py","sha256":"c4dc4fcb1fb5374f1f91d75df9eeb3a1d9adb3485a708fd2e254e8d9d7b87439"},{"path":"config.yaml","sha256":"a37ed217ed39539d6a6823be15969970a9eb17157f31e2432a56e79cda72a5e0"},{"path":"run.py","sha256":"28dc21df09d88166c4c2a72944acb317462ba6832397b081655c405b926757ed"}],"relative_path":"forecasting/0003_1010_ema_prediction","sha256":"7e1adf9fbaa98ce55eb8f5f8c71834e187a2787e851403f1c811ba56a74a205a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0001_moneyrain","category":"grid_trading","dependencies":[],"entry_hash":"efd44b879c12cdf9a548b7f97063de598fd7eff78f5640200fd1b384bbbfb0c0","functional_test":{"relative_path":"grid_trading/test_0001_moneyrain.py","sha256":"d99307d9606cbb1c5cb7ddbe0c54711b290b5751cd783c454c17900602b7585b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_moneyrain","source_available":false,"strategy_package":{"files":[{"path":"strategy_moneyrain.py","sha256":"a9b0d5548818a045a75aba8fbf9cce0aa5284f5fd4fc7f6358a104cc5c6fd725"},{"path":"config.yaml","sha256":"34a03b2b3b05caab51602ffdfcc1263cf429f14d6771c65754c133b8b41604bd"},{"path":"run.py","sha256":"8149c18c572a9e246dbb276f5f827a3864b8487c51fa47735c91a099ad90262c"}],"relative_path":"grid_trading/0001_moneyrain","sha256":"dd1f561b6b91b6cac29c364375bc6b736ef817b4eca577c293ba4c45e6072efd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0002_very_blonde_system","category":"grid_trading","dependencies":[],"entry_hash":"6fa9ff7985220d40d8297a86ee3edde0893a62a1c59c51ec2166c3da5f880d49","functional_test":{"relative_path":"grid_trading/test_0002_very_blonde_system.py","sha256":"4af5cd067d6df013b3cc6cd6fe595d2ff38cb32b2af710ce545c289440655149"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_very_blonde_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_very_blonde_system.py","sha256":"e5ff1295b74f444a8eee2c8c6c10a3e78c3cea6df7413c58b915ce7de8b80e68"},{"path":"config.yaml","sha256":"4318a54f0170c3624150230f8a3ab5359b0d564bf6f198f35a39cc63d302d528"},{"path":"run.py","sha256":"6957e62d14c7cbb2c8c48c2bf8adf93233074424140b4b5005047f20a5e1004f"}],"relative_path":"grid_trading/0002_very_blonde_system","sha256":"444b4afc45fdcad423a8a361dd2d6b6b888b7a7f7e37c4df1bf616a455a2eb14"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0003_frank_ud","category":"grid_trading","dependencies":[],"entry_hash":"b48b6c6e3d78355e563efd34f8eb00539a957041c266d48b4db68465cf334c2b","functional_test":{"relative_path":"grid_trading/test_0003_frank_ud.py","sha256":"dd99ad3cc28dc6502eb9404f3ca44b554702d69f363a4ba03f04c31f564d35a7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_frank_ud","source_available":false,"strategy_package":{"files":[{"path":"strategy_frank_ud.py","sha256":"040b12e2d43bf25ef3f3b84967d187a4af6b080c16e007923e212422bbc07641"},{"path":"config.yaml","sha256":"7848165a1af1fa5a3ff7f91d96cbab838cb11a20446d1280250c55cd2b52998d"},{"path":"run.py","sha256":"1dc0fc0aee78344faaaa337e45cb60254a488cda1e86ea466d9063da49d41212"}],"relative_path":"grid_trading/0003_frank_ud","sha256":"0d5d38b3fd240a70d0323fae90530ea35ae941a0120cd49679cb083a36236627"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0004_vr_setka_3","category":"grid_trading","dependencies":[],"entry_hash":"0948b16a914d8f34b225ec5c9265d6ecd1e805df9997883c47958e6e446c8cd9","functional_test":{"relative_path":"grid_trading/test_0004_vr_setka_3.py","sha256":"d8fe139ee50e57b76efa5f74b990ae6995f15e282ea33dc89d5f3dc957a262db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_vr_setka_3","source_available":false,"strategy_package":{"files":[{"path":"strategy_vr_setka_3.py","sha256":"6bd09f849d3664606700c9dbfa6bdfac122cb091cc6eb23d989057c2be9a5628"},{"path":"config.yaml","sha256":"2b8e361689ba4d0a7a8ed8542e53cafed7f36ae2f58d1127961615687197cf78"},{"path":"run.py","sha256":"de5c8d0af0ab4f6c08281c6f71c39b0470cfd2b6a5798207adaed1e62fe986ea"}],"relative_path":"grid_trading/0004_vr_setka_3","sha256":"7ee34430e1ebde16d54d673c6b43c6917d28dc205bd9a7f6f8cd9e88ab2f1d5d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0005_loco","category":"grid_trading","dependencies":[],"entry_hash":"5bc102829a0ee20c34311911e06d4d30fc9285ec33484bc7ff2b69e6a90cc646","functional_test":{"relative_path":"grid_trading/test_0005_loco.py","sha256":"1517a9c3a404b1679798b42b7a2bdf124d737db0b2efda0f2ef657de017709ed"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_loco","source_available":false,"strategy_package":{"files":[{"path":"strategy_loco.py","sha256":"5321b47d661d492d0051de98ceb2cdd2a8635ab9eda87989a130def8b6af987b"},{"path":"config.yaml","sha256":"8d0b8bca54c29d1f1e80c8a1aa3ba2d39ff4da6c117d750382b27fd34f555362"},{"path":"run.py","sha256":"7d53cdda5a1f5646c5035ea8ac711b840898b40d62df8c12ff354cfbc37f3a62"}],"relative_path":"grid_trading/0005_loco","sha256":"45c7c53e8888ec7e773f98fe62d366bbfd47ab83faf0feaba925b6c8eb874477"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0006_0463_rndtrade","category":"grid_trading","dependencies":[],"entry_hash":"28d75213480e358d380c55e33cce0f90b75e67f8b5121f1ecf3d0dd5c55e3730","functional_test":{"relative_path":"grid_trading/test_0006_0463_rndtrade.py","sha256":"33b7ed88e872b6ae04c57a77c34db6c4df19bbe998c47efbe51d976bbb42fd0d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_0463_rndtrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_rndtrade.py","sha256":"bea22662b23aaf972f41b15ce5c4de767096cfb8b758ff0944876bb768e91307"},{"path":"config.yaml","sha256":"9999d71377e4e43066daae87d232599fdfd225332564a158f22753338fac0873"},{"path":"run.py","sha256":"d2e30004234231590fe4db3f024d3f6e3a5784bd37cf3a47ffc8efdbbe2e4a9a"}],"relative_path":"grid_trading/0006_0463_rndtrade","sha256":"e253478979dc96310b22280e7bab035bb3709d5aed17cee25425bd8e17ecfab0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0007_0555_new_random","category":"grid_trading","dependencies":[],"entry_hash":"90ebe87fcbd5e39b7bdaa2b2cede47b5e4ed37c7761a514d4eff97a3c535e9fe","functional_test":{"relative_path":"grid_trading/test_0007_0555_new_random.py","sha256":"aa94791f1cc15da03ac7e93f342587cc9f5ea4b54571059c869b76e3b9571e7e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_0555_new_random","source_available":false,"strategy_package":{"files":[{"path":"strategy_new_random.py","sha256":"baf34031bee541c7f1b2e7e135ba31dc00d59976d6d13efbd3349c05ec195571"},{"path":"config.yaml","sha256":"64120788fc5ddabbebd50c234536288f50bff0224d5b1706a455f6134d384488"},{"path":"run.py","sha256":"396faf900dc9fecd80d2d0dc02d8741486126b4535ca868567e7a5d71c528ed8"}],"relative_path":"grid_trading/0007_0555_new_random","sha256":"e2e6e3de1b98bdf10cb8a5cccd0038b3a3f84572284e2530b41a542da8fe2aa4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0008_1196_random_robot","category":"grid_trading","dependencies":[],"entry_hash":"cfafebc94862df52d5e8c2ee5774aab642de1a28987ea71c459434307bc4830b","functional_test":{"relative_path":"grid_trading/test_0008_1196_random_robot.py","sha256":"85aaf4f27cc7039ebdfa9542d2f9410532fbb3b7e2dda4ae39b897850a7960b5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_1196_random_robot","source_available":false,"strategy_package":{"files":[{"path":"strategy_random_robot.py","sha256":"bdde0320cf35a9df61eab8063d070d62f6d24af5775ee5f701aef697c5d9a5eb"},{"path":"config.yaml","sha256":"e6254b0fd35699cfc1b3ee93e6f49dc0146f62ad9e1c3164f68af1b9d0579f63"},{"path":"run.py","sha256":"a8571616b7ef4dbb1a8b08defcab83aa1eb777625c6bcd6c6f8ef8181518ee81"}],"relative_path":"grid_trading/0008_1196_random_robot","sha256":"ed170a33bd569fa2d77d3e4e3a00e213a8c911a2d184a190ca286ea5923908ff"}} +{"archetypes":["single_data_indicator"],"canonical_id":"grid_trading/0009_1198_martgreg","category":"grid_trading","dependencies":[],"entry_hash":"200e5eee0f08044d6cf734aa6341c3594ac5444719311ba67307264b8ab2f6c8","functional_test":{"relative_path":"grid_trading/test_0009_1198_martgreg.py","sha256":"05e96fdaf55eacf654187ff4bd350deeff3d7033c950bb38a97a21f1c358dfe0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_1198_martgreg","source_available":false,"strategy_package":{"files":[{"path":"strategy_martgreg.py","sha256":"8dd6fc7571fb8075f5870540181578f04ac8fcbba0e4a07c89318e5a77a07718"},{"path":"config.yaml","sha256":"09567f3a2057d5f15d65505c7b58881965a3570aa00d695fea1752e5e4f21e2a"},{"path":"run.py","sha256":"ad062ff4fee30cfd66c19b82863badcb613bc309b910f5149bc9871d91941f73"}],"relative_path":"grid_trading/0009_1198_martgreg","sha256":"a7b64732f8af2b7092f81a1eb0eec4c9161ee1558dcd97e9878abd6568641be7"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0001_candlestick_kmeans_classification_gold","category":"machine_learning","dependencies":[],"entry_hash":"c5ce116114dc043a5f85e7dfb1e6a4dc3e5cd392829ef6cb509a18cbbea06b9b","functional_test":{"relative_path":"machine_learning/test_0001_candlestick_kmeans_classification_gold.py","sha256":"8655d0cdeb1fb73e476cfd8414cd02ab117ff77667765ce6460786d272d890fa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_candlestick_kmeans_classification_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_candlestick_kmeans_gold.py","sha256":"6c75a5747baefba08728cecb0f956e02db681834c3280bc0d7c1dfbbd73714f6"},{"path":"config.yaml","sha256":"bf8416065dbc36bd49be52e56808227879b3b0d0a24a0a7de60dcc83d96194ea"},{"path":"run.py","sha256":"5b20b6ccb4667cacc9b6909fb3727626a441aa19e538852af1b030d71b913011"}],"relative_path":"machine_learning/0001_candlestick_kmeans_classification_gold","sha256":"64da53b9b1385fa2677da8d4ed0336bdcbaa1d080f3de76ee9f80a35ecb89ae0"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0002_extreme_short_term_gain","category":"machine_learning","dependencies":[],"entry_hash":"d9e58634868cca248e39e521e3d48a442243b9b2574fd7982ddaf70c3751316c","functional_test":{"relative_path":"machine_learning/test_0002_extreme_short_term_gain.py","sha256":"db538fcbae8e0f60125d657d6268084d28011888e4f910060d2b1c5970f70d88"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_extreme_short_term_gain","source_available":false,"strategy_package":{"files":[{"path":"strategy_extreme_gain.py","sha256":"3986459696b63c58749f85477fce88c3df9d0c68fecd0f2b3bb302f8cbdf2c47"},{"path":"config.yaml","sha256":"c63c50a405526cc7455b834e08f61504b9ef13c5f3b38ac0b336f813ff780ddb"},{"path":"run.py","sha256":"8b02d98790437d08023f4b38c4c93fa82af9145518ff28df818fbdc3849ae6c3"}],"relative_path":"machine_learning/0002_extreme_short_term_gain","sha256":"68c78ec94498f0b4e06b254b2ef8b9bbb59f742e618e8720360827c91092de0d"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0003_gold_ml_prediction","category":"machine_learning","dependencies":[],"entry_hash":"ab8a47534d6c2800f73140f967b9571259c36c7a069b227d27148056999c0577","functional_test":{"relative_path":"machine_learning/test_0003_gold_ml_prediction.py","sha256":"3b9b4f249608a5ea741c42097667af4c3c7cf8c48e295964f533fdb4f7da1d91"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_ml_prediction","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_ml_prediction.py","sha256":"f68c74ea8f7f7286d76e9e4cc2cf2de27adc5fe74a0b9ba20db6c06493203551"},{"path":"config.yaml","sha256":"5f336807e043669b703afd3a0f5e822ffda160a95802ce5d154cf0925de7e750"},{"path":"run.py","sha256":"6898d5578d2cbc7440ee5ab2188304ea48242a2a75ba7de8a5abddd391e023ab"}],"relative_path":"machine_learning/0003_gold_ml_prediction","sha256":"748b383b5c8e3b1d7e37cff547c10488f8530cd30aa91e962a724b57bb7dd7e9"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0004_reinforcement_learning","category":"machine_learning","dependencies":[],"entry_hash":"1c2b016d717412e7616e7b9587bafd0b14db36398e58278c6ac02309ffe46105","functional_test":{"relative_path":"machine_learning/test_0004_reinforcement_learning.py","sha256":"dbbc6a455a905bfeb227b329aab709aa35f1958125b97487cf461c38bd5c1604"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_reinforcement_learning","source_available":false,"strategy_package":{"files":[{"path":"strategy_reinforcement_learning.py","sha256":"db9ddda3445c22fe691d0a438fb93d3717fb4be572c7bc865e54bf53b1cf8ecd"},{"path":"config.yaml","sha256":"559ad5efab9e031e57a9fd894418d63efd9117ce2573f897ef1b716e1b071e14"},{"path":"run.py","sha256":"8922466af41e441fe2207c31f7114250e31addf2dc5bb18a54c374c1f41d7311"}],"relative_path":"machine_learning/0004_reinforcement_learning","sha256":"d981e79cdcda6ccf87a7a8cf744e2e0f1a16b1535ff7ca1c7b12a2de04a2a1ae"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0005_random_forest_financial_ratios_strategy","category":"machine_learning","dependencies":[],"entry_hash":"8b796a8a9f0832ba3f85891368f9738365013a83acd1a28ccb1a4399f319f544","functional_test":{"relative_path":"machine_learning/test_0005_random_forest_financial_ratios_strategy.py","sha256":"ecc651cd66821465d494c79e24f3e8a4e642a150035bd07450481539c8ca328d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_random_forest_financial_ratios_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_random_forest_financial_ratios.py","sha256":"e6f933c946b77b8191979cddb4d88f096a0807d6463ac6543a56656f2e0cf54c"},{"path":"config.yaml","sha256":"05b382de6c0ac087f41f5af6b30de46a92aac7ac7ae79642c44783bc5686f07c"},{"path":"run.py","sha256":"d832450ca0c1674481abfc2bd8cc2a50b80f52b89ab05a8cffecfce42adafdbf"}],"relative_path":"machine_learning/0005_random_forest_financial_ratios_strategy","sha256":"2d46a4ec2004487f276702aada70877f7ac609f5948369ce47a0de6b0eea4330"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0006_sentiment_signal_strategy","category":"machine_learning","dependencies":[],"entry_hash":"680313962d00c9233b3abbb1af217c95d601aec3d14627acb3403c00d964648a","functional_test":{"relative_path":"machine_learning/test_0006_sentiment_signal_strategy.py","sha256":"d664be49af2a3afa060b3602e0f2099b2a252221f4f424a6e80d82649d753c32"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_sentiment_signal_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_sentiment_signal.py","sha256":"b81124f1083788c3f44b9b2d525b0244c6b2604722be951575573bb2c36defb0"},{"path":"config.yaml","sha256":"1dead5fe688e044e039886046e0435352305d8c3ff4cfc4a0b06d6ce23eb4b4c"},{"path":"run.py","sha256":"6851579f79240c6d3af1d1676d7ed3b9d084c769b36244e4a813f128833c0e8d"}],"relative_path":"machine_learning/0006_sentiment_signal_strategy","sha256":"4a754d10f355334c2c32b75e44329db8e1f2d3ac6f86a99ea406fd4aca875706"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0007_0007_heads_or_tails","category":"machine_learning","dependencies":[],"entry_hash":"98bf4263affe3666ae0ca30531bf1a48854861d44120c8b8789fa8547bf49a90","functional_test":{"relative_path":"machine_learning/test_0007_0007_heads_or_tails.py","sha256":"7a474c251bc8ab4f609204a8b70735d6aa14ce69f1acdcdca016794463efadd4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_0007_heads_or_tails","source_available":false,"strategy_package":{"files":[{"path":"strategy_heads_or_tails.py","sha256":"76ebe066fc5fef5e5cbbb93edf20fa753af6a92632aace95d04ae79a229caa3d"},{"path":"config.yaml","sha256":"b6b187363b6c68d77c0a0a459a05359e6df845efdc6969c677d2362478dcd482"},{"path":"run.py","sha256":"b21f214c7056ec788bc22bcfcb795717a27cfbe6b3332f42c73b247e9557f885"}],"relative_path":"machine_learning/0007_0007_heads_or_tails","sha256":"f828325c468ad00fcccfb1273d2e754e7f43c17c7ef368f5f7440909083ed0b4"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0008_0187_rnn","category":"machine_learning","dependencies":[],"entry_hash":"9af53a9a32c9499a2610dba263fa4b2b58b2c3d737ac2b3f18d804287be1ea84","functional_test":{"relative_path":"machine_learning/test_0008_0187_rnn.py","sha256":"c1712c5411cc736e48c7e651308debb8beae2e5e112d5e70f4ebbb86c3fa3846"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_0187_rnn","source_available":false,"strategy_package":{"files":[{"path":"strategy_rnn.py","sha256":"e808dc14efe4de6f2db026322852db2844de890979756cbd45df223b061a4cdc"},{"path":"config.yaml","sha256":"991f62b8d435bc59391b4417412215fbcae4b192c3a41044c914c4bbb8e2b76c"},{"path":"run.py","sha256":"8ba56214760a2f9db44cdd282c41143fe0ee71580136d2a3dc859ec0c5de7830"}],"relative_path":"machine_learning/0008_0187_rnn","sha256":"3ca3760e7dcb0c8ee91c17c25e1c029a8e4a5b650d7733344e8689d58db5ff24"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0009_0238_exp_skyscraper_fix_coloraml_mmrec","category":"machine_learning","dependencies":[],"entry_hash":"3f0dba24734188c15f717a4f2a4fe7249a7efc1332db2eca5e59e5b81fe8488c","functional_test":{"relative_path":"machine_learning/test_0009_0238_exp_skyscraper_fix_coloraml_mmrec.py","sha256":"998c943aac5b1c8f1b13f1b643c61b95150d80aac9aece07b7787fa7f1dbe609"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_0238_exp_skyscraper_fix_coloraml_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_skyscraper_fix_coloraml_mmrec.py","sha256":"7d03cd3c9741b78d1ca190c8891d8c017824511f09029da136968defdb50deb0"},{"path":"config.yaml","sha256":"15061bcc421583ab5a5af6cce685a6a60f8b0ad9e2e7fbdc4f69e207eeed27f3"},{"path":"run.py","sha256":"dd2303f27a009e00ba910848a63e7b9c8a4c71eaf5b24003b65fdc26f84f1909"}],"relative_path":"machine_learning/0009_0238_exp_skyscraper_fix_coloraml_mmrec","sha256":"c152205fd33ea685c9d231739fb6265a4c4efd43306be38721ed78c81684de69"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec","category":"machine_learning","dependencies":[],"entry_hash":"27b0bb9895ab668a6d756eb81f11d2466e58b055085987ed3cac52993f7573b8","functional_test":{"relative_path":"machine_learning/test_0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec.py","sha256":"c2437e049ac679c66a878cf7ddb46d20b1d51d005f462ee275f90b27f0ea791d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_skyscraper_fix_coloraml_x2macandle_mmrec.py","sha256":"6010a52dcf6fc533a51fef1c533be9e738cf375cd2d428aad809a5554e2481a1"},{"path":"config.yaml","sha256":"13abb8697f98f3ed5bbe4b929acd233ecae4ef0d1443e64b5764227daa6905c6"},{"path":"run.py","sha256":"c02d978c8b2a3359b100b9e5052d4eac4ad23e7892f024d717c06f79d83be4a6"}],"relative_path":"machine_learning/0010_0240_exp_skyscraper_fix_coloraml_x2macandle_mmrec","sha256":"d078b56688fc530c149ad65350aa3c1e0dd5ed06b774ae2e7bfc5f0900c880f9"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0011_0384_ais2_trading_robot","category":"machine_learning","dependencies":[],"entry_hash":"2e62eba43e7aa7936b604f7dd2c80df950a4952ea0cc31c37ad8af98f8484750","functional_test":{"relative_path":"machine_learning/test_0011_0384_ais2_trading_robot.py","sha256":"cc4204d96f27dce66fa933f8873d359e57d12221c9441aec5ae8e3ec70d966c8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_0384_ais2_trading_robot","source_available":false,"strategy_package":{"files":[{"path":"strategy_ais2_trading_robot.py","sha256":"8d569a5634b14400a482816d87f01acab51aa17637bf3c5aac3d1648c1b69543"},{"path":"config.yaml","sha256":"e81bc726933fbc6e6045960aa9acf2a62cae668d12935580b31682aeeee5506c"},{"path":"run.py","sha256":"56627020438404c1f6d7feac8c44473f78743f76ae53662faa4e54e64e3073dd"}],"relative_path":"machine_learning/0011_0384_ais2_trading_robot","sha256":"d5c8da9d743de8d286b5c95dd6405bab7d5ba44ff83410946cdbd554d92f44b9"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0012_0429_donchain_counter","category":"machine_learning","dependencies":[],"entry_hash":"b1330aed3a787b0ea849e1f82dab6d5d9b0e70fd6614eda8d81d062d928d522c","functional_test":{"relative_path":"machine_learning/test_0012_0429_donchain_counter.py","sha256":"555617b1e9bc79901720cec9798e80e87929780457a07d49c984e9270eb400ad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_0429_donchain_counter","source_available":false,"strategy_package":{"files":[{"path":"strategy_donchain_counter.py","sha256":"504fe86e4c7b6d94036fc182b1b3d6d54f7177a795fb62472297ec97a7c055de"},{"path":"config.yaml","sha256":"ace45a9938c7923bc1487efc933b55446c41c82e313217f14622e2c94513341c"},{"path":"run.py","sha256":"466a6df9c7c1d47faba50fe3028aeeb918e580a3073071283dac6b61b3e1fa10"}],"relative_path":"machine_learning/0012_0429_donchain_counter","sha256":"5859c812fa96057f40c83db9e376d3aac2a6d103ed46c36311594f6524ef7811"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0013_0514_daily_breakpoint","category":"machine_learning","dependencies":[],"entry_hash":"5571f5e518687079a398adf60905c31b5ec99dd3902f31453b9d9c25e2ab265f","functional_test":{"relative_path":"machine_learning/test_0013_0514_daily_breakpoint.py","sha256":"11b3e7804af790245835870e665465e13f160440c70ccb8b3d62e96f228306db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0514_daily_breakpoint","source_available":false,"strategy_package":{"files":[{"path":"strategy_daily_breakpoint.py","sha256":"d933b71d7b2fffc02997cbe7d2ad951be0a760997b939a925b754f10b3de5be7"},{"path":"config.yaml","sha256":"9b7fa8f659b113fe199eb45030004fc3270f1f461f5a4f1136e9bfbe49add3e0"},{"path":"run.py","sha256":"b349736713adc35d5dd609e590dfea12b00885a65f49fbd98d40dc94b082d628"}],"relative_path":"machine_learning/0013_0514_daily_breakpoint","sha256":"89b048603fd6ef29839339560d9ebda88a3754a4fe4821655020c58de6fe19a5"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0014_0688_fuzzy_logic","category":"machine_learning","dependencies":[],"entry_hash":"f8c920275e926befea54def79b33e2257377a854799c15bcb4d5e1174e5bc767","functional_test":{"relative_path":"machine_learning/test_0014_0688_fuzzy_logic.py","sha256":"f63bf1599528ebb51e31744f4e66751fc85dcfc88fe3102963aadfbe7fb74812"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0688_fuzzy_logic","source_available":false,"strategy_package":{"files":[{"path":"strategy_fuzzy_logic.py","sha256":"2bb6df59effd60ed38cd7d638b447478c19b7c6ff03fd4f3f4cc019228bf37d3"},{"path":"config.yaml","sha256":"9e261cf24412f4116db2ed1da2de804aca38b06971355ad0aa968a0b6f320f81"},{"path":"run.py","sha256":"49b577ef443e6c20d8b95312070f49a0a42793b630307113024050cc2a0e39f3"}],"relative_path":"machine_learning/0014_0688_fuzzy_logic","sha256":"f687a575c51f97fa2f336375e084f9a30f7684e59bfe6c0a8ac7ad6d2eb38b43"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0015_0715_mtc_neural_network_plus_macd","category":"machine_learning","dependencies":[],"entry_hash":"49aca744e00563bc65ed4f0d618ae5e9130d778aaa67110ec7a75fd8943bdcda","functional_test":{"relative_path":"machine_learning/test_0015_0715_mtc_neural_network_plus_macd.py","sha256":"9ba7512b5f22cae664ac7aa4313f74460bc5263c5b5d602cec1f33a337899552"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_0715_mtc_neural_network_plus_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_mtc_neural_network_plus_macd.py","sha256":"061c5690674952102b1b2de3c9d836451e58dd7b0ddf07a059291122730269cf"},{"path":"config.yaml","sha256":"04f8946d8a6688a60e6fa3aafde7f65ba0b7fc35967952cdf5a4874e6353e849"},{"path":"run.py","sha256":"1daf1f5737660fb4566c67460c691bef465e9bf835d76cd88ef52997580daee0"}],"relative_path":"machine_learning/0015_0715_mtc_neural_network_plus_macd","sha256":"127d8f99da41564cbc8062863f866335eb93dee1fc8eceb295e982813f652817"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0016_0726_zerolagea_aip_v0_0_4","category":"machine_learning","dependencies":[],"entry_hash":"d70717a614acc99cd271bb1ba4b7fad74e7ae5d5bdfc407474498224e8dd6183","functional_test":{"relative_path":"machine_learning/test_0016_0726_zerolagea_aip_v0_0_4.py","sha256":"3206f38a59dc29c55bef286212dadf5291479ac908f183a82bb0de5d29b7e4fe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_0726_zerolagea_aip_v0_0_4","source_available":false,"strategy_package":{"files":[{"path":"strategy_zerolagea_aip_v0_0_4.py","sha256":"84d2ffb6f13f6cf50de99e8464d0bad823ef69ce8931b648b5c6e762bda0f3f8"},{"path":"config.yaml","sha256":"6ca14281aedc0700e97bde4528ff2d955a72bae0b249c3e5f514cf23af8d6392"},{"path":"run.py","sha256":"6bcefcbcee8fc66f8db6f098b686294171605091e6c3935c4162f705e1d1c92c"}],"relative_path":"machine_learning/0016_0726_zerolagea_aip_v0_0_4","sha256":"2ff4ddbe6f01626fd4b1c2f927c11028fad9dee39b8766810681be566479efc0"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0017_0797_artificial_intelligence","category":"machine_learning","dependencies":[],"entry_hash":"564674fe7c5a636e73068b470c74220962976d0736f48a2ae161896fbf96f41e","functional_test":{"relative_path":"machine_learning/test_0017_0797_artificial_intelligence.py","sha256":"fb95a37246301977c839a58f74661b14323a6a8432b0a8de2fc4c81d51658769"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_0797_artificial_intelligence","source_available":false,"strategy_package":{"files":[{"path":"strategy_artificial_intelligence.py","sha256":"36634cc6c6018fa476825ddc66c925c7f5892f3914cb85745e93179515134031"},{"path":"config.yaml","sha256":"c00dbf0f7fe9f10de49bf77c2a46701c596987dbc609c1bb854a737a82bd8f6c"},{"path":"run.py","sha256":"c3de0beb20e63e1d1113ec0875ab414fc300f5373e27932ddb29640d29d4a5a1"}],"relative_path":"machine_learning/0017_0797_artificial_intelligence","sha256":"11eaaee0882f435f1250ada624730fadf61c073a82ef622e9ac24d192767de81"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0018_1086_cronex_chaikin","category":"machine_learning","dependencies":[],"entry_hash":"e3cf1932a1198520b76357fdf1a946287903a3e369d7f571936ba44045d3cca6","functional_test":{"relative_path":"machine_learning/test_0018_1086_cronex_chaikin.py","sha256":"317dd7acfd450fbed25dcaab4d32f9412192335830f6ef9e54a7a3dcd16afb6a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_1086_cronex_chaikin","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronex_chaikin.py","sha256":"73eac8f4149542f7e8ee500f17cbb13b5d4ff039e8239c6a2a4cf3380cc1b891"},{"path":"config.yaml","sha256":"7f9392ce868965418f522c55b93cce476b9c5f1c087866b490bd15e817b41d4f"},{"path":"run.py","sha256":"1202a852331843ac6aae6dc2954995af44d1e2cccaee38ffc415a07c1e486d0a"}],"relative_path":"machine_learning/0018_1086_cronex_chaikin","sha256":"3edbdda29205aa620916604d9fd0f7279f096452993eb17f8464c96af5d70b8a"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0019_1154_artificial_intelligence","category":"machine_learning","dependencies":[],"entry_hash":"a0b2f2ab8cd624f79053514ed4033c6f72426aa6116b35e63e2de0ae081a0d17","functional_test":{"relative_path":"machine_learning/test_0019_1154_artificial_intelligence.py","sha256":"78ed906bd5803f1ead09ac5db3ee4e1857a2fbc6d7a0eba499fd677ab7fd69ce"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_1154_artificial_intelligence","source_available":false,"strategy_package":{"files":[{"path":"strategy_artificial_intelligence.py","sha256":"7e8c3df78499fd625436f7f7f5e727623db79a75fcbea9e36d81348be17ea4b3"},{"path":"config.yaml","sha256":"3603ef54cbcd0e80010a33282508b030658b5769995ead06e5e9ff9640706007"},{"path":"run.py","sha256":"8b6ba33a5456d22fd6e99c5dce675722b9d3d53b977cc2b575f904eb8e532c6a"}],"relative_path":"machine_learning/0019_1154_artificial_intelligence","sha256":"3226ac84e08d575703699be32f90e4a309469e1786445650502b25e67ca1a74a"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0020_1225_aml","category":"machine_learning","dependencies":[],"entry_hash":"482ed015be5cfe400615dad1ae659519b9455c402e379f5be93625531c50af76","functional_test":{"relative_path":"machine_learning/test_0020_1225_aml.py","sha256":"2e08619567241897b932a48bc28179221f960ec3b724bc8eaba1792b505f8f77"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_1225_aml","source_available":false,"strategy_package":{"files":[{"path":"strategy_aml.py","sha256":"e266cc05785a9e322b2d915f81f4eba4f43b137939cac0e3fae872866e566e61"},{"path":"config.yaml","sha256":"5c4fb3462e152aaa728f0b49dcf71af7e13a1606ac83830fc42a9e395dc489af"},{"path":"run.py","sha256":"0aaf2afb04bcd3845eedd86a6d872f2d6829924edd35c0955ce09d07d4d719d1"}],"relative_path":"machine_learning/0020_1225_aml","sha256":"31af081ebc7d63b2187de8922c950db91608afe98d8be9fbc1804f4d72f2b0ce"}} +{"archetypes":["precomputed_ml"],"canonical_id":"machine_learning/0021_1293_jbrainsig1_ultra_rsi","category":"machine_learning","dependencies":[],"entry_hash":"dd36ada7883a56424dfc00c4193de9c6ba6eaa30e118a4f6715c28bcc9fcebf1","functional_test":{"relative_path":"machine_learning/test_0021_1293_jbrainsig1_ultra_rsi.py","sha256":"3b6dd4d2591268367231f20af297df887e8cb6cf79fb38fa0d6207957ff0b89f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_1293_jbrainsig1_ultra_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_jbrainsig1_ultra_rsi.py","sha256":"43d53ea99b5551a73334d42a5de52f7c6693e83879463c6f029f2af97e9b8aa2"},{"path":"config.yaml","sha256":"7942b5218c6cbe35a9634cf66ae15dab93323c4989e82b51047409a421b684b8"},{"path":"run.py","sha256":"af96fdde7128815709fef9084175e86b35a75ade6c8b90a813c022221e701c3e"}],"relative_path":"machine_learning/0021_1293_jbrainsig1_ultra_rsi","sha256":"03ce7e64c80a26689cad32b1eb3363c5bf9f903fba06e21c0b51967c6ac998a7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0001_gold_momentum_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"e19a4064def5430d6d0f50f0b09e2f89097e37f65e993480b94b600f377027d0","functional_test":{"relative_path":"mean_reversion/test_0001_gold_momentum_mean_reversion.py","sha256":"6f3544c32f54865bc4b19c252c5bbb63d912c17f632959170432bb0cddb724e7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_gold_momentum_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_momentum_mean_reversion.py","sha256":"9f9f238ae219b47a6de9c44775d25f8abf7e3de28216246f6e11bb910218c829"},{"path":"config.yaml","sha256":"6d54bd2756af488d2c1b748a22f9a81d63c82729862100dafddd95fe12ab5a1e"},{"path":"run.py","sha256":"4932ed1a0a5d451f6c79b46e58c3d311e16f66d01b5e2f4984ebc7d602b1de1f"}],"relative_path":"mean_reversion/0001_gold_momentum_mean_reversion","sha256":"7419a56004cf3677fecc839a3bdc738c340edef3a8a5a050b8b2f365a2cfb7f3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0002_double_7s_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"7c9dbd2e8e1aa2a0f10eaa0c63be20727c4b1aaf553424497ad52cc59ee66229","functional_test":{"relative_path":"mean_reversion/test_0002_double_7s_mean_reversion.py","sha256":"d03cc3a3ae008b3a008293e06ed9b7514e312776edbebb3465808dc2ab5ad136"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_double_7s_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_double_7s_mean_reversion.py","sha256":"00bb44264aa3779930eb7666660f95757a816ddb05cf5f779830af13679e5e43"},{"path":"config.yaml","sha256":"b51446ea11419108538cedab45eeddcb56be38d5cbe7196a30a357c629e637b4"},{"path":"run.py","sha256":"5f2d1a46aab380c0f4ad56cb76b1d036de9931ee139491b07175b073d8475a7f"}],"relative_path":"mean_reversion/0002_double_7s_mean_reversion","sha256":"906c1d95cf2695200836a83d3ce806ab5558b82924e5fced75f65f98d052b8bf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0003_gold_event_momentum_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"22034be69cc54e990ab73568acd4c2d635106b180d8df37838a66672bdc7eb4d","functional_test":{"relative_path":"mean_reversion/test_0003_gold_event_momentum_reversal.py","sha256":"68a647e6b7855fee1391fb15ca711d5cfb6345dbe7aebb3ea63352d88c9b8166"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_event_momentum_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_event_momentum_reversal.py","sha256":"ffe9a7be256f66367755b2e48ec61eeefb43906465c8b4c8eb4d725389c175db"},{"path":"config.yaml","sha256":"87dbd91fb6d8706ccf38e79768f523c89e1d29f8a4624559844f01586e997c95"},{"path":"run.py","sha256":"819c554cb779ce7daf437a914924e426507a210edff628a1c9a8fd5ebba2497f"}],"relative_path":"mean_reversion/0003_gold_event_momentum_reversal","sha256":"7e78c9a75ffdf476a0f7860cb2e059fe9564b2d608099652a87cc2790ba43987"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0004_rsi2_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"56838f8f2e7db9787b91b0b35dc77601cef2776e1e3ca595803770cd58d19a7f","functional_test":{"relative_path":"mean_reversion/test_0004_rsi2_mean_reversion.py","sha256":"3d6fd5711511451df5185ae7ef415f18a0bbc273fbbccab6ecd9afda7940bb9b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_rsi2_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi2_mean_reversion.py","sha256":"90c51a993f7501ae4d4cc2693bfde26ccecf46e84252e37c227fa7faa581b4fb"},{"path":"config.yaml","sha256":"7362e1fc761c37dc8d2c265be7c3003e8eea08fd2d7df7247c695d9eb0bacdea"},{"path":"run.py","sha256":"578ee1e99d16ee7233bc51203dd535375589643ee5632bf4f1dbf8d133d39ae7"}],"relative_path":"mean_reversion/0004_rsi2_mean_reversion","sha256":"379475daa51dd8a600d82d67f266dfe0338dfbe84f1cb5952d7ee778d2c9dd91"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0005_holiday_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"25e75c8d2341918d6178d124154ec44dd11e89371d9fa119982756c595cb50e5","functional_test":{"relative_path":"mean_reversion/test_0005_holiday_reversal.py","sha256":"39201002d52c894ada0fd31774a5cf2c0eea0169719871138e3697822adf5c79"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_holiday_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_holiday_reversal.py","sha256":"042da2eaa37b3bac441b71aec9d275474c0f099d2a518d53e4fdc0e0d0af70f0"},{"path":"config.yaml","sha256":"3c14c2011444c279bbf19529cb5088bb4b0f9559bd90d1cac06fd5671916d5a0"},{"path":"run.py","sha256":"02bc2eedff952dcdff4b0653002b83a6a1418dff9b441c9c6a04ae02d021e95f"}],"relative_path":"mean_reversion/0005_holiday_reversal","sha256":"5847aeb571d465f7e734121b185e3de6b2be27cb7353c37d7a2672a2bec88fc5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0006_gold_event_momentum_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"b5cb410aaa551bbae4902800c2a550f84254337854bebafe05ee932766087ea2","functional_test":{"relative_path":"mean_reversion/test_0006_gold_event_momentum_reversal.py","sha256":"04e4df5c934b769f7aa7cb9b7f412e918b9e77c1dba35f44db1604dc0d9b5a54"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_gold_event_momentum_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_event_momentum_reversal.py","sha256":"8db6292ac98b7d811e3ed2cef2e13cd95f6e5966900fedd854ece1bb481409b5"},{"path":"config.yaml","sha256":"73bc3387467526c6b3307873ce6b54c741c0df43f6ab3740f00457263bdc7997"},{"path":"run.py","sha256":"42bc9839c0d643b347dc99aff3688ae99504e5f74ed920cbf273f1647188e170"}],"relative_path":"mean_reversion/0006_gold_event_momentum_reversal","sha256":"a090e0cdebc0e65502de7a4f8818dbdf504cdb10516f7ca8cf8ddc32ea5cdf94"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0007_gold_market_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"6c5699dd9db4961394fc67eb79d55c44fbefcf476ebabeb3cee4c5c8aa2bde36","functional_test":{"relative_path":"mean_reversion/test_0007_gold_market_reversal.py","sha256":"8c8210df60e8c73369e384d8785a84918a90bdbff3327192749a1c773dee45ba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_gold_market_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_market_reversal.py","sha256":"efb515390db727d06b8b00ff6874a19099b7359b2ba6962e383db58e992f1269"},{"path":"config.yaml","sha256":"3567e25ebf13934a18ea127e0eee02fb76cd85c4c4321e77f7fd69bed66a00e4"},{"path":"run.py","sha256":"b925de6a6da94ada3a99cc8c24f339f8351bad5d0cf46e3432556143b7205dc3"}],"relative_path":"mean_reversion/0007_gold_market_reversal","sha256":"a3ff035b7c7261ba59a60634a63d80925c0274400be723b33b0519eb1d74d25c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0008_consecutive_down_days","category":"mean_reversion","dependencies":[],"entry_hash":"3ae83f86a612c3cc154138a5581c8b7d5deaed0a6b338ca57f3b7cfbaf1878d1","functional_test":{"relative_path":"mean_reversion/test_0008_consecutive_down_days.py","sha256":"3ca6c24ddbdf6cd57bdf0fe49596d3b64d278916826a1e05cafa348376af94d4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_consecutive_down_days","source_available":false,"strategy_package":{"files":[{"path":"strategy_consecutive_down.py","sha256":"c8b364ef244087ddeb489b5803f35cef5fb49f21cacbacb913cee671be85fd14"},{"path":"config.yaml","sha256":"d1b17f6d364bf474553975c29fff69ee01c50305fecb5144d89b3f2daa5741a9"},{"path":"run.py","sha256":"48bae03030084c368d2db1c5d959f2b13a4c24ade8e5a568968c2e2db1d4f682"}],"relative_path":"mean_reversion/0008_consecutive_down_days","sha256":"23a68313ff0415ca2bd6e6b84e6b549199332f480900b0aa167628d1e54ff8c3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0009_cointegration_mean_reversion_gold","category":"mean_reversion","dependencies":[],"entry_hash":"33ccfd588ee0a8af1e8405b47cfb4eec77d2dc03927e76a35ce0cc5034aa70b3","functional_test":{"relative_path":"mean_reversion/test_0009_cointegration_mean_reversion_gold.py","sha256":"ae8ad4093405f0f18dc49db66a5d8b068ce26cc6bdbea2ef12a27fb0e89e1180"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_cointegration_mean_reversion_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_cointegration_mean_reversion_gold.py","sha256":"878921e68a64047efad3d0cc0a965c95931b827d0b92f2f27b928dc13020aa6d"},{"path":"config.yaml","sha256":"170a45165fbec701e23dd6dff1286e3cae982b0a0ecb2f9c7e0fc284f1fcadc2"},{"path":"run.py","sha256":"13ef24b9c802b3cd361cd6f382bfef1d60a5cfe51cc1508bdf007bbb241b725c"}],"relative_path":"mean_reversion/0009_cointegration_mean_reversion_gold","sha256":"a1ade073a0d9add51e76582a8703aff00b9b764f57c508271e04cb05ce1fb91c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0010_double_n_gold","category":"mean_reversion","dependencies":[],"entry_hash":"6c76c262eb1dd2c6a746f1d1488104ce020d0fe67f2c28cd3c94887a6aa3181f","functional_test":{"relative_path":"mean_reversion/test_0010_double_n_gold.py","sha256":"982f6d859e13209d3ad99ca20aa5bb43edf3921bc9e6ef4037529a2e482d4def"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_double_n_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_double_n.py","sha256":"565eb18175b412a8b50b6db5dde1147cb8f47c2ba85ece73f794ec649d828319"},{"path":"config.yaml","sha256":"12f3c24ec700969e6f09150b3ba07bae7ab14ffd224a7bb8d6dcdf3959c0a733"},{"path":"run.py","sha256":"20d567e3d8088a01a71a76f91f64c17d64e5ca44dc1d0e2948733d4e014d8d7e"}],"relative_path":"mean_reversion/0010_double_n_gold","sha256":"cd8418ff629488e658b70763f10c5844c3880e960033230e74f97ea3e6e6a87a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0011_mean_reversion_stops_scale","category":"mean_reversion","dependencies":[],"entry_hash":"2e5cde2df9285a71cb259870a06841bc6f430e9c65806c857b474f08b86197b8","functional_test":{"relative_path":"mean_reversion/test_0011_mean_reversion_stops_scale.py","sha256":"186b9b07b5624e2955a8dff404854098545a7a50eb47cc2d5752ade26a5b2696"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_mean_reversion_stops_scale","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_stops_scale.py","sha256":"7b3045147f29cfad22abc5208abb85dbe1666e6d46d2b8dfdc7fe977aafebd0b"},{"path":"config.yaml","sha256":"b9af5c25dd5c115326b305ea27e6b27ef263b53517e93c26f8b095ee99bd340f"},{"path":"run.py","sha256":"6dda13e9895c5fba302e28c4fc4c9bd768cf0f820caf290245f575c1f30ad0e7"}],"relative_path":"mean_reversion/0011_mean_reversion_stops_scale","sha256":"c92bfff69ac2acac2528bb59d0bb710e6adcf60f0a2aa85101261aaddd7c5a84"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0012_mean_reversion_momentum_vol","category":"mean_reversion","dependencies":[],"entry_hash":"690286a1e0920dc643c6a4a7124315f991780d2c5b1406d9ad9bcfd4a32ed3ca","functional_test":{"relative_path":"mean_reversion/test_0012_mean_reversion_momentum_vol.py","sha256":"4f5e0589f86ea25a314446548c103c22ee7e653f61304e6b5c2bdd3e4bb0e329"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_mean_reversion_momentum_vol","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_momentum_vol.py","sha256":"c8bac332fb9f27db64c9a666b2ad7942f1013f7acece83422067754bf98fbafc"},{"path":"config.yaml","sha256":"5cb4594b8d733b44b7b71eb719c464683d6ca6d7f097a1c0251bb5abe11fbbe6"},{"path":"run.py","sha256":"c2b74616883565dc90fd51b618e77c7f058e4ea8bd139f28bb3ca763748d8198"}],"relative_path":"mean_reversion/0012_mean_reversion_momentum_vol","sha256":"8f92512c3b0b2cee19708f6ca89d36ab4ab38ece6babdde303553e98907c5fbc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0013_commodity_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"e3ecb3f989952fabfcf85a9c198c19ff164574fe41b4f09adfb735b82464265a","functional_test":{"relative_path":"mean_reversion/test_0013_commodity_mean_reversion.py","sha256":"e4098952a490c854d2f3063d8760a75fc05fd3f67690782e11b4ea1119586d38"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_commodity_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_commodity_mean_reversion.py","sha256":"a984f9d3f71a3e5ddf7a46fbecd65a2cd717bcbabf369b2eb8af406695a21f05"},{"path":"config.yaml","sha256":"02c8eabb96d7ed0bf83056d81d025110872c2410f6743e42831731bcb4edb96b"},{"path":"run.py","sha256":"731c2151edb132618d68ee353b011af6c1128aa50954e168983a0361f9941da7"}],"relative_path":"mean_reversion/0013_commodity_mean_reversion","sha256":"a76609f07de93792c9393f8c7bd398d910bac2196cea0f66f65aef6b96b2a756"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0014_gold_intraday_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"bf912629d67fee5961d80b63cc9c02313b103fe810d0f82b1b4a4871a1584c99","functional_test":{"relative_path":"mean_reversion/test_0014_gold_intraday_reversal.py","sha256":"9842dede9e319cb2212d35e669d59090d67675760f43a4499984f1f24024166c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_gold_intraday_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_intraday_reversal.py","sha256":"1a5758c3c2229384f65a1b2fbfb359f8da9f48d40833c45bebd6d458172dbce1"},{"path":"config.yaml","sha256":"95c2359d525f15a0921fba575623ef16a7fe0050b48cbc414483bf3aa31a88b1"},{"path":"run.py","sha256":"ecfa874c3db5d391693ec694d456a492c03ac922e49b49345c63f21da121ecc4"}],"relative_path":"mean_reversion/0014_gold_intraday_reversal","sha256":"6e5ffa6bcd0312fb7dfc25326b53d18a29b9a8c4d94197ff75880c37bb90ff27"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0015_simple_connorsrsi_sp500","category":"mean_reversion","dependencies":[],"entry_hash":"58854437a8bf498ceea53c7f1dbee678b523b8abe5cf318e1059ec9a285a0955","functional_test":{"relative_path":"mean_reversion/test_0015_simple_connorsrsi_sp500.py","sha256":"fdf3bb5ddac6d213437d0a2a3686522c90cd14cae9274054e55a18bc17d853db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_simple_connorsrsi_sp500","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_connorsrsi_sp500.py","sha256":"b0e8436e6c7336cb3e5cea1aecae57c6763660524e2e9d878be91272475d4bac"},{"path":"config.yaml","sha256":"ab3600aa00feb89da06a4b90c0648b05d1f2356ddb89f81674127bc1a9bd72f4"},{"path":"run.py","sha256":"636805ac59bf163716ea665a6511a936b497a5ccf3e72dc04ce3fa1704e55a93"}],"relative_path":"mean_reversion/0015_simple_connorsrsi_sp500","sha256":"debe61f47c623ffd55b091dbadd2dd60323e6313511bd25848f9a94a6ca218f2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0016_intraday_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"626e6f7cd2477cab9c00e7c40278132920cd8648e62b332d9ab5fc650340533e","functional_test":{"relative_path":"mean_reversion/test_0016_intraday_mean_reversion.py","sha256":"02694782aad961d234effad74ecbf9f3d6c53fdd5169bdf1cfd8a0793a9b559a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_intraday_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_intraday_mean_reversion.py","sha256":"d704fd631719812192a7c118cf55f4daf661b4dfac2ce87cfabfa13586221cf9"},{"path":"config.yaml","sha256":"15b02db496078fc8ed4cd1f186d72fe576920d624eb711d8e472e655d2009156"},{"path":"run.py","sha256":"30d748b399df221fe9325fca1d327edc6d97744f8e2d9d1407ad2ef3324189e8"}],"relative_path":"mean_reversion/0016_intraday_mean_reversion","sha256":"2c4b87bb86c952c11ffb3db1e7f149d2c4cbe7b9b9f9cfc38a9792ed8f8ce2a0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0017_roc_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"2beda78562423f1ff34abeb4a232df44e8f416ff7a04ca5049f5a16f6055b25b","functional_test":{"relative_path":"mean_reversion/test_0017_roc_mean_reversion.py","sha256":"d30b6429295a0d395ef08b5f6e4ff93f530e48bbf2d9db8a5102ed0a0cb80b72"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_roc_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_roc_mean_reversion.py","sha256":"cc419a931ffd51265ecdaac5660e02077f5e25ea40131a2628d3f1eac57de017"},{"path":"config.yaml","sha256":"8e22cdb90a1389138c21c2895ee52d1435c583a9b950931df65de65f1c7fa0e1"},{"path":"run.py","sha256":"ebc4c6bc45b848629b0f0035b310d5d0e7c634a8533693246ddbf4e0f2016f23"}],"relative_path":"mean_reversion/0017_roc_mean_reversion","sha256":"fdf4ed5eddcba23de9d0253593b962f6928defd7080980ea46370c96a3c7fd9f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0018_n_day_exits","category":"mean_reversion","dependencies":[],"entry_hash":"e8be59cdb2def45816c6291e6a1066f23ed12c8c76ae551a833038aa1b7bcb6c","functional_test":{"relative_path":"mean_reversion/test_0018_n_day_exits.py","sha256":"27eebe5f113d3d6ee8a273432e2c6957b46e3164cdf8e7ebf0c0b7283c886e63"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_n_day_exits","source_available":false,"strategy_package":{"files":[{"path":"strategy_n_day_exits.py","sha256":"b0b716b9df0e0e3ce86b7bdcc7149d11749d7bd04801b3991810c394d0dc3e68"},{"path":"config.yaml","sha256":"12ddecbb894344b36ecd3b1c0dccc3355e11f18548d4f32299f71c9502224ec8"},{"path":"run.py","sha256":"07ba51c5188360c0978df8869e9e40002d1fbd0b2a03e4632cb70198d2c6fc26"}],"relative_path":"mean_reversion/0018_n_day_exits","sha256":"a576e4ff4548dd72762fbe065f656f6d05e836209f71b07b16a8a76fd209a7de"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0019_volatility_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"0bd02574b81ac322a79c700f4b37402413ed386558e79b3566894c044ff8d7b6","functional_test":{"relative_path":"mean_reversion/test_0019_volatility_mean_reversion.py","sha256":"46927fba41be96b5410fe196f64d4f0871fa4032429e599a39ac191e46cf0b95"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_volatility_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_mean_reversion.py","sha256":"73781efafd66223d1ed3057a6dd8279ad09bf41605e4bd2ffa79a1af1727afcd"},{"path":"config.yaml","sha256":"415b461da7986a654cfbaefd93e247aafc88f6ad29f5590e70ff0b8713679fc7"},{"path":"run.py","sha256":"d57dff817e43319ed48ecc6ea0932a144b10964dc34a69b8f02d5be232e987a3"}],"relative_path":"mean_reversion/0019_volatility_mean_reversion","sha256":"ba085d21a4c08773f283c112caee5f7500563e28c107577b57b6fd51b603f70d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0020_connorsrsi_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"0ce071a9d22df750a51086a06bfd8f5e1895250f45abc0e585bbef4d6f2092b2","functional_test":{"relative_path":"mean_reversion/test_0020_connorsrsi_mean_reversion.py","sha256":"f41f8065fe8b8924f9e2e1f0c52e9db8525697d0365e7043587ac7eb72429076"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_connorsrsi_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_connorsrsi_mean_reversion.py","sha256":"f990b8eec1397d74fd6edb690f51331acd5bfd674a7b30dcc383da8ea8714458"},{"path":"config.yaml","sha256":"47e9b1d28bfbc41ce77c45da458c18709ecedb63ee660a8f6fc053d77b970a27"},{"path":"run.py","sha256":"9156c315ca67bf7bde06fbbb07e938884b8226ec65d520fcd580aa1d85e78ab4"}],"relative_path":"mean_reversion/0020_connorsrsi_mean_reversion","sha256":"1a92f96f3ac07d7bcf97d79a0025f27158d6fb680b5f0103794193a0c180e1a3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0021_connorsrsi_optimization_selection","category":"mean_reversion","dependencies":[],"entry_hash":"aa1e7af62399d89aae7b0188128e8f4549bbdb6fceab0fd1e008c01dea8786f8","functional_test":{"relative_path":"mean_reversion/test_0021_connorsrsi_optimization_selection.py","sha256":"7b33873e8010581d9ea01a6aed7b859d976f4031a17e789e5db88472e5c52145"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_connorsrsi_optimization_selection","source_available":false,"strategy_package":{"files":[{"path":"strategy_connorsrsi_optimization_selection.py","sha256":"88e2d0622930a620cc17320396b3deeec90042c5ece4e07d85ead5d3411f20b5"},{"path":"config.yaml","sha256":"170d910c230c1b4a170042c3ea1ea1e267d89847c2c5a05b97d1e937b2373002"},{"path":"run.py","sha256":"149fc5b36cdf3e09a80cecf6c225f3caf3d24fbbe63b7ddcb4350f5835b9a23d"}],"relative_path":"mean_reversion/0021_connorsrsi_optimization_selection","sha256":"d249da5f7e6ca421b33608141dde87cbd1ecfe43cd75559691230698de319d1f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0022_dynamic_momentum_contrarian","category":"mean_reversion","dependencies":[],"entry_hash":"0265c09589ec47d28067ba214b8a6ddd5001e8eb6510c62efcf6e61e758f5c1e","functional_test":{"relative_path":"mean_reversion/test_0022_dynamic_momentum_contrarian.py","sha256":"ebaeeb77f613c925afdcc7eceea09fa7c613ea27fa5fff4528ceec7683bba838"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_dynamic_momentum_contrarian","source_available":false,"strategy_package":{"files":[{"path":"strategy_dynamic_momentum_contrarian.py","sha256":"d0a2e359b9054df76a2c2b1385c06f35cad61dae2c6c79238f217e74990a377d"},{"path":"config.yaml","sha256":"3e079f8d28d90aa2846db172cd80b7b9aac101f208b5e59b5b0e5ade98019948"},{"path":"run.py","sha256":"c84b1c209ea2d61431c25ddb0a68c43817ea09644972b738f2f35c9be165be82"}],"relative_path":"mean_reversion/0022_dynamic_momentum_contrarian","sha256":"93eb8f16ff388ccdbcce7effbbb412a67e62c10ab0556ea7d667777fb3ac5808"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0023_connorsrsi_sensitivity_analysis","category":"mean_reversion","dependencies":[],"entry_hash":"50a7488df2841037e05103a1286927803597e67825c3f5d70145597f24f71b33","functional_test":{"relative_path":"mean_reversion/test_0023_connorsrsi_sensitivity_analysis.py","sha256":"9a29d25a3255060bcf61a26da2771bd62b926780d6ac19c2bfa85615b85c6612"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_connorsrsi_sensitivity_analysis","source_available":false,"strategy_package":{"files":[{"path":"strategy_connorsrsi_sensitivity_analysis.py","sha256":"178588f6fae50f146b577f27410d739ca8452e6a86fe5124e66353c15b1a547b"},{"path":"config.yaml","sha256":"6d1fd9e66671aced09b5cbe6969008dda7dc749a5d73022f41c9eaf777b1b037"},{"path":"run.py","sha256":"489ed61323e95fcd03623a5213ec234eb0cece44ccde0e909c56badf22cbab69"}],"relative_path":"mean_reversion/0023_connorsrsi_sensitivity_analysis","sha256":"a8154ea5d831f7a9d18eb12178623e3593a91ba3cf9390d76b8dbfa1e53e1331"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0024_mean_reversion_guide","category":"mean_reversion","dependencies":[],"entry_hash":"a4cf9476aab090f3ddeeb8ce095c50038ef2e07ba34fe07bf041db065ddf2cc6","functional_test":{"relative_path":"mean_reversion/test_0024_mean_reversion_guide.py","sha256":"823e27c54cb86d7dde666bf17118e439aa1a68af4720551b5ff9c44aad136eec"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_mean_reversion_guide","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_guide.py","sha256":"9e5bf5b3ecc96d421b683a9c743cc4a3f944ab8fe2a7853491eef5f847186414"},{"path":"config.yaml","sha256":"5d1613e4656ff118b076db436a8410a0f1a13a3f23f34cfd48c1a74da5d1cd89"},{"path":"run.py","sha256":"48a1f7d5e6772ee5167d1485bd7b20df4f9042342ec914663b68c71830d91629"}],"relative_path":"mean_reversion/0024_mean_reversion_guide","sha256":"3c99da90baa1c2ffa2fb317995aefcbb4879b545d9e635faadbb565f3f133304"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0025_weekly_mean_reversion_rotation","category":"mean_reversion","dependencies":[],"entry_hash":"a3a5f17de05ad5b908e19b54fba600f6d4ebab463a5d2f2d8f17a272a75a2b99","functional_test":{"relative_path":"mean_reversion/test_0025_weekly_mean_reversion_rotation.py","sha256":"4737c73d84ba9855a9317c3f0a4da7343833d31435bcbbca0380c8605c3f4ffb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_weekly_mean_reversion_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_weekly_mean_reversion_rotation.py","sha256":"ae0d23f1e894f9501b04f5d920b89f6f3e3c17f2ad9a45b18e5dd23e6ba669db"},{"path":"config.yaml","sha256":"a51e2e7a889ba0989871f7d406cb104b16f9cda0e44b2d66b2206d2a6a2554b0"},{"path":"run.py","sha256":"226507cf08b5c4718d925a3d9d2a00d1c147ab96fc6eaa70c266ef18db3905c4"}],"relative_path":"mean_reversion/0025_weekly_mean_reversion_rotation","sha256":"089d7bf84675fc9bd94a53fb73dc75526b96e7131785ff8c315914ff8faa51d6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0026_index_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"d031b4823376596882f1b1dd9a2ec36d4ae6b035c027b980686301a4a6b659c4","functional_test":{"relative_path":"mean_reversion/test_0026_index_mean_reversion.py","sha256":"10e2efb57c5e6310400f83456ffd660345c9fea3d5a81a3c0bcd792d63824850"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_index_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_index_mean_reversion.py","sha256":"e0d9de172f9418588d0cbc66d2033d4cc3d9f692cd01ff57ad8e0307c41266e7"},{"path":"config.yaml","sha256":"f56b8836e64c6043a28ee31fd7dac3faeca83df13fdc79c61d0bd3f4bfd630f7"},{"path":"run.py","sha256":"68e60044b600818eb0b0d7e39a0a92133c70329341eefc5521763a4b1f89d629"}],"relative_path":"mean_reversion/0026_index_mean_reversion","sha256":"9158c002c823c7feba20cd4a0de06294e0ead37bcb709cecd793f975e78f1b5d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0027_mean_reversion_across_markets","category":"mean_reversion","dependencies":[],"entry_hash":"d8dcd6f1b339e52b1f829a7608fa682dfbbb32dbccd58c670ad7e25ebac8b048","functional_test":{"relative_path":"mean_reversion/test_0027_mean_reversion_across_markets.py","sha256":"ce4af1c161eb9d4015921da663ffb1aa4e682499c85d9c3ae5680fb5b674e303"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_mean_reversion_across_markets","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_across_markets.py","sha256":"0b32f9a3a1c4c76b2a7a74dd6c802ea83f3fe0f3ac247804b152b18f4bc2ebd5"},{"path":"config.yaml","sha256":"926900c4b3cd70991492c22ace276be892f4f0f0abd18c868dc12063850d62ce"},{"path":"run.py","sha256":"7e1b988b89eae51ce455289eafe5a3e92892e3297bd71c9cf6d00e8409eaaa6b"}],"relative_path":"mean_reversion/0027_mean_reversion_across_markets","sha256":"fc6f2ec284f22bc02178428bbc16f8029077711be45b98e6e9ed7afed30a85a4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0028_rsi_oversold_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"e15fd4e6a6e4fe023df0e017060f3f0cdfb7ba1fb59eb64d61e488dd378b7960","functional_test":{"relative_path":"mean_reversion/test_0028_rsi_oversold_reversal.py","sha256":"221bcf787b2a1a791d60ec2a43fe0b4089b40a14905eba1cc563f7f8b5fd1451"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_rsi_oversold_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_oversold_reversal.py","sha256":"2e52dd2f90266e2ee310b920a6a32b490178aa97673ab0695678e6e5933569b2"},{"path":"config.yaml","sha256":"f2efd65645edffa4ef0ab3ca43aa8f19a4562c5e880f035ba8ecc638dbacdc7b"},{"path":"run.py","sha256":"0a5398948deb63f0b1c522d010a8eac932e5aaefd6c22c5d9efd4e1a1183e9b5"}],"relative_path":"mean_reversion/0028_rsi_oversold_reversal","sha256":"e57915f9df2dc0ec9309c6e9dcb6b04e38ce67f886ec43b39f52e6b577437444"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0029_consecutive_low_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"976162065048c5a2de2a7c5fafd277d2f2d92df1cf23d4e2d12a385b365ebf2f","functional_test":{"relative_path":"mean_reversion/test_0029_consecutive_low_rsi.py","sha256":"5ed397c72a812888ade90032de81ed681acbde8dc88f2d2fd4d4b0f21a137980"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_consecutive_low_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_consecutive_low_rsi.py","sha256":"e8c65e0bd5f5c0481b5cb1e3ab3e79af1155175890ffa3b3c5474aa158c400ec"},{"path":"config.yaml","sha256":"94c26b79ca34db4d9480e69eafa90b2ddccf1ce1750cb50f13db412407fc972f"},{"path":"run.py","sha256":"2f8e26a2eb5b81bfa720e18fbc4cf2a7072218bf176d1dcaf63f681e10eb4550"}],"relative_path":"mean_reversion/0029_consecutive_low_rsi","sha256":"5d652fd0f03e1b89b5fbcc07b72f338b33de33935e91f0d4e757b23937f815f8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0030_rsi_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"f60e39846f0498c8a67e26ca3522441107010a9c1f49135e37cc586642082d6b","functional_test":{"relative_path":"mean_reversion/test_0030_rsi_mean_reversion.py","sha256":"818d4c6a79ad856364127c209e23e016e14a4d84bcd5f132defd56847e1e4469"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0030_rsi_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_mean_reversion.py","sha256":"5c908184ea6bd7c63aeb27f27259fba88c821e5bb644b8189e6b7768df5ff66a"},{"path":"config.yaml","sha256":"4d7b88fb6be6d1bb30d41b1ade28366b6675d4728bad17bad2b008ab06109277"},{"path":"run.py","sha256":"92c304a8755009f333b2de5099167e21109fc6452c3d1bf43d0200f6b50134e0"}],"relative_path":"mean_reversion/0030_rsi_mean_reversion","sha256":"f6daec9e085f7c987218b7d7e3ed598bbcf9e60fd522784267f415c12c8562a3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0031_simple_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"a1bf00e2c6bbad302ea40aed35806fd406ef3bcb946948177766070e8a1d4e3c","functional_test":{"relative_path":"mean_reversion/test_0031_simple_mean_reversion.py","sha256":"03cff2e5bce74773effc3ca6f4770e452b86a081684d564d95a55ca0b65fe741"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0031_simple_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_mean_reversion.py","sha256":"9ba73e6a33b4255f8aa2da5ed978503ebbf606cde9a177175fb1b091ba6d64e9"},{"path":"config.yaml","sha256":"170dcb88fdb79dc0ee01f4a3b4952439c245d72e770250d9fc78344dae07f64d"},{"path":"run.py","sha256":"405a8b34fce0e9884ee42fc833366c16ca9ecdd6f69b1e6796e18c78fec0193f"}],"relative_path":"mean_reversion/0031_simple_mean_reversion","sha256":"f96113e89a525739408ce096bbaf77ea9ec9b37df6ccd0569b0914e658e08284"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0032_online_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"7e7e8bebf118bec0b3cb97a8e32e198d9dbcc75e8c749476c867ac844a7fc70d","functional_test":{"relative_path":"mean_reversion/test_0032_online_mean_reversion.py","sha256":"f8f0a904808963fc34df8a2e45a8a0fc360d5a1468ff871091bca787448ed48f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0032_online_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_online_mean_reversion.py","sha256":"23941b022ecaed9a023f35f631f16d1acf9d191a069eafd2a00008715d8c9160"},{"path":"config.yaml","sha256":"fc0117a4484b326b431a9b02b7470411c4112d1b6fe5bfa4436d7d77e45ea0b2"},{"path":"run.py","sha256":"5ddaa78a1e0ef4d45bd60063f798eeb8b342c894a3dcf6ee537d99425481ba2d"}],"relative_path":"mean_reversion/0032_online_mean_reversion","sha256":"228f16bce54e79589c95b805f3e0c1ac3dc4304547c696e97fd3206399337b89"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0033_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"0f0db060c7aba8ea399ff602c19571f1a78336f531b679dcd20a35d50837cc99","functional_test":{"relative_path":"mean_reversion/test_0033_mean_reversion.py","sha256":"8cb8a82cf453351f9645d1d26c767a4767c7d465aaa818e2f0e35c4737e3a64e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0033_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion.py","sha256":"a2f5405a8fe96c4ceb082bcc40d375c2a5a67b0c5c294381123f734da25faf90"},{"path":"config.yaml","sha256":"e97f3240cb50bf5cf97b22023f14ed5ff701602058e17eb0775be1a0d1bb3bff"},{"path":"run.py","sha256":"5984ede159a528e915f956ae33fe852ad4cc3a93e9d4e0a397d7cdef3902757b"}],"relative_path":"mean_reversion/0033_mean_reversion","sha256":"79ccd83ae7fad023eed1fdaad0e2419798d21a82e97fe5d99080cac963394f92"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0034_weekly_reversal","category":"mean_reversion","dependencies":[],"entry_hash":"30613fde127ddabb8ec34f93369054c69e34a122a65e4b9b75e4696a94ed3349","functional_test":{"relative_path":"mean_reversion/test_0034_weekly_reversal.py","sha256":"49f1bc285e3b664e143c3e01aa1d75e6fccf9540951f43f60e85e790141f7b9f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0034_weekly_reversal","source_available":false,"strategy_package":{"files":[{"path":"strategy_weekly_reversal.py","sha256":"592d4e890f3960ebf1d63ae388cf2eb069e5e460de750663d1ca6a046fc66594"},{"path":"config.yaml","sha256":"a5fc0a800fa4d6032a1f533a125649a770ed3abca355322fe73c10cdacefc81a"},{"path":"run.py","sha256":"abb2d95b88040388b326db900d5596916b1faf87e85c4c09f48f1f1716f052b9"}],"relative_path":"mean_reversion/0034_weekly_reversal","sha256":"0baafc7fdded4bd9a20e8dd6234d6b0e3a3ae472a6e89b8f645d0bdf2c359227"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0035_candlestick_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"08f6b82fc2790ab9572a00590d3150093146ff26bcaf14616f3aa808cc80baac","functional_test":{"relative_path":"mean_reversion/test_0035_candlestick_mean_reversion.py","sha256":"7763691a863fe06ee92c42ccbcf8b220ee971cc277123f56c83809a74f3815cd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0035_candlestick_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_candlestick_mean_reversion.py","sha256":"03983d11631b385af187c64b5f823437f1601a8410bec87ba69b5986156501be"},{"path":"config.yaml","sha256":"c51fb6ea8090e06b8493a86712eee874bf39e50248eb95c2ba339ae2f5f5d7d1"},{"path":"run.py","sha256":"fe70c323b72820aafceadc1c167436a7832c6c169932fe0348774ac1327214bb"}],"relative_path":"mean_reversion/0035_candlestick_mean_reversion","sha256":"fe6c7c8dc3a7ed44d648ade2b9d0d41336faa300be11b7b29bf0adae87a815b9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0036_sparse_mean_reversion_portfolio","category":"mean_reversion","dependencies":[],"entry_hash":"97a26302627d179250967d7390bb68c7ca5a4100b909d0472af72b17971e4dbb","functional_test":{"relative_path":"mean_reversion/test_0036_sparse_mean_reversion_portfolio.py","sha256":"514cedc515992627a11ab78f85f3c1672600da6ed483d8afaa9a921868a0cda0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0036_sparse_mean_reversion_portfolio","source_available":false,"strategy_package":{"files":[{"path":"strategy_sparse_mean_reversion_portfolio.py","sha256":"71cb76d166591ae77dc62191bdf8ec69c3554e15d7c327302ce52ddfada76955"},{"path":"config.yaml","sha256":"b5bbbd471372983e79e1d90bd01df308bed9775eaec8e507e3b7ebc5c7cb54f2"},{"path":"run.py","sha256":"46822356832fdbeade349caebd2bc5ed7517068ad91a0e84d4d277de95fdd395"}],"relative_path":"mean_reversion/0036_sparse_mean_reversion_portfolio","sha256":"feaefdbae1ecfa085e69962d6f1882093c5f7892483284ec023af57946de44bb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0037_min_profit_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"f51fba0d298a7b6433df977f56a29aaef79f549d2b8c11961950ddd842c7988b","functional_test":{"relative_path":"mean_reversion/test_0037_min_profit_mean_reversion.py","sha256":"65bea287d52025dd80fa80b9b9e21a3b1c8a03a95a5466d2ab83359f8d3b1048"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0037_min_profit_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_min_profit_mean_reversion.py","sha256":"8757c6d351f4cf5801fc5f510edb1954aeeb0ced9d4604a9892e9b66d3bf7485"},{"path":"config.yaml","sha256":"05482d01360d034c35fc9e96017926e55f6d9485d4a50e9104cf2817d4d56452"},{"path":"run.py","sha256":"87dab152c9b31bca7ec0da40f3eb5b7b104b50334db016bc44ac4e545ab96712"}],"relative_path":"mean_reversion/0037_min_profit_mean_reversion","sha256":"1c8a95a9393b802e1be4f539ada16cd1dee772cd3eb7329fd0a091918d01e13c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0038_mean_reversion_entry","category":"mean_reversion","dependencies":[],"entry_hash":"d493bf56e051840f74829250580c17aac9687c3de2d42068fdd8046163b9d89a","functional_test":{"relative_path":"mean_reversion/test_0038_mean_reversion_entry.py","sha256":"8d5b0e39da686cba7cae1b8d1b773d515f9bf840619d5713fddc482b55144bb6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0038_mean_reversion_entry","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_entry.py","sha256":"02992a377d21d419c2c10b752d670fa65563740b271ef68d2527330cf481385b"},{"path":"config.yaml","sha256":"7fa31e76280336cbd929e74f3d16a549fd3153a57070264923b29b48d12213c5"},{"path":"run.py","sha256":"a636426e217e01960d393f0555d13bc48c2ddc56cfb4e668a317ba2b82c45d94"}],"relative_path":"mean_reversion/0038_mean_reversion_entry","sha256":"60a8de1f54fb54566f018abbe5d79d737f26a7e3a7945ec7f0f33f1599c9eb5b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0039_bitcoin_trend_mean_reversion_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"1a3c9459e742a508aa532fdf39fe0942a52d5e5b1abd1c7291953445aaeb899d","functional_test":{"relative_path":"mean_reversion/test_0039_bitcoin_trend_mean_reversion_strategy.py","sha256":"299d0e269d087f4eb7232d5a3e557d11067436485aa68ff5482a7a6cf9995b3a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0039_bitcoin_trend_mean_reversion_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_bitcoin_trend_mean_reversion.py","sha256":"161f1f73b3dc4d54aa914813608b2368d2b9281b2a0f5b0a12dab1702a594102"},{"path":"config.yaml","sha256":"4caffe43c8bb6af0cec58952723648d36e919ce670e702d3eb9aff8cb98e6f79"},{"path":"run.py","sha256":"d50a2b1a237268ca2f6ef1462378b151a5bf3463097a40285ceb778a6239c44f"}],"relative_path":"mean_reversion/0039_bitcoin_trend_mean_reversion_strategy","sha256":"3b8169dc6c3fdc5a0568b53411cb62be9abf68a1585420e22d5702f7dd14fe13"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0040_mean_reversion_check","category":"mean_reversion","dependencies":[],"entry_hash":"89ef33518d9ef0f40add28cd44f9bda58e16c54e2ad47be4e7f3452f2f195ae6","functional_test":{"relative_path":"mean_reversion/test_0040_mean_reversion_check.py","sha256":"17f0636123d7fc712156ed37a724fe54de2ce2a320a953772a1b53058ae3902f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0040_mean_reversion_check","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_check.py","sha256":"106cc728752b3cf04417ac7f2932c8247ca03d3b24ccc72eb8ce686927f25cda"},{"path":"config.yaml","sha256":"0328c8496ae4e8e93a5105ee33e57ccc0e7c0471832edae89774197b29e189e9"},{"path":"run.py","sha256":"567191ac7dcc6e824e226d691405b672e0e3f2b572a60132a77869d25b89c835"}],"relative_path":"mean_reversion/0040_mean_reversion_check","sha256":"d406a5aac68b543fa9a48ab8552099dc8463061eb9af100f147ee0d2025fc9d8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0041_efficiency_ratio_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"e4c1e6298e722185b4005bc6401e07017e7ee97ddf852e4785d5763d7f299fd9","functional_test":{"relative_path":"mean_reversion/test_0041_efficiency_ratio_mean_reversion.py","sha256":"13a995354877916abfac6b3a58d7511ff1050bf3bd08c285f5426772ecd35efa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0041_efficiency_ratio_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_efficiency_ratio_mean_reversion.py","sha256":"39df661160fbb59bfdb8e78d74026215d6c2d576452d28f1ddb4cd517f82bd8d"},{"path":"config.yaml","sha256":"3ee25675078b2c81d699bab2c7d90eccd0071f5b47d753bfdfb363cdb9e5452e"},{"path":"run.py","sha256":"23bfcbfa726b71e4411aa8bd99ce117552eab03aa22c1aba00cbb1e96388c6b6"}],"relative_path":"mean_reversion/0041_efficiency_ratio_mean_reversion","sha256":"544b95ef53a82424cf87d1959de290cd4f95f5bda7b482084deffc66d89f4c2e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0042_0046_the_rsi_engine","category":"mean_reversion","dependencies":[],"entry_hash":"ac2f886046ac6e8a248bee1a01833728e480581f93e09f060a8273c733727f71","functional_test":{"relative_path":"mean_reversion/test_0042_0046_the_rsi_engine.py","sha256":"c2836c726b1b8a44979df05953a4a8f4dbc042068b75543d90021ae2b061e356"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0042_0046_the_rsi_engine","source_available":false,"strategy_package":{"files":[{"path":"strategy_the_rsi_engine.py","sha256":"6d22efeeeae9e9ab5c57a7be99e6d95db0de1075d6204fee6aa913741ea05c35"},{"path":"config.yaml","sha256":"bc2b28bfab62fe56b4654726a5b4c38124d4df057a8b038aaf25a98afe61f8f2"},{"path":"run.py","sha256":"2ee207202b93954fc609b45d70ceb9cdb10c6f5ac240beb6cccab4ad24948055"}],"relative_path":"mean_reversion/0042_0046_the_rsi_engine","sha256":"e01d6abb75d3835534ec344b5d2b359dc1e2cd8dde5bda95ac787692a7bbdaa0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0043_0060_stoch_cross_ea_h1","category":"mean_reversion","dependencies":[],"entry_hash":"0862fb239cec85c4187d60084a174b997d9390da4eb25bf6260d714df6827209","functional_test":{"relative_path":"mean_reversion/test_0043_0060_stoch_cross_ea_h1.py","sha256":"23d657f88924c58f724db86a33150da273855a4adbcb2eae8687a3d2af0109c6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0043_0060_stoch_cross_ea_h1","source_available":false,"strategy_package":{"files":[{"path":"strategy_stoch_cross_ea_h1.py","sha256":"ee229810f3893be3c4bdcca3d21121182a7d03708953f8ab184315edc63cd3f7"},{"path":"config.yaml","sha256":"325d8a97006de4cea8195bd4c645866414ef092e551f1990e013298f755f4001"},{"path":"run.py","sha256":"01110e65b5aa741c56d0cd689479651519a3288efdcca141aac97dd0c7d1c516"}],"relative_path":"mean_reversion/0043_0060_stoch_cross_ea_h1","sha256":"758d683e02075b9100ffdb17a056526b6306b1b4f9bea98a5bc31e8b5dccc963"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0044_0106_mean_reversion","category":"mean_reversion","dependencies":[],"entry_hash":"5ccf06d36a44e5e1d799fafe7237395f06d0c237d398c6fbd4b5ed0c17924026","functional_test":{"relative_path":"mean_reversion/test_0044_0106_mean_reversion.py","sha256":"65881a31ac709810dc565eae9fd16c5453a23caa2cab9a82603a7b13c3659616"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0044_0106_mean_reversion","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion.py","sha256":"fcbdc9fc2fdee5297eaf34e594f602e58467c29b33e7992eed389c6c040da811"},{"path":"config.yaml","sha256":"8af6adbe49157392f7c888ad2395fb6d7cce96704ece0152088defb6258ace0b"},{"path":"run.py","sha256":"871b3964a9cfd22869cb929abe2f21c977045e69c62dad8d52ab98488c8ad215"}],"relative_path":"mean_reversion/0044_0106_mean_reversion","sha256":"a7e3ad0401c07887df39777c09c58a20618646841cfbecae187296c41a329d3c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0045_0108_icho_trend_ccidualonma_filter","category":"mean_reversion","dependencies":[],"entry_hash":"49230a59f718285ad5cf98429b0e2b1b6a4a81da6dbad68b873a601d30f89b73","functional_test":{"relative_path":"mean_reversion/test_0045_0108_icho_trend_ccidualonma_filter.py","sha256":"135b5a0a7bc4df26156ba65031800340865ed427a6ccb85a59c7ce830a950110"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0045_0108_icho_trend_ccidualonma_filter","source_available":false,"strategy_package":{"files":[{"path":"strategy_icho_trend_ccidualonma_filter.py","sha256":"fe02b61275099f8f57f3a21174ecf52f9beb5aef7be30de7881fd205893bcb2c"},{"path":"config.yaml","sha256":"8e9c14b5905884a87108f50ea3d05254cf92a178266d8f10c7a2ee4a1bd0af50"},{"path":"run.py","sha256":"b499c1a433741105ca31629cac6c5e61ef6459fd93531dd95a71fbaa5136dd83"}],"relative_path":"mean_reversion/0045_0108_icho_trend_ccidualonma_filter","sha256":"b725231bdbf58c07c46ed87b5b9ef438406198305c6c1ec756297b2221acd765"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0046_0110_ma_trend_2","category":"mean_reversion","dependencies":[],"entry_hash":"d2c6e9fc76c16ffaf7ed4a1fcf5c20d1ea0b04b4fad92a931ec9e5add70b4b4e","functional_test":{"relative_path":"mean_reversion/test_0046_0110_ma_trend_2.py","sha256":"a8318aae5fea8f33ed20cf2221756ed27bd82a59c4958532fe99c8244f39ec4d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0046_0110_ma_trend_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_trend_2.py","sha256":"7aa86823bba1cf99bf8cec5f2449722210059e79166420837b74015066169ab1"},{"path":"config.yaml","sha256":"5e4a36ea7a86d026c788d1368a2dbaa620269f7e3dfaf7a36fca2cb533f9d314"},{"path":"run.py","sha256":"b3a28ff129532d268b47bd364e3112ec4f6baba43386827ffd9bcf89baa1028e"}],"relative_path":"mean_reversion/0046_0110_ma_trend_2","sha256":"7130ec4715cc45f55dd4752a52b7ecd49acce8244824b8843514c5f4c2177a48"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0047_0132_exp_spearmanrankcorrelation_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"d8e504b64d835b87a643f74f2b42bf5dbd1d0ee6a53c1c9b4026ce6edecd65d0","functional_test":{"relative_path":"mean_reversion/test_0047_0132_exp_spearmanrankcorrelation_histogram.py","sha256":"03909f9d67cfeac862593f8739a5297f2fdb794d987344a7eec4a842582793fe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0047_0132_exp_spearmanrankcorrelation_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_spearmanrankcorrelation_histogram.py","sha256":"898ef1c25420c83e6a3919f1df83a114ffd61490ebab81545a56c3f5173bfbf0"},{"path":"config.yaml","sha256":"f077fa1dc427ecc852baf93e94f7ed885d1655892f275b4dbcd690ef6017c9a8"},{"path":"run.py","sha256":"7c4b6e85cc2505ab5183f24854c79f78beda35c91521fc77b9a6576fd1405cdc"}],"relative_path":"mean_reversion/0047_0132_exp_spearmanrankcorrelation_histogram","sha256":"90f4533b2825dc67cfe49f7a14052d2a740d4829f3973559e10a971bb3c51853"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0048_0154_exp_finetuningmacandle","category":"mean_reversion","dependencies":[],"entry_hash":"e84047193f409212785b187f478bd3bbcefb83475b1de00e1763911ec6a8dea3","functional_test":{"relative_path":"mean_reversion/test_0048_0154_exp_finetuningmacandle.py","sha256":"374e17b159ea6e440cca8f9101ded3806f8d344db8d94c15cc31a081accbbd46"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0048_0154_exp_finetuningmacandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_finetuningmacandle.py","sha256":"55a5318da4b1d3b6b750d914771b828532bbe3dda2fbe56e4671f5556beaab91"},{"path":"config.yaml","sha256":"a56a71ecd21411ab24b7d8e4e081a3a8b39194d95e1cbb8c78436e0bd4d176ae"},{"path":"run.py","sha256":"03ac981b58a1f16ba74aa534c5d2bdcd5065cd58a46ab7cbd4f576e3b86301dd"}],"relative_path":"mean_reversion/0048_0154_exp_finetuningmacandle","sha256":"a58823ecda4dbd860822b2dac6916f5e30085d36686ad587ffe0c9b335974440"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0049_0166_nrtr_revers","category":"mean_reversion","dependencies":[],"entry_hash":"3c5b1b7fa8ab0644a838650c09a32bf18d5a23aa7e8dcdeac7a8493ff73d77d7","functional_test":{"relative_path":"mean_reversion/test_0049_0166_nrtr_revers.py","sha256":"b009b6b4b0bc7a199e15f406df6e6991080072ca6377590678e3f8f8a8a03214"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0049_0166_nrtr_revers","source_available":false,"strategy_package":{"files":[{"path":"strategy_nrtr_revers.py","sha256":"b39c34e5ad412ebdf8d4c65f95b2d4cb908d0a7985fd85eeab96ab3b89f73269"},{"path":"config.yaml","sha256":"3707fb852acd83ed48b3cb462766f8a5f660bae83548a51c6311ae356047369d"},{"path":"run.py","sha256":"df746fd06aaaf57d37a4ba1e64c4c33c79c0360e9eeaafddca58b5124604efc5"}],"relative_path":"mean_reversion/0049_0166_nrtr_revers","sha256":"82fa62146550416c08fe053650f77f75da0666836887ae3236a856aedbb59d8b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0050_0167_extreme_ea","category":"mean_reversion","dependencies":[],"entry_hash":"1e2ce940c43f4a4a5c493adfbb7ffad1499ae7011205e54d64296fe678b7c548","functional_test":{"relative_path":"mean_reversion/test_0050_0167_extreme_ea.py","sha256":"a766a21220f430110796c7bc66af91277f64ea2f06500ebc91b3eb24e1ccd708"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0050_0167_extreme_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_extreme_ea.py","sha256":"7f673ec2823a8187861759d9c1c9b421d4c60e18dc6e650169570b541c9a2682"},{"path":"config.yaml","sha256":"be622805aa208055fac54cdc1e7561470f22df1e8db3bed8b10aabe9117d8e18"},{"path":"run.py","sha256":"610565ca78b47aca492833e470833f03f57058464a6d53e4e0d8a42a8c32b197"}],"relative_path":"mean_reversion/0050_0167_extreme_ea","sha256":"c6eceb9cd71d3d1cb88b898148806a358dfed00aa0c08100483079eee7d73730"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0051_0171_rsi_rftl_ea","category":"mean_reversion","dependencies":[],"entry_hash":"32c8c2acefaa5a3e3d6b094c7a22c5d93c788b88b24e4fe21bce9ff51ad4e29f","functional_test":{"relative_path":"mean_reversion/test_0051_0171_rsi_rftl_ea.py","sha256":"133b4f7416f1e302044441b15ec0ef42f9a270d34dc31f7708af2884e804c1d9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0051_0171_rsi_rftl_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_rftl_ea.py","sha256":"fc6dc7281e41c56a7eb18cbfe7ec41ecad961cf63700dc05ef81e86ac4187b59"},{"path":"config.yaml","sha256":"514048ea12986b5603143b36b2390addf2f8b7087f1af81b905ad6aa34f2b461"},{"path":"run.py","sha256":"c03ed61f3ad95c824e0e89756a096228000addec2ffcd8912502205628b0f6b6"}],"relative_path":"mean_reversion/0051_0171_rsi_rftl_ea","sha256":"a2decdbfd96dc0025efc24e407fae1c22e48fb027a5ac6a45a175e5d76b5325f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0052_0172_exp_timezonepivotsopensystem","category":"mean_reversion","dependencies":[],"entry_hash":"947da61f941ae2a51265ddfab94183a2268ca11411b099fcdc7f9b5252098a3a","functional_test":{"relative_path":"mean_reversion/test_0052_0172_exp_timezonepivotsopensystem.py","sha256":"70309efe1d4dd1b2cb5e38bd711836037b724949b1a461d87e1bbe9cfda8e489"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0052_0172_exp_timezonepivotsopensystem","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_timezonepivotsopensystem.py","sha256":"9bbc5fb51dbc40c9de97c69bfa9ae7ee9dff91b7e687c93e3bbe41e7897b2db4"},{"path":"config.yaml","sha256":"00b8ca13032bb83d89e0a1a269c0e61a305fcfce27972175efc6ed6591e7a6fd"},{"path":"run.py","sha256":"57aba39989f70045bb09a7f2ccf1d3948a7c63f280e55cb8a7c3cdd4cf107ce6"}],"relative_path":"mean_reversion/0052_0172_exp_timezonepivotsopensystem","sha256":"d07d86e08084963ab70036091fe56b3a47eb2d616b4f6bf23e76228157be0c13"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0053_0176_exp_hans_indicator_cloud_system","category":"mean_reversion","dependencies":[],"entry_hash":"a5bbe4accff67287ae78545ca6480c8fae9658c4f51007ddcf4b663ec1491dcb","functional_test":{"relative_path":"mean_reversion/test_0053_0176_exp_hans_indicator_cloud_system.py","sha256":"0174d41436d8ef3fdc95a842fddddcd168d048da24589f5c5748441667b3ff11"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0053_0176_exp_hans_indicator_cloud_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_hans_indicator_cloud_system.py","sha256":"359ab080a7132c322f4cd0b924c4df7464c03e58f006847b80ac402fc324cb4c"},{"path":"config.yaml","sha256":"2aab517714e8da5240df6f9eeb92da64167b34ba5faac76688f5b4a4564fb02b"},{"path":"run.py","sha256":"7a89cf87727f4da77ade73bd45425531ce2a27a7f2cc1923a01cef4ff45ef39a"}],"relative_path":"mean_reversion/0053_0176_exp_hans_indicator_cloud_system","sha256":"5137ca6b268e3450e26e76c4c023b4cc1923a318ece0f4facf3df6cbdb5c45e1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0054_0177_exp_hans_indicator_cloud_system_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"8bcaab82cc186465dae3eaba631a07a6bfe48e21b609587dce2cbbe13600b298","functional_test":{"relative_path":"mean_reversion/test_0054_0177_exp_hans_indicator_cloud_system_tm_plus.py","sha256":"3a048f97a0e933bf24fb6b62c3a1c1e7f8e49c2b88131b0905ba08f888298b9b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0054_0177_exp_hans_indicator_cloud_system_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_hans_indicator_cloud_system_tm_plus.py","sha256":"bd52378463fdcfd3a15037028e2f0bd5223763109951d11508b79c39f8b4322a"},{"path":"config.yaml","sha256":"76ffd24f17c8415cb6b7231966a770e6c7704e7ddbfb3d3927aa8fb3bd6c4999"},{"path":"run.py","sha256":"9f9140f5106d52d730d29af5854bbb816a4a8771755aecc3b82a34430b750bd4"}],"relative_path":"mean_reversion/0054_0177_exp_hans_indicator_cloud_system_tm_plus","sha256":"232e61c09f4089a5ce10d1ecc1a4cfd7fb797cb8247a3919088c5b3246f52da3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0055_0178_exp_timezonepivotsopensystem_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"f63c6c397b41e2cdb561296e3da8fd8aac424d32e615cc3b0ee69cf0b8c5bd75","functional_test":{"relative_path":"mean_reversion/test_0055_0178_exp_timezonepivotsopensystem_tm_plus.py","sha256":"9a949973a1041b82adc5e361747825073c59474dc86be76a57a10cc25773c327"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0055_0178_exp_timezonepivotsopensystem_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_timezonepivotsopensystem_tm_plus.py","sha256":"c81bfbe688832adac871b04493996aa987ea984df28d42faacef5f93fa6e79a2"},{"path":"config.yaml","sha256":"af73135fb2bfba72c662e8e8582a711ee66f3d3dead5b29ba03efc636139a9c5"},{"path":"run.py","sha256":"3d4fac9122ad5546f53c2d05e97cf0c5d182a079c30b7fc288496bb2e5a1504b"}],"relative_path":"mean_reversion/0055_0178_exp_timezonepivotsopensystem_tm_plus","sha256":"346db765c5fe803e92d759f9294d6fbe19918c449c18c9eb88b5c2955b12b25e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0056_0181_exp_vortexindicator_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"e28c1590e6c005e063d59064485654321582d828f10aea09e856b8bc32f0452b","functional_test":{"relative_path":"mean_reversion/test_0056_0181_exp_vortexindicator_duplex.py","sha256":"46501d0244ea8902e94cdd716ec78348fda3439b7ba1092248d6b4f7fcd153bf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0056_0181_exp_vortexindicator_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_vortexindicator_duplex.py","sha256":"b2a9b7f5a46735d8465917df10ff133ce878f82f94ae2b49165728887579c145"},{"path":"config.yaml","sha256":"71095e4fcbe9d7642c5fb644b8c029c86ebf689d2bace6b98f6dd401ee0fd575"},{"path":"run.py","sha256":"fb80e8dacfde56a8f8d4053154cfb4dd302afaf6e7268ff4a08721f57bee7ad9"}],"relative_path":"mean_reversion/0056_0181_exp_vortexindicator_duplex","sha256":"636f1f0b1ce9351393b9919139e41d55d301c11b9a1c93446872237f70cb49b9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0057_0182_exp_colormetro_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"685932df0020013c3ff4cbedd47470aa58f3dd19964e00af0561fcfce2ba1a57","functional_test":{"relative_path":"mean_reversion/test_0057_0182_exp_colormetro_duplex.py","sha256":"624759fe22238b18bca232b67121cae3e9bba207edc145756d374de62906d0a5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0057_0182_exp_colormetro_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_colormetro_duplex.py","sha256":"f9018a11dd30f8d794bdc064e71d50a24a10ae7996a009ce149413f525cb92cf"},{"path":"config.yaml","sha256":"88eb5b21965a1470049b711997ba8ee7ca8829ecc68a1f0a0606a754d670e4b1"},{"path":"run.py","sha256":"6958a80078471e0c4ed9548efbcb28228454f52bf26acbceeb6b892df7ac6166"}],"relative_path":"mean_reversion/0057_0182_exp_colormetro_duplex","sha256":"e9277f32c7f53b4aaa1f0642c47aaa4d103e7a1a52e15354e6769bbeb452292d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0058_0183_exp_colormarsi_trigger_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"c4be108efd432aa9031bd043091c9e55f30ae81612dcecc43209a7bc98820c83","functional_test":{"relative_path":"mean_reversion/test_0058_0183_exp_colormarsi_trigger_duplex.py","sha256":"c52f55e5d7f8571fbee9658245f1370b1046c9ac46778b08b01874cbc7cc627f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0058_0183_exp_colormarsi_trigger_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_colormarsi_trigger_duplex.py","sha256":"5fdab6f8826a6d44a678c33812557e374a63ea0da675a294b7b47ac368731d5a"},{"path":"config.yaml","sha256":"33102841dbfd9cadf3a951528c8315178f3a8c8fb3a2479c28c3f93719f2ff51"},{"path":"run.py","sha256":"38844dcf0eb1dee7d277736910cbaa7138d09e555436fad82016e83eaaaa169e"}],"relative_path":"mean_reversion/0058_0183_exp_colormarsi_trigger_duplex","sha256":"dad5cdb898592e3d7a3a2a56c645e22c8e9c75d10d4f92c4a2e11a05042fb652"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0059_0184_exp_adaptiverenko_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"c65380085ea23b3bf6c6831ddee1e87325df957d7c5b4f121c2534d385e60c28","functional_test":{"relative_path":"mean_reversion/test_0059_0184_exp_adaptiverenko_duplex.py","sha256":"ab93e6d516463adf8da117e801435ce1ea062965f72c2c58fa1a407de55716d1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0059_0184_exp_adaptiverenko_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_adaptiverenko_duplex.py","sha256":"390fa8a69617fe3894b6ba9f8eaff2b3c069175528d00d992429c3e30b847db0"},{"path":"config.yaml","sha256":"4d6c9fc9dcf48f1ba8262cc931750a108dfc1097c19b6ba4b3496839daacd582"},{"path":"run.py","sha256":"5d6e8108d103b90831e6fdf50c08f3f43799a1cc63088d275b87ab3e8cc3077e"}],"relative_path":"mean_reversion/0059_0184_exp_adaptiverenko_duplex","sha256":"f3723d84e75648edb5ab474c64676c462254aaf4cc975251ac9982d14562372b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0060_0190_xbullsbearseyes_vol","category":"mean_reversion","dependencies":[],"entry_hash":"6f959e08d79c125d73639502d49e55d11d977e18173efcd9995136471feabe1b","functional_test":{"relative_path":"mean_reversion/test_0060_0190_xbullsbearseyes_vol.py","sha256":"61a8da9e297d94b52a7a12f18250a072d38758c5b64822c044dc20c20b3e6ea0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0060_0190_xbullsbearseyes_vol","source_available":false,"strategy_package":{"files":[{"path":"strategy_xbullsbearseyes_vol.py","sha256":"4db434fc36c336ad688a0f8d8194b2a2e8830ea8520ea7a48e6dacf7a5e07b30"},{"path":"config.yaml","sha256":"c071c8abd5a09af968be996aef0990ecc1440177bbe9fb7365cc2dfef02dc442"},{"path":"run.py","sha256":"4be673cbc6df0e9c10b64481a06c9850c6924da096d40d6da9445baa732c1292"}],"relative_path":"mean_reversion/0060_0190_xbullsbearseyes_vol","sha256":"9dfdab051597f59577f5cddd4a1290e66840f97f32fc4700339132b2f111440d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0061_0191_xbullsbearseyes_vol_direct","category":"mean_reversion","dependencies":[],"entry_hash":"ac8dbeabd29c44768908e3aa3b59def5fcb40702ffbef012013d162896920f4e","functional_test":{"relative_path":"mean_reversion/test_0061_0191_xbullsbearseyes_vol_direct.py","sha256":"7fa824875924437cc9b64b3a9e4a7677fdc9e860e88f6bd03e0cb224f1e2c7de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0061_0191_xbullsbearseyes_vol_direct","source_available":false,"strategy_package":{"files":[{"path":"strategy_xbullsbearseyes_vol_direct.py","sha256":"bf8acbaa31ceec76e351d7e1c845d68e99aa78a13afdb31946acdc93ef515b3c"},{"path":"config.yaml","sha256":"aef490e830702cb840808270d047ce66d569b12e1133a16021b71dbf7dbe6dc5"},{"path":"run.py","sha256":"fc3d334f940463348e6190c01cf448eb194cc0cb318702665b168970e8417839"}],"relative_path":"mean_reversion/0061_0191_xbullsbearseyes_vol_direct","sha256":"971a1960ccd5589cb7e50221ac29b079ee0bb904da84b4f4a61cebcbe7deb83f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0062_0194_starter","category":"mean_reversion","dependencies":[],"entry_hash":"48a3add58d7bb76eab4cf593aa056440cc234ba8bd053126bb8f8817531427b4","functional_test":{"relative_path":"mean_reversion/test_0062_0194_starter.py","sha256":"b89f4509f8442394362592b19ce8bc6b21f64c04b874deb5971aabc8ae9dcd04"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0062_0194_starter","source_available":false,"strategy_package":{"files":[{"path":"strategy_starter.py","sha256":"e0dcd6f8fffc2bd2ee67902ce95ace272fc3b4bfda766072bebdfadd32f770f1"},{"path":"config.yaml","sha256":"b515734b0258b293cc0c1efb6bb821ea5d28fdc270098873571ae33c6f7a843d"},{"path":"run.py","sha256":"b4e54c4b93be017f9bf16a2e20ed71482621d7e613830b3016e8c5b52f911850"}],"relative_path":"mean_reversion/0062_0194_starter","sha256":"93467cea09c84da07beeb8a6056b242cdc4fd28a083f030c8be91b6ff01d3fa2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0063_0197_exp_finetuningmacandle_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"a5000b35704386a20a7fe390c67aa3d6ce2d1e16de262d0f47cce6e4a9a2df33","functional_test":{"relative_path":"mean_reversion/test_0063_0197_exp_finetuningmacandle_duplex.py","sha256":"bc800f46269c2679da5951539904d8b0ad617ad4c8a2ac746e0559bab6957a29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0063_0197_exp_finetuningmacandle_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_finetuningmacandle_duplex.py","sha256":"e0678df1696fc27d065d40ccc8049848521350b9d2d1705bb4d93e80917086b3"},{"path":"config.yaml","sha256":"c67fbdd661a7c407d7642a633b64e36af4eb38dfec3eec07e7d11e3d06b43eee"},{"path":"run.py","sha256":"ef71878c13a0e801e37a7bcae7c1af836785704538474e81b195c2bf1be137b7"}],"relative_path":"mean_reversion/0063_0197_exp_finetuningmacandle_duplex","sha256":"aba7673d38e9e3ab334ef95c31097fa4e3b09dde60aa8964448e3cc539856316"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0064_0229_exp_xdemarker_histogram_vol_direct","category":"mean_reversion","dependencies":[],"entry_hash":"1a7a714ad2ee4597dce46eebdc2d3ef56764ad1cc09ccb5fd574a69cf6c5486d","functional_test":{"relative_path":"mean_reversion/test_0064_0229_exp_xdemarker_histogram_vol_direct.py","sha256":"b9445abcc9a89b3455acbfab3c0127067fd7ccddd2155d33022f5777761a5672"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0064_0229_exp_xdemarker_histogram_vol_direct","source_available":false,"strategy_package":{"files":[{"path":"strategy_xdemarker_histogram_vol_direct.py","sha256":"e5052edfd4eb091fd3418cb11a7eb6af091c9fd2c5f58902aad0f5ef34eec660"},{"path":"config.yaml","sha256":"dc8798f0e1a8807533f757ef4ff5b48becf88fdcd234718ccf4e69eaf73fcf8d"},{"path":"run.py","sha256":"b7f64a0dcd50442e2cda7b66895ff6a4740f98bb787675e322dac42399880420"}],"relative_path":"mean_reversion/0064_0229_exp_xdemarker_histogram_vol_direct","sha256":"7f9d147b63bddb0d2cae1a9fe02a8a6aacd0a90c933edcb2a43fbf9a3f2d678c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0065_0231_ohlc_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"a20094918d2835b9b2108943d0ddb8d4005a0b8e097fcca6b6cc40a88318bae0","functional_test":{"relative_path":"mean_reversion/test_0065_0231_ohlc_stochastic.py","sha256":"e1900dff777a39a8a1de720c581acd67d6c23e92750264d786da7bc493ff5ada"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0065_0231_ohlc_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_ohlc_stochastic.py","sha256":"db3f7d183a974d2eb37463469a11180458027da8856c68ced989e75bb31d1139"},{"path":"config.yaml","sha256":"18008ad4bca8749da8fe7b4850da7e5f00be2f3e568d5c6c2d78f9eec2b2c277"},{"path":"run.py","sha256":"09eb58a97f0763e173244c9acd15db27d9cd22688e3763770ec0715cc68854dc"}],"relative_path":"mean_reversion/0065_0231_ohlc_stochastic","sha256":"f715bd49a7db5b3256116e7ed35a94a3d7a65fbc30969f06c7bf6a4e268d6e55"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0066_0232_exp_skyscraper_fix_duplex","category":"mean_reversion","dependencies":[],"entry_hash":"14063b5fea5e3a5b98596c9361a0e348bb8e4172f0815a597553103f613c7f63","functional_test":{"relative_path":"mean_reversion/test_0066_0232_exp_skyscraper_fix_duplex.py","sha256":"01afdbf6a7ea51099a634dd9698e19c8e78b19df7920e98c8ab0fb3460ff1aaf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0066_0232_exp_skyscraper_fix_duplex","source_available":false,"strategy_package":{"files":[{"path":"strategy_skyscraper_fix_duplex.py","sha256":"685cac3bc02c644e3247f3beb0c90a503e7fe88f1b11370f036051b922ed945a"},{"path":"config.yaml","sha256":"f73f2aaeba46c7083a9ca15f7abaa5026e0e4841a91cdb17603705e33f1f4db6"},{"path":"run.py","sha256":"235ec5b176dab3c71c36486275dda83354840334372886ffd7b2aac3cc875cb9"}],"relative_path":"mean_reversion/0066_0232_exp_skyscraper_fix_duplex","sha256":"3f32ae1d0859d290c5e03ef1aeaf7d884363ae1478add1c064c75149557404df"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0067_0233_exp_jfatlcandle_mmrec","category":"mean_reversion","dependencies":[],"entry_hash":"648ed222fce65ec602e1f45f056b2c557b2550433741a92c7b7f86dc1c4d4530","functional_test":{"relative_path":"mean_reversion/test_0067_0233_exp_jfatlcandle_mmrec.py","sha256":"6e2c11264afa5d931369032ae54e5c00c38781df6c93984fd49ec4ed6ecf5044"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0067_0233_exp_jfatlcandle_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_jfatlcandle_mmrec.py","sha256":"e815cdc2ea478292c33a065cb2c5996d49fc3383217c9f96544a9d14329bf9f6"},{"path":"config.yaml","sha256":"5c00244e093896b33b436c83c6e7eda5eb6b1b9f1487b63988178e7b4a49124c"},{"path":"run.py","sha256":"49d4379f2aa9316f0ac6e769b8162c1e472bdebd800e42d69eadfbd3ba8eb616"}],"relative_path":"mean_reversion/0067_0233_exp_jfatlcandle_mmrec","sha256":"9f5705bc1adc14a7c6a585b901a3fc90c7ae1a6622f143392ba81685e01fcc9c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0068_0234_exp_x2macandle_mmrec","category":"mean_reversion","dependencies":[],"entry_hash":"9aa18d2e1006382b860eb20865748bc2c22e874822a8012f967619609b705725","functional_test":{"relative_path":"mean_reversion/test_0068_0234_exp_x2macandle_mmrec.py","sha256":"7c71b0d0576e9131baa3e39f0727aaf8aec95e4e824d559df96a6db021bdcb19"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0068_0234_exp_x2macandle_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_x2macandle_mmrec.py","sha256":"aba2ea7ab08478cabee4dfceece9ae78bbb0ae183c5697bd47206bde4fe2f4eb"},{"path":"config.yaml","sha256":"2f6ec9eccceb3dc1c9eb6c2843c34e7df78a9e6786d4aa7460625d7e6e65e972"},{"path":"run.py","sha256":"030db3db07ab81e55d15600aa1cbabdd7fa45df1ff839c4a9a6b9efc26ef4383"}],"relative_path":"mean_reversion/0068_0234_exp_x2macandle_mmrec","sha256":"5bb39f1e8c4f017d61f43f5bf2abe4fcec03324486a15b01518abe304cc7d5f3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0069_0236_exp_skyscraper_fix_coloraml","category":"mean_reversion","dependencies":[],"entry_hash":"e0d734c4ad8706c04805121ee47ec14f96272da021a96ad9d454ea76c9b9df9b","functional_test":{"relative_path":"mean_reversion/test_0069_0236_exp_skyscraper_fix_coloraml.py","sha256":"762d63af540687cd3faaedbcd3adb98f4eef822a94885af583a5fcca4cc1b0db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0069_0236_exp_skyscraper_fix_coloraml","source_available":false,"strategy_package":{"files":[{"path":"strategy_skyscraper_fix_coloraml.py","sha256":"62b26dc2c5d6f3710b8f764feb96a869cb3b201a1ccf648807f7bf1fbace6c85"},{"path":"config.yaml","sha256":"c8658df94c8a7e8fade7edf293adb3f31178718a09f812df56430a3696a554a2"},{"path":"run.py","sha256":"3fb236a6699bacce48d07d8bbd94d71ba216b5809fdbd749d1ebf7038336b691"}],"relative_path":"mean_reversion/0069_0236_exp_skyscraper_fix_coloraml","sha256":"91f4c5a307296ab4cca79720b2bac59399dba56bc858ad80ebb11efed9ac2655"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec","category":"mean_reversion","dependencies":[],"entry_hash":"bc1e9dbfbe8e4843aa86060640a9903267288ebb6859aba446894fc05107268f","functional_test":{"relative_path":"mean_reversion/test_0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec.py","sha256":"7a80121ceb0cc269d0046201d58c33b175b81603e6b62504a6623adc9a33b936"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_braintrend2_absolutelynolaglwma_x2macandle_mmrec.py","sha256":"254a2446dd6229f5a89d409a58f814b9a88b7fb67935465e13af6cc98dd7d28a"},{"path":"config.yaml","sha256":"6937057f6df912ced85dc6a79e860cf12ad9b9dcd89f2ef90073bc8cd44c298c"},{"path":"run.py","sha256":"628513a91297c0335720f5b11e98b691ec0c4bab2ee49620de9f6fbf43809148"}],"relative_path":"mean_reversion/0070_0241_exp_braintrend2_absolutelynolaglwma_x2macandle_mmrec","sha256":"f0d810416269fa6ca619c322cc1331b676f9ec8859a096d8a7a3716f81f56031"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0071_0242_autotrader_momentum","category":"mean_reversion","dependencies":[],"entry_hash":"6ca496dc6c9ceaefe78039d12eaf3aeaeb3a7d60ecfd9789af2746fafeaa8af6","functional_test":{"relative_path":"mean_reversion/test_0071_0242_autotrader_momentum.py","sha256":"25fe46a13d44656aad67578d8fe25de320f9f067d34c921b116be5021ccf51f3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0071_0242_autotrader_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_autotrader_momentum.py","sha256":"79261954442ab957759d4799397350b2e0662bd6613c3189980468ca63a898f0"},{"path":"config.yaml","sha256":"f5dedff954cc1c1e066ba4f1b04aa02608812bb74e265e4124b53cfe8ae5b986"},{"path":"run.py","sha256":"80714091e2fc79fb297351c8f17df2d29bcc59e7f8128ee5cd1c4829ec49fd88"}],"relative_path":"mean_reversion/0071_0242_autotrader_momentum","sha256":"060ea1c2e0d6138931b4907bfe2e760bf62b4ba40b4cd05f6eab8ddc493416cc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0072_0243_exp_i_anyrangecldtail_system_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"410e6f1d491c4c8b360ad312255f47646483c8a2c1f5d928f73d0c91c39ab5d5","functional_test":{"relative_path":"mean_reversion/test_0072_0243_exp_i_anyrangecldtail_system_tm_plus.py","sha256":"5e4d19f14a86f27e4005d092314fc57bfb8d851d1dd98cf03fe591f63687a46a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0072_0243_exp_i_anyrangecldtail_system_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_i_anyrangecldtail_system_tm_plus.py","sha256":"716272b3bc2f0a58ddc3fd84f2efa855db3c52acb0c6ae8e06d29464bdac2da0"},{"path":"config.yaml","sha256":"69e3c1e37b045d5cd956f8bf9684b16751fe1add481a5dc8bb7d18d67ecefe1b"},{"path":"run.py","sha256":"e7289e3f57181658ed5a629dcfba363d7ab12dba5fe73ce7434b9e38da8962b6"}],"relative_path":"mean_reversion/0072_0243_exp_i_anyrangecldtail_system_tm_plus","sha256":"e23520223ed97699fefd99d837a33184186a28f16428e346662c0a1ef7a55c1e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0073_0245_exp_iin_ma_signal","category":"mean_reversion","dependencies":[],"entry_hash":"0c6ac5edeb92e9e9c1036370c2422329b2a48def144cc53388d85a4a15a5f469","functional_test":{"relative_path":"mean_reversion/test_0073_0245_exp_iin_ma_signal.py","sha256":"26368aedfab9cd28c9a59e7f40b453856ade2b468698a66ba0a08aa462e06f99"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0073_0245_exp_iin_ma_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_iin_ma_signal.py","sha256":"843a52ba2f75d83cb6552de94271c91590644e4abf9351ed6f1619156f04e420"},{"path":"config.yaml","sha256":"19dc8cc73e96d6096941a7e5276ecab36159c69a95d2779e8a800b88d13074b0"},{"path":"run.py","sha256":"29df8edf4c8fc2ece2fa89554f9f23afe8ca649949f9ec26ec5d9d59472d4f9c"}],"relative_path":"mean_reversion/0073_0245_exp_iin_ma_signal","sha256":"e25051e0508de3f6b879e7cc8a32ef0db5306eb14846f37803c687e397523b26"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0074_0250_exp_xcci_histogram_vol","category":"mean_reversion","dependencies":[],"entry_hash":"8790dbc74db8f57fd26946227ec1d4c314df314cc4e35fcd0bc28f89fed32565","functional_test":{"relative_path":"mean_reversion/test_0074_0250_exp_xcci_histogram_vol.py","sha256":"2fb0b9b37401a5f6010dd1d4b869cada769b4bc19d9d8c72606e776b81a7cebc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0074_0250_exp_xcci_histogram_vol","source_available":false,"strategy_package":{"files":[{"path":"strategy_xcci_histogram_vol.py","sha256":"497eea322e36b5ce72a2e91117fea32c03dc19ecab5864a13643de3a135a0108"},{"path":"config.yaml","sha256":"423069fb8e548fb281e746996356b4bf7ee147df7c649849d849f1c2ccfa0888"},{"path":"run.py","sha256":"0c79eae713c9b4d57fbbf405071d6a8b15827f437dfbe1e7a0624690300664f4"}],"relative_path":"mean_reversion/0074_0250_exp_xcci_histogram_vol","sha256":"9d439207383f6dfac73f77bf03d046003409d6603543d1ac225ae08c710c210c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0075_0251_exp_xrsi_histogram_vol","category":"mean_reversion","dependencies":[],"entry_hash":"1ca6c7c12fabf87972aa3ff38af59f7bd0be2b6019c57d201599fa79254ae8c8","functional_test":{"relative_path":"mean_reversion/test_0075_0251_exp_xrsi_histogram_vol.py","sha256":"8b7750f268d800a1b4617f517396ab1c8298ce7d583517ffdbaf306c89310df8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0075_0251_exp_xrsi_histogram_vol","source_available":false,"strategy_package":{"files":[{"path":"strategy_xrsi_histogram_vol.py","sha256":"fe68d84c7e053eb5664663731ffd3d3ab72663bfa851e51738121403bbdd4423"},{"path":"config.yaml","sha256":"eb9eddba7e299558a90407a1418245487c499b432f614295dbc5895d88c2f8d8"},{"path":"run.py","sha256":"a06ceef74944f5f3f8cc70673aa59e1b0342d29e4c6e10765855de6dcc7829d6"}],"relative_path":"mean_reversion/0075_0251_exp_xrsi_histogram_vol","sha256":"39d5b38163ff54b55187685047378db1ce27b77f1c4763ba81383ec10abb1691"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0076_0253_vr_buch","category":"mean_reversion","dependencies":[],"entry_hash":"3aa4af412bea46cc7b11d7120a6973ba8c9dcc2ab02c6bd69098fe8709a78d5d","functional_test":{"relative_path":"mean_reversion/test_0076_0253_vr_buch.py","sha256":"4c991fb017bf3b56ee65cf95d076d9a9e432c8199eca6b53a00ed1d281393659"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0076_0253_vr_buch","source_available":false,"strategy_package":{"files":[{"path":"strategy_vr_buch.py","sha256":"005b801be868d27e7e4ddbdb59cfe19e9daef1c97462b7a03f7ff77d5d50943b"},{"path":"config.yaml","sha256":"5f09b5a6bd85a20e95ee596ec44bebef931bc142ed1a66f4a151a0b7229311ab"},{"path":"run.py","sha256":"c23d53fdb12193c31cf436f08a9b6b9cbd2b293fa86e7ac56fdd662b4b3b6ca8"}],"relative_path":"mean_reversion/0076_0253_vr_buch","sha256":"c2e65e29e4a7785773426e27d266d292af28ab24559c4cb435cd9fafc3be2f1e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0077_0254_exp_iin_ma_signal_mmrec","category":"mean_reversion","dependencies":[],"entry_hash":"d8266c6c9900a0ed1d6acbc031d243080b86e8534a978a836e79e772f65c551e","functional_test":{"relative_path":"mean_reversion/test_0077_0254_exp_iin_ma_signal_mmrec.py","sha256":"3c448db9393319443da011fd1bdcd75fb9c6ee39cbd6d421ae79d1cc06020cde"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0077_0254_exp_iin_ma_signal_mmrec","source_available":false,"strategy_package":{"files":[{"path":"strategy_iin_ma_signal_mmrec.py","sha256":"3b1007c2f4d17261bac8f2d42dc211fb5ed6356279e4e82b3ce23bfad466e651"},{"path":"config.yaml","sha256":"6cab0fada5fe3fceaabd652ee70451cb5d0767e498ad72caaff3afdb08013444"},{"path":"run.py","sha256":"903ba36b24573866a6cc284787376acedb9dcf6e0e99097b293fc1925856e01e"}],"relative_path":"mean_reversion/0077_0254_exp_iin_ma_signal_mmrec","sha256":"f667c648664f3a97b369972cb6520043555db0ed1cbf7f305f568ea9247dcbc8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0078_0256_basic_cci_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"ca211e4b87d3818104625e3c25f508f21c0e27b79afd4cfb1b1a947dc02c93ba","functional_test":{"relative_path":"mean_reversion/test_0078_0256_basic_cci_rsi.py","sha256":"82968dd6f5add62e26ee97682d78b9e6c7b3763af21e8df997b21a812a4c1928"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0078_0256_basic_cci_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_basic_cci_rsi.py","sha256":"d926a0299aa7cd170c751a92035f413f5f047371a7d5869b2ce1501a6f7a7018"},{"path":"config.yaml","sha256":"0b82291130b785e55ceae2a1d58b5ebef0f38f1d558e04d9f7bff4e69307f689"},{"path":"run.py","sha256":"c1ab7a537d0018770ade5dd1c50a425e8fc41e5ba4cbab1313c9ca8e097fcfc0"}],"relative_path":"mean_reversion/0078_0256_basic_cci_rsi","sha256":"1dd6d58242e8216a122bce14e8f937ddf527cf605e40b73848c48e19d44e29d5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0079_0257_exp_xrsi_histogram_vol_direct","category":"mean_reversion","dependencies":[],"entry_hash":"28f5acc117cf46c977f942ff7f457297074e930970c9c71a04fb4bfc6e41dc53","functional_test":{"relative_path":"mean_reversion/test_0079_0257_exp_xrsi_histogram_vol_direct.py","sha256":"525037521fa2b9f8c328d886dee957650501b0eaa603d4b84b21cff07136b5fb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0079_0257_exp_xrsi_histogram_vol_direct","source_available":false,"strategy_package":{"files":[{"path":"strategy_xrsi_histogram_vol_direct.py","sha256":"7a2971c6f2f6f3dafae828af11b3b9b80cfcef12d03d61e76ba6348c58b2f3db"},{"path":"config.yaml","sha256":"5d7a7509ffbd60ccf355f0a9c5d6d2c2bf261227d3ac3fd464411f0bd6f23b95"},{"path":"run.py","sha256":"65bbf7930f3f85bccfb2c571b2c19609d4b3a3e54dbcfa93225937a9ef54ae1f"}],"relative_path":"mean_reversion/0079_0257_exp_xrsi_histogram_vol_direct","sha256":"8a2976a442860697cd100307ba239b13487b1311b9be58255e036cfd0abebd1c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0080_0258_exp_xcci_histogram_vol_direct","category":"mean_reversion","dependencies":[],"entry_hash":"1bbdfab14e474ac2e583dd155a848b4b4a65a237d064dde0084e53c5e238302b","functional_test":{"relative_path":"mean_reversion/test_0080_0258_exp_xcci_histogram_vol_direct.py","sha256":"4aa116e37439ff85e94752ea481359140ed194600424b90c446f33fe6d77fb3e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0080_0258_exp_xcci_histogram_vol_direct","source_available":false,"strategy_package":{"files":[{"path":"strategy_xcci_histogram_vol_direct.py","sha256":"9b22735d58355cd2d5571e817b94cff6f24ac86db23a03b40ca1998e5f50b0af"},{"path":"config.yaml","sha256":"8ccd01494034b2a9a5e7725899c35c046f2fb807b88fce8c6211d7fab2751138"},{"path":"run.py","sha256":"b581461ad72bc9237b3429d07913041bda88214cd0808d812f75b00cc78832f9"}],"relative_path":"mean_reversion/0080_0258_exp_xcci_histogram_vol_direct","sha256":"0f74be1e88e361f3f1c4e88e2fb4ce7d99d6e187bf8f1cbec59d7ed8dc57a2bd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0081_0260_exp_trendmanager_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"72ec8b0ee91ed5d67cd28b87694c5c75d9cbb1466ea514dbb2834455aec13f25","functional_test":{"relative_path":"mean_reversion/test_0081_0260_exp_trendmanager_tm_plus.py","sha256":"8c15367e6f95bdc28da3b42ab0ae405c94d976ccae08c338907da054eafc75c0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0081_0260_exp_trendmanager_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_trendmanager_tm_plus.py","sha256":"b6f85fee6d7c4abfc0dd4acb7c33fb8c6009a6ab988a9b778b35dc00de2c435c"},{"path":"config.yaml","sha256":"d8e424e0328475f42011388b054f0ca1b444a09fbadccbef2c25adfe333d7f4c"},{"path":"run.py","sha256":"43a24ae8f04bc700fa3244fc35fabdd9205b153c097015598da3dfb52f72eae7"}],"relative_path":"mean_reversion/0081_0260_exp_trendmanager_tm_plus","sha256":"06f7b79fbcf0a4c49e56984ef09cb6b6cc8ead3598b098ff278991cc7456d307"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0082_0262_breadandbutter2","category":"mean_reversion","dependencies":[],"entry_hash":"eebe5ed3ca090d673609c15974581253ad9b8d5a27b6c6a1206691c191e1d6e9","functional_test":{"relative_path":"mean_reversion/test_0082_0262_breadandbutter2.py","sha256":"90ec96ce3a65263e6e45543f46faf1b959c9e7be77c6ae5c59611d9967544342"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0082_0262_breadandbutter2","source_available":false,"strategy_package":{"files":[{"path":"strategy_breadandbutter2.py","sha256":"378b09f2d3277e34db8b9feb30b50938367d77c903ecd96e49942084fa9ca0e0"},{"path":"config.yaml","sha256":"60fbac70ac41588c809cc7bdb6cb017095edc27717af6185584cdd13e81a1384"},{"path":"run.py","sha256":"5923ff9823aed0ac0b14053e56da11d67566b5fb176c7b186209b7affcb31a70"}],"relative_path":"mean_reversion/0082_0262_breadandbutter2","sha256":"13b168ab74b198ce3cf5d5fa200cbe3578703eebb84c3ddd56dd08092367edda"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0083_0265_daydream","category":"mean_reversion","dependencies":[],"entry_hash":"3d6d2f91b02f4450c64bd5c0069924b1aab718c450fdbab0e9e3691ad02a49c9","functional_test":{"relative_path":"mean_reversion/test_0083_0265_daydream.py","sha256":"d87cd9168c72a0bc46bb23c6f885cf9d5770c0121412a37e9da1f07b0c404368"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0083_0265_daydream","source_available":false,"strategy_package":{"files":[{"path":"strategy_daydream.py","sha256":"031437f1f579dec69348b6dfd87686c7e37b95e5439fd3c9756682f9caa193c9"},{"path":"config.yaml","sha256":"8aac8e5deff4df359ae11181f429ee98a936bc3a2274df8a524b93c904e6266c"},{"path":"run.py","sha256":"a9701afb58d7bf953db8fdc7d9701a77a394976163ca5486bb03d563461048e4"}],"relative_path":"mean_reversion/0083_0265_daydream","sha256":"f2081b81d6fe8dd7dbc0855b5307b414381099c0ffa166675e5038b5b698ef64"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0084_0266_js_ma_sar_trades","category":"mean_reversion","dependencies":[],"entry_hash":"e0c41c2c3e1940517d9a9a6429175426fbd590dde59c670605e16ac0751acb0f","functional_test":{"relative_path":"mean_reversion/test_0084_0266_js_ma_sar_trades.py","sha256":"2e2d2de26548d6fcb979ee1027c5608b4cbcac006e4ec18bb40762e34d28fe33"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0084_0266_js_ma_sar_trades","source_available":false,"strategy_package":{"files":[{"path":"strategy_js_ma_sar_trades.py","sha256":"70a44213c01d189ab144c1c2e4a0799245e79f595b48a1e0893167af5b5d2521"},{"path":"config.yaml","sha256":"9d773f72c051382ff14ee84af1f283df46204079094e93e54241f385333d4f6a"},{"path":"run.py","sha256":"8c5c02b66e05381d3f3a3a8d59b6c4390813c0d81227e3f4dce90b58047523cb"}],"relative_path":"mean_reversion/0084_0266_js_ma_sar_trades","sha256":"59ecf29b7a27cb7a4d78d9bc55a7546aaa3a18d1805fc58142d912c806715a65"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0085_0267_ft_cci","category":"mean_reversion","dependencies":[],"entry_hash":"58ad3e2b8f89428d3b91d8522ae19693def1b4a9dc7118f765db4d25367001a2","functional_test":{"relative_path":"mean_reversion/test_0085_0267_ft_cci.py","sha256":"c9a8b3aaf41f69bf176490f21d042510090b7166c6610be7e14abb4ec8a22857"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0085_0267_ft_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_ft_cci.py","sha256":"f016462cdf11c7d1ffb6b9a46b4e418f219021eb4a56f0f1eb696321c9c37d70"},{"path":"config.yaml","sha256":"9944654001e9a59c6dfa1f48b4a8ed13622cb7e1013f22995d6d8d9e58d87cff"},{"path":"run.py","sha256":"0821b509e48a3dd698d8815e32c8e5dd200bdc6803ee04b421c01115a7514819"}],"relative_path":"mean_reversion/0085_0267_ft_cci","sha256":"f3d7a626887ef8472526caef292b8f28d8ac767030dfd16fb288e7f18ab76179"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0086_0268_ascv","category":"mean_reversion","dependencies":[],"entry_hash":"33eaeb1f5d24273c46eef7397aa3e7571132324c67e2752b9c820c230bd78c73","functional_test":{"relative_path":"mean_reversion/test_0086_0268_ascv.py","sha256":"ea8977a21f3398ef1912c08a919c5d9d34bd3cb8728005b5b6e9c234e231846d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0086_0268_ascv","source_available":false,"strategy_package":{"files":[{"path":"strategy_ascv.py","sha256":"d369cdd5fc31f9a61bad1858a30835454a163e658f55c5321bb590adb55ce608"},{"path":"config.yaml","sha256":"79820511e045db1c12fd94488d561a216a9e46f04175a42b0ef8ccb0c9292e8f"},{"path":"run.py","sha256":"ba86b6ba504488a6880790417dda62d8bf9b29c756eb04be57b7fee1a9762b40"}],"relative_path":"mean_reversion/0086_0268_ascv","sha256":"d6c81466fa18a599e5080fc2825ff5f946be15e90a74d7962247dde60a0cff0b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0087_0271_sensitive","category":"mean_reversion","dependencies":[],"entry_hash":"7836b7d2e139cded90ff8c128c24b8368ab7397ab70ae25f04d038d0cfcc67b5","functional_test":{"relative_path":"mean_reversion/test_0087_0271_sensitive.py","sha256":"4fddfbbcca3acfc7a34e739ee87d4fe29ac9472a075efdfcfa0802d2f9cd1888"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0087_0271_sensitive","source_available":false,"strategy_package":{"files":[{"path":"strategy_sensitive.py","sha256":"85b34ffe9b7f211e582e507caa199032193b9deaa04be17ceec714171c55aa65"},{"path":"config.yaml","sha256":"4bd7799f918bc9041e2d52c551866941a5ffa64597d64ff6933d246e15934f47"},{"path":"run.py","sha256":"3e811a9865b27517ea3219abc893beffd4f4fe881ec438957c48f6125c310130"}],"relative_path":"mean_reversion/0087_0271_sensitive","sha256":"3f326b3ef5da88b5d8402543f515ee1073e748b417da634cbdb6857a720e0323"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0088_0273_1h_eur_usd","category":"mean_reversion","dependencies":[],"entry_hash":"897227e50cbd900bed0057d0b25a0fe8079151044f7528dec187724d94c347cb","functional_test":{"relative_path":"mean_reversion/test_0088_0273_1h_eur_usd.py","sha256":"87a22309221faf09d752ebec4b0a8f168fe5488c00b49028e8fd7024c47936f2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0088_0273_1h_eur_usd","source_available":false,"strategy_package":{"files":[{"path":"strategy_1h_eur_usd.py","sha256":"b2b861defa0eb27355dcd2ed282d2d6f9321d6c2374cf1e959a5b24e41f5535e"},{"path":"config.yaml","sha256":"033d1b0714fbf4d060422f1e7cdfab6c775032653aea8c9110c91b36878a187a"},{"path":"run.py","sha256":"8ba76042d39fdecc85999aace374a12d1c5b80b169a375b9f6958236cf01585d"}],"relative_path":"mean_reversion/0088_0273_1h_eur_usd","sha256":"3dc3dd80fc07dd4c93c01d2c9187f9dd76df3085f6243a49767aa2eb49befa03"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0089_0277_ohlc_check","category":"mean_reversion","dependencies":[],"entry_hash":"c796fbe8bf0dbd211c72dad2c93b07012e939f596b113a8e7400c816717ce5f1","functional_test":{"relative_path":"mean_reversion/test_0089_0277_ohlc_check.py","sha256":"516ab6af46716174d0f59ed23fe88714eee54d6dce00956acbf0bb87f4d784d3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0089_0277_ohlc_check","source_available":false,"strategy_package":{"files":[{"path":"strategy_ohlc_check.py","sha256":"7cf562fc2a598de937509ba52f3752414ff82e3785aeec886a67ecb4c3ae0888"},{"path":"config.yaml","sha256":"89acf08420c30af0bc2c0e8ba2ab0f86d6a7c054bb50aa1bb52b9f36585085b6"},{"path":"run.py","sha256":"e1e07d0e55c7b578a7f166819492c9d4d4ca0edb2f4d09a72dc5da400acc16e1"}],"relative_path":"mean_reversion/0089_0277_ohlc_check","sha256":"c012cf6fc5e258ff730cae7cc385965804e74f2fe7e045a5899bee8f552a1043"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0090_0279_russian20_hp1","category":"mean_reversion","dependencies":[],"entry_hash":"8135705d0dd6aef27e5cabca1db46b6486ad490143b856b7195e0e83e43e316f","functional_test":{"relative_path":"mean_reversion/test_0090_0279_russian20_hp1.py","sha256":"60e8c217af77fb4c3e9fd77675a8379cd7a2c00a2e9106659b191f564d75b4c4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0090_0279_russian20_hp1","source_available":false,"strategy_package":{"files":[{"path":"strategy_russian20_hp1.py","sha256":"e2d7ac2dcd294992e4cd93e0e7423e406798cf4b53fede33a7ecc8f260146c53"},{"path":"config.yaml","sha256":"4c6e60e223262e17d7aba5f308dd826c2c40921ea180c468454a91f78f11f38f"},{"path":"run.py","sha256":"245b55ccb2496253105ff56a11fd024e3c04e81c1bb170baa5e147034d340aec"}],"relative_path":"mean_reversion/0090_0279_russian20_hp1","sha256":"6971d9627d2961ee2947e65b1e573654e6cd82f473f7870ee4865a6e9263ea4c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0091_0280_exp_trading_channel_index","category":"mean_reversion","dependencies":[],"entry_hash":"55c067460f51ca01a5815248ac84ade0596816b92cce4024ad4cab8194adb4c9","functional_test":{"relative_path":"mean_reversion/test_0091_0280_exp_trading_channel_index.py","sha256":"3d50a4aea3012fcb89cfd4800f9a0b25b039d8b49c82558c7e8a1d276ce73b9f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0091_0280_exp_trading_channel_index","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_trading_channel_index.py","sha256":"ec1480ecafdb174ed4b7361656f771704408c31b640e2e6bb61549909e3e9fff"},{"path":"config.yaml","sha256":"334745aea863717a97203c6a27907e5baa95c1658a3fcce8d681587e40af83e0"},{"path":"run.py","sha256":"b53524b303d4c9fd30254033cbbde764db5be5dc4f4c4701e2185e7a2b347450"}],"relative_path":"mean_reversion/0091_0280_exp_trading_channel_index","sha256":"fa90fc740ce466f430c80b85d4010b003995d90c08c893e61e080a4e36d6e283"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0092_0281_exp_trend_intensity_index","category":"mean_reversion","dependencies":[],"entry_hash":"70bea761c2e1bbae1366421ebbcd8fd575206ebb26b981df96d24b3f8a2416ed","functional_test":{"relative_path":"mean_reversion/test_0092_0281_exp_trend_intensity_index.py","sha256":"d394142d610347f047b0dbe138085e10c3fd8f50bbb4923e68d74756980d0020"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0092_0281_exp_trend_intensity_index","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_trend_intensity_index.py","sha256":"b0d0fed429c51daad99ec4894c4daf2857a43eba1342174e411d4b0964ade5cb"},{"path":"config.yaml","sha256":"6ba5db01f864d627d6e8997ba5d1bece135a64cfefdb6ecf6c59c2d179ac1f8c"},{"path":"run.py","sha256":"7a5e1a497184f032fd05716a44ca931801a4ca216866e80ddc692a141c62003c"}],"relative_path":"mean_reversion/0092_0281_exp_trend_intensity_index","sha256":"704515619dbe223cd13ccf8a61b531e8ad984c08be5dde93660225d11e71af5c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0093_0284_nextbar","category":"mean_reversion","dependencies":[],"entry_hash":"f58f8a4f0e5078523b59946b130be9e9b9e92e1d514e0c0afa2820e23cefa9c3","functional_test":{"relative_path":"mean_reversion/test_0093_0284_nextbar.py","sha256":"904e3a21062cc0be87d8f926d1fe4ec8b958e3bec29053bd096347b8f3ec8032"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0093_0284_nextbar","source_available":false,"strategy_package":{"files":[{"path":"strategy_nextbar.py","sha256":"41b3a0296615d6ee09468af3ef221c481bd0bb7146472cfc21d228acab49342b"},{"path":"config.yaml","sha256":"c915224703506ed344aeb7be5dea05869a4b388da1beb885dcffebd939050ec3"},{"path":"run.py","sha256":"aa7e309a41d00697a511eaa5629217518ecc15c4a6afe1b64210ba9df0448e85"}],"relative_path":"mean_reversion/0093_0284_nextbar","sha256":"b1e6bb13da59c9669e0080a6676fcb9cc36603a4af941fd18574525ee5c81a72"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0094_0287_55_ma","category":"mean_reversion","dependencies":[],"entry_hash":"fd93bef9e02319777eb20365d13c21a324dcd62553a203a97b325c4fe34ebfc7","functional_test":{"relative_path":"mean_reversion/test_0094_0287_55_ma.py","sha256":"927b3dcc99e88dc416a75e2ebed230fe2e941599fe014efabf6da5c979b7ce87"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0094_0287_55_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_55_ma.py","sha256":"bc66090e0efabed3ca48de6cd085b4d5c93781556a194399d46eddbdc09cb60b"},{"path":"config.yaml","sha256":"4f66ee7c6a220da85ea37ec5ad1e092c1b828ccfb1e70be152a6ab31842f40e7"},{"path":"run.py","sha256":"721713dcb3907cceb8ab94a530ab948595a5efda6c5308980280256518a306e2"}],"relative_path":"mean_reversion/0094_0287_55_ma","sha256":"eea77b663c63d404a2b94cd6006ddebf79f84aadfc0dc9130573db3fef1da8f2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0095_0288_above_below_ma","category":"mean_reversion","dependencies":[],"entry_hash":"e931dcdc2c33153c443d7f017d3142a2ae7939d71f18d42846fc8efed48ad575","functional_test":{"relative_path":"mean_reversion/test_0095_0288_above_below_ma.py","sha256":"5165d03d15f7936375faa47b6df658328a0a1aff80e6e1bbc9da302bac6d06d8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0095_0288_above_below_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_above_below_ma.py","sha256":"5a004e8ed14aa9e86d4366161d86510bbfa3fc244279f506a51fc6f3e7368906"},{"path":"config.yaml","sha256":"f170860e11322ac378595b1661a4c23107c627457c367601470fc68693ec7d27"},{"path":"run.py","sha256":"35c07123d51beb278315b60c6e398f1ec8ae6832dfefa019beea370b6695331c"}],"relative_path":"mean_reversion/0095_0288_above_below_ma","sha256":"7027e22b20027b31a52260c4fa8905d7d5d12812ef9aa5f4a800142cb8076804"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0096_0291_forex_fraus_m1","category":"mean_reversion","dependencies":[],"entry_hash":"f5369439a8e458a6cf74b5a1adf6dc1612d1da0f6fc60c67dd846a56262ad50a","functional_test":{"relative_path":"mean_reversion/test_0096_0291_forex_fraus_m1.py","sha256":"5d3d9621e069651118e099732051b2248babbc53b6afb1abc4efa16bb96d53b6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0096_0291_forex_fraus_m1","source_available":false,"strategy_package":{"files":[{"path":"strategy_forex_fraus_m1.py","sha256":"4e660a3112766e99ed1f71eca301895837411ebfd73f4c36085b73baf9bcffb2"},{"path":"config.yaml","sha256":"9482f99919f3990da0d4d70066a26fcaa19b53ed3494ce98a5405cf6aa1bdf29"},{"path":"run.py","sha256":"0abc2f4344ff6e27ae8cc6abdac620388d2433751d82a9e0cc90567ab040e0d3"}],"relative_path":"mean_reversion/0096_0291_forex_fraus_m1","sha256":"96fc2b0f9cb91c9a10f1098c4669448e2c9679d0b501fe9de734fc8715b0272a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0097_0293_gbp9am","category":"mean_reversion","dependencies":[],"entry_hash":"640a2fbaa14ed0822ad6d41ef2eebd20be3440c7ccfaed045d2f6e269e47cde4","functional_test":{"relative_path":"mean_reversion/test_0097_0293_gbp9am.py","sha256":"4189ed560ced8412221686086949ed4f2f3c8600a3f7d0765f0917436f7e3650"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0097_0293_gbp9am","source_available":false,"strategy_package":{"files":[{"path":"strategy_gbp9am.py","sha256":"7d9d8afe131dbb95c0a31be27ed3214751c745a10ca105742de5a34fae8f0d36"},{"path":"config.yaml","sha256":"05fd173ae503449322af729e2398b7c169a73ef5472250ff55dbf40571f5cda6"},{"path":"run.py","sha256":"2006296da8a2bbca7b21b95a1513b38b63695f8516129e6251c6b58d0c8ac988"}],"relative_path":"mean_reversion/0097_0293_gbp9am","sha256":"866f68bb454414f296fea2a46fc44034ea0b9cff220a50a0a90f2a6d33b7254b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0098_0294_exp_dema_range_channel_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"31b0279c45ffa8c0c4c0de5aadfa659df6b2e003b78c079ff8bac44f5ce8e19f","functional_test":{"relative_path":"mean_reversion/test_0098_0294_exp_dema_range_channel_tm_plus.py","sha256":"d79ff55e1cd968e93003a6291d1db310f80ac76dd749bcba557a786547b1957d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0098_0294_exp_dema_range_channel_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_dema_range_channel_tm_plus.py","sha256":"0f173b3f6a9831f9d70765342bcf8023ad870cc7c88eb469a078b1d083097349"},{"path":"config.yaml","sha256":"b0bb0e160d720b272801754c0abc17864a478ac37094732e77bff1a54edccbb9"},{"path":"run.py","sha256":"0193944273ec32a477c25265e1f9341c9c7cd1c1ed2541274b0a52b7d863f759"}],"relative_path":"mean_reversion/0098_0294_exp_dema_range_channel_tm_plus","sha256":"f7106f6b66e1fde8639df517a4ed9d95c76014f060df435be4f3e374ca88e4b6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"4b2ec13500c4342bfb070627662b6f751331e803f7f23e47a5f2676aee0281ea","functional_test":{"relative_path":"mean_reversion/test_0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus.py","sha256":"f5de6951b5ab4d844f0bb53a2a478e63a99ca1be464e37f8cf60a230cc6209c3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_rj_slidingrangerj_digit_system_tm_plus.py","sha256":"059fcafbbc90c8fcd9ab1182f6433676c41afebc71bb8d98c16d7344555d0075"},{"path":"config.yaml","sha256":"f4aab47be200b1742ebafb706879638d2869dbdd345f8ba6af66e821280f2389"},{"path":"run.py","sha256":"85b07d7011de1b769f7c611c7747a1c588b557b524934b50a49760aa1b55fa18"}],"relative_path":"mean_reversion/0099_0295_exp_rj_slidingrangerj_digit_system_tm_plus","sha256":"04a3bf85d6d4dbdc63d0ce2546dfa60c38925358f88e80d47e02a580fec7ae2f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0100_0296_exp_candlestop_system_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"fb2ccb5e16473d9378db91b3b04b84eaa3cbe720ca4447961a43de52f8bd9fd9","functional_test":{"relative_path":"mean_reversion/test_0100_0296_exp_candlestop_system_tm_plus.py","sha256":"3e9e4cc42b54f560bb6d24d510d641a69e8ed60fc96baa7a5ea859630e2cb1ca"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0100_0296_exp_candlestop_system_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_candlestop_system_tm_plus.py","sha256":"3b8b43c3c90efc5c31791563c2b0e3a0ce6f20404dd2089941daeb83f15e229d"},{"path":"config.yaml","sha256":"21b2ee4c2a320811bcfa60110a2a58ff71fedbbf0ebc2b4720067d892f5b5cda"},{"path":"run.py","sha256":"bd78cf234f57cfc3b6950c5ce837c2f0ba859bc24147bba5411bac136499e59a"}],"relative_path":"mean_reversion/0100_0296_exp_candlestop_system_tm_plus","sha256":"d5167fea934ca46cae393ba831a5b7f3f853f741eb0aa33deabe3aad5ccb815a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"11b88df68897b15e11a336437fa8dcb8d7a3a565aa094900440f4dd5b55aecc3","functional_test":{"relative_path":"mean_reversion/test_0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus.py","sha256":"02f22bae6af5e52f42e4cdf03bbdebd2016f1e6d83f4d229982cb5680446567f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_absolutelynolaglwma_range_channel_tm_plus.py","sha256":"f3be3b924230b65051c2a312e13b569edaab9e28c2febeced91670301ce14d0a"},{"path":"config.yaml","sha256":"81ce829c615e38a23f3e2c3f29166058279d8c7df3111bbda49d17a91e424723"},{"path":"run.py","sha256":"a9c4ca1bfe4fddd2e6eb35e384f73e61a8f4e482984880394c3d14512b886a6b"}],"relative_path":"mean_reversion/0101_0297_exp_absolutelynolaglwma_range_channel_tm_plus","sha256":"aee45145bc1cd3f59a8224b46026f8435f76ab2a0e322872d2c6bb9cbaf963ce"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0102_0298_exp_xperiodcandlesystem_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"02e058f5032f658239094a936bde5e49dd3dd027689e1a0cbb8fb2c916a391da","functional_test":{"relative_path":"mean_reversion/test_0102_0298_exp_xperiodcandlesystem_tm_plus.py","sha256":"d7d79784c3d078db93b79b00810f440b31fdb679bc449dedc85f32e982d61e5e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0102_0298_exp_xperiodcandlesystem_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_xperiodcandlesystem_tm_plus.py","sha256":"663cc3b8fa393709b0fae319b3ffdb2bff31de004cb0622fc619c577ade30338"},{"path":"config.yaml","sha256":"9ba8cdf1cef4cb1887e182c0786e865c651a95145bcb76cc2ced78ec25b939d5"},{"path":"run.py","sha256":"813e648ca435de5040e216a51de4b21d7defecbca095e8cbe78cd854b6bfb899"}],"relative_path":"mean_reversion/0102_0298_exp_xperiodcandlesystem_tm_plus","sha256":"f65e6bed98d51e253bd51f7e408fdfb649df47a5636c386ea7634b7b6654d2c0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0103_0301_cci_and_martin","category":"mean_reversion","dependencies":[],"entry_hash":"4e89ca2d64340a5f809c1913cbc1cb7fb461a67152a47e17b3603eb3d2c9538e","functional_test":{"relative_path":"mean_reversion/test_0103_0301_cci_and_martin.py","sha256":"0998d228d1de2471361b65a41a63d2f2b0e2d37a6a76bd8d761f974eb0218f84"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0103_0301_cci_and_martin","source_available":false,"strategy_package":{"files":[{"path":"strategy_cci_martin.py","sha256":"03e8587d1d9b3d144a05bfca0b85116a693253f7c58cf250189486c2973360dd"},{"path":"config.yaml","sha256":"f5b1583a0032f617e7b804c8ec5bc3b3e34078449d7cf2e6f31edaf8c6541885"},{"path":"run.py","sha256":"8aeb81988bc32a4bba9dd554375a58744a58a0d1ba0fcd998345de8c740ca63f"}],"relative_path":"mean_reversion/0103_0301_cci_and_martin","sha256":"56758b6caf2f0082e7a3da24fef22d6c7933cfdc148025e9076b95d3b7e3d10b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0104_0302_one_ma_ea","category":"mean_reversion","dependencies":[],"entry_hash":"eee8dec1239d755e10c6e19bde797fcf5b16ebae12ca1cf630a46daf4961f9fa","functional_test":{"relative_path":"mean_reversion/test_0104_0302_one_ma_ea.py","sha256":"c4d942f519789692a05aa88ab500b2d789288649b36c4653302f209ecbf90bd7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0104_0302_one_ma_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_one_ma_ea.py","sha256":"c56e442599409550a86d534ddcd299fd1835bd817ce8887a31d7e854d6b1808a"},{"path":"config.yaml","sha256":"9d5321b7aafaf921495404ff71cfd599a1fb0543744b25cd9a891f478a71dfb3"},{"path":"run.py","sha256":"6d163816fede6ba88a9671ae6b0c6114e746c94037db7c8fe953f0b3a5665b0a"}],"relative_path":"mean_reversion/0104_0302_one_ma_ea","sha256":"07ab45934c48732db764c7ea5de6247db1aa02c008222e9b24908bce8c50c33c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0105_0320_gaps","category":"mean_reversion","dependencies":[],"entry_hash":"71661bd3fd1993c8ebef2fa078da5e425f4cbe20ebf71d0845a70a21852a347a","functional_test":{"relative_path":"mean_reversion/test_0105_0320_gaps.py","sha256":"f0a8dcea7b8698166368b328593061025362dd1221fbaa20804ca152c6776a93"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0105_0320_gaps","source_available":false,"strategy_package":{"files":[{"path":"strategy_gaps.py","sha256":"368ec55e3f451b0460906ed529a8bf65d8a0b2a69187f5f3a1d9f9914041cf24"},{"path":"config.yaml","sha256":"038e6ec67d8d47cd7f104223651e66ccd06c7c4659b923ebfd05a2dff48d13c4"},{"path":"run.py","sha256":"bcda9e9fb45c7f0dd8e6e40f314bcb0b1848e7a5ad15851ae51ccca9eacf008b"}],"relative_path":"mean_reversion/0105_0320_gaps","sha256":"160c0e65e506a3e6a636b35100bd348050860fe1bdd9ee41d15177602aa5c5ab"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0106_0327_cloud_trade_2","category":"mean_reversion","dependencies":[],"entry_hash":"c6762374d0e07d7be7ae6a334ed322c6a7dcd8cec4b96d545b7fb2767ad49c79","functional_test":{"relative_path":"mean_reversion/test_0106_0327_cloud_trade_2.py","sha256":"7d58a3779a33d909c0fb78de581f383bac28afb1ce772eafca5e868fcba32479"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0106_0327_cloud_trade_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_cloud_trade_2.py","sha256":"c7adf08ccd27c993396400b311661a7cc22ac681ad7e61c98bb9c114a162c3d9"},{"path":"config.yaml","sha256":"3c7a6e710e38160d60cccef18c6cdcd05dda8467d018936e6a8035bf04e7baab"},{"path":"run.py","sha256":"8d529173116d5f75e97620ca87c90317b6d21e5213e7c7f7ca0cd2c2751ee393"}],"relative_path":"mean_reversion/0106_0327_cloud_trade_2","sha256":"06cac6140e4d45e8a975b0559e6d88dfcfd671796878aa1961ee76c81eed1475"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0107_0334_auto_adx","category":"mean_reversion","dependencies":[],"entry_hash":"0243bb54ad9492bbf13d8d891f6e63c1f20eaad5edf8b0060ba54dae8a0c3c5b","functional_test":{"relative_path":"mean_reversion/test_0107_0334_auto_adx.py","sha256":"a0a96912c2feccc4cd63c577b921688269a3fd3c1cb6118588833c361226bb24"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0107_0334_auto_adx","source_available":false,"strategy_package":{"files":[{"path":"strategy_auto_adx.py","sha256":"7672466299b8ae63345ddb2456d3a4f8fd7ae06268e09b42e4927ac334cc1ad2"},{"path":"config.yaml","sha256":"4bc08681d713c267eaa76a61c56348b44d8e81d4c8e10796f7fd7f192e8827db"},{"path":"run.py","sha256":"19461d8d3680c62e1df9207b8cb541c0182542702fc063ca6212aea4b2071cd8"}],"relative_path":"mean_reversion/0107_0334_auto_adx","sha256":"eb73c394d171827c4ec4a831608bccd70cb30e8cdbc04455018998e9580f1150"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0108_0345_exp_caudatexperiodcandle_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"1a0699f41d0f999b070b08ccffb9b5ad5ef7ba3b9e2df39733f8afc13b623cf4","functional_test":{"relative_path":"mean_reversion/test_0108_0345_exp_caudatexperiodcandle_tm_plus.py","sha256":"099a500be5020b7fdf9b3dcb0cfec39d8a04d5826681366bb47ab82e11184751"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0108_0345_exp_caudatexperiodcandle_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_caudatexperiodcandle_tm_plus.py","sha256":"46a7726a760616174116447d24b88ccc1e08b0543c0d3516d35c8bf1941d75b9"},{"path":"config.yaml","sha256":"59ce23a27cd2c967f26a5d2ffc36a05f39d4ebcb4cb052fc1fba7cd8ab22b2b7"},{"path":"run.py","sha256":"49bd0fc1a591935990d6aea557aa84809e80923391836025fb403e52388b8fe8"}],"relative_path":"mean_reversion/0108_0345_exp_caudatexperiodcandle_tm_plus","sha256":"d0dc138ec31222c2a89e19baea64fb61a18d924baf7e0b8bfb9d03d6fd8f5613"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0109_0346_exp_wami_cloud_x2","category":"mean_reversion","dependencies":[],"entry_hash":"d297d6870ed7bfc10736186705974acf351387b1f45fba8ab5388f117c059f85","functional_test":{"relative_path":"mean_reversion/test_0109_0346_exp_wami_cloud_x2.py","sha256":"f966b5a62567033ea808cb56cb94aa07985c19ffc9bf0d72e7293c1cc5281e30"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0109_0346_exp_wami_cloud_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_wami_cloud_x2.py","sha256":"43973ae20a20aaaf0920f2da2e87a143be4d5c4bfe5a0fb2dd25307fa090cf14"},{"path":"config.yaml","sha256":"b38485af6cd9d21bceacc6d983b0a8063876cb9e02875c62a4b8f400442daf2e"},{"path":"run.py","sha256":"a3487872b6de8120abcfa287ba12e66deec60c03930e4512c7be57394953f890"}],"relative_path":"mean_reversion/0109_0346_exp_wami_cloud_x2","sha256":"1ceac54f5c73fffee4fae099bb0ec79efc71c26690270be959cb0480967e7cd1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0110_0348_exp_colorxderivative","category":"mean_reversion","dependencies":[],"entry_hash":"6bdf5221d4c7adf3d23343ec110592485538266e094aa9e2c10e111afecbbd26","functional_test":{"relative_path":"mean_reversion/test_0110_0348_exp_colorxderivative.py","sha256":"7d20c090b66dbcb737b61557d5010e1d795e8ec02be555ff379fe7aa8840606a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0110_0348_exp_colorxderivative","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_colorxderivative.py","sha256":"6441b5bcd77d48bb7724c4431e7109f6d009767618e96c8c5a81e1dac15fb6a9"},{"path":"config.yaml","sha256":"34c446a4132cdd781e4002958d2af53401c2f68d13a8e09d25bf7ef6482b74a6"},{"path":"run.py","sha256":"8425663c0c6389a3116d386b16ab3adb9aef5ee25441acd83066f8ee0a460439"}],"relative_path":"mean_reversion/0110_0348_exp_colorxderivative","sha256":"e5042467b47bd7316165397774b3bba8982529f1817f59734ed522865c98941c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0111_0350_exp_ultraabsolutelynolaglwma","category":"mean_reversion","dependencies":[],"entry_hash":"81713da0feb661f0c239d4c7e0bd425fee3a5d4d574b6aa53002bf7b32d67604","functional_test":{"relative_path":"mean_reversion/test_0111_0350_exp_ultraabsolutelynolaglwma.py","sha256":"ef4c8e5cc9e7b8c5d039f46712fb954ae0168b8f248298b849751dafb657aadc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0111_0350_exp_ultraabsolutelynolaglwma","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_ultraabsolutelynolaglwma.py","sha256":"86a4ce0188df6253e87aca9e643ce0ee5cda39404579b09a8de2b63970d408a4"},{"path":"config.yaml","sha256":"bf2619209250f02c313cc6e7e63030f2d65607f0279ce56b5484e041b05c1098"},{"path":"run.py","sha256":"b1574f344088dec14a51d4d7d08811fe3174205110e3938b462b032eb5e89485"}],"relative_path":"mean_reversion/0111_0350_exp_ultraabsolutelynolaglwma","sha256":"b5e51dfdf46e0a4f0e7f5cd1d8fbe5a4d2369cd9736d2a43e6af883d48e12537"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0112_0352_exp_blautvi_tm","category":"mean_reversion","dependencies":[],"entry_hash":"cab7c38ead1f8962b4ffa055774e1c81c01f3a1182dda6931f9bfc9fc70b2a7e","functional_test":{"relative_path":"mean_reversion/test_0112_0352_exp_blautvi_tm.py","sha256":"d88375844cd12e29f90dc250d54e3a7b77621e15cf7b3c360d32475016353dd3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0112_0352_exp_blautvi_tm","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_blautvi_tm.py","sha256":"7eeb04f2c13f61183c24fbf2d7f11270b3bcf4dc5a13983b8444638eb9462f58"},{"path":"config.yaml","sha256":"36fa162d35673d0116bc2b8702e4df9aec40876cdb5ed082ead52e4adfeaec62"},{"path":"run.py","sha256":"40cf73d0721bea893233cd30360096adac03b2166b28d4227c2b99eac887cc2d"}],"relative_path":"mean_reversion/0112_0352_exp_blautvi_tm","sha256":"652c530c33064fad860caf6057d151aa5e6e9b9cfb32d339dc1ca739a9727349"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0113_0353_exp_blauergodicmdi_tm","category":"mean_reversion","dependencies":[],"entry_hash":"53cef131f09a8e38ff81980d9370a6e0720db2ef0a409d4ab1eeb2b89707ba95","functional_test":{"relative_path":"mean_reversion/test_0113_0353_exp_blauergodicmdi_tm.py","sha256":"2d55a84fd17857449026479cb4de0872d5306ec17162827b0c81a452eb2620ab"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0113_0353_exp_blauergodicmdi_tm","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_blauergodicmdi_tm.py","sha256":"b8ed33dacce03d7a055846576863d002d1d268a2f4f8bbd27be676678de55433"},{"path":"config.yaml","sha256":"58aec004342112a36f73bcd150ee85448767b8f6725ca361c32947824118bad7"},{"path":"run.py","sha256":"b7557b23fa96c1da927c5fe9a3afc4509a267bf3db55338a80802cea7beaf8a3"}],"relative_path":"mean_reversion/0113_0353_exp_blauergodicmdi_tm","sha256":"e8136eb4684b5559ddb997647089a7be230ce18b6d84aba540a8b5d35b1f9231"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0114_0354_exp_colorx2ma_x2","category":"mean_reversion","dependencies":[],"entry_hash":"9cd5a57fae7a5cc1763177ae91865fbc9cc280d887ed65388d436b17a61d392b","functional_test":{"relative_path":"mean_reversion/test_0114_0354_exp_colorx2ma_x2.py","sha256":"31884002e067bab19ff902af5daaa93f61d9cec868874487784a077daf162b9d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0114_0354_exp_colorx2ma_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_colorx2ma_x2.py","sha256":"f851ef66e930ca91bf9fa079bae7c5a2cbe95b71bdcffda43254609f932675a4"},{"path":"config.yaml","sha256":"6438bbad5b6f6f43f970eac18e337d26dea8de026501d9e4602aa676d81a4311"},{"path":"run.py","sha256":"35f0a7d13ecf056979ab3f5b4ecfdc75753cd57056178652ebd60fee2d481f47"}],"relative_path":"mean_reversion/0114_0354_exp_colorx2ma_x2","sha256":"974dd44101040869fcddcbbb069d7cc412dea47207f317dbd8f3d5ee2e4d3e83"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0115_0355_renko_level_ea","category":"mean_reversion","dependencies":[],"entry_hash":"1d407a3a0448f862572b4705a9fe57edf48d80bf1c752b723ed9628878f3032d","functional_test":{"relative_path":"mean_reversion/test_0115_0355_renko_level_ea.py","sha256":"5ac4cb431a5aba124ff6429d4265009dae6de117d0483ffa1b79270d735b45a9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0115_0355_renko_level_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_renko_level_ea.py","sha256":"5cadf5846c55f707dbfe724d6799757c4e58ddad9b513a6e9a69dc7c1a9c08da"},{"path":"config.yaml","sha256":"b768b1d9e6f71dc222a68d968e14ff4ddee349da580197f1682c6c2f5bdc5d07"},{"path":"run.py","sha256":"8960f8f1efab3bfa0b7477decfbc91a4f4530f3b268b707cab966c205032b969"}],"relative_path":"mean_reversion/0115_0355_renko_level_ea","sha256":"0a5dfe312b288716e650104fa69970a4c7e44492fd592dedcb47308deae6b17d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0116_0356_exp_absolutelynolaglwma_x2","category":"mean_reversion","dependencies":[],"entry_hash":"5d910a7e169b3cff213886d455b4ef0e14c7ccc2d40daeaf252cb909fbcda84a","functional_test":{"relative_path":"mean_reversion/test_0116_0356_exp_absolutelynolaglwma_x2.py","sha256":"221518cf30ba91fcacc66b9bcad8cdb722dbc70bcb139842f473d116c0b31147"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0116_0356_exp_absolutelynolaglwma_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_absolutelynolaglwma_x2.py","sha256":"d471096a703fe8942002888d5516aecef8acac7b09d7bdf1e30c75b0af4fd181"},{"path":"config.yaml","sha256":"e83e1119e7be21c6f9ec25d0ac246d38eae6d92b46e1ce55e032850ab8e83b3e"},{"path":"run.py","sha256":"28543aa968180db8ceb2a38dac6451f1a517e9fe3c9aaff62e151125d1dbdb37"}],"relative_path":"mean_reversion/0116_0356_exp_absolutelynolaglwma_x2","sha256":"0603fea8972b1ce700c3c5adf5ee29102e6be658348c14b6d5286be9b81ad6aa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0117_0361_js_ma_day","category":"mean_reversion","dependencies":[],"entry_hash":"e6524fa73b0952f42a3108c079a7760ebdac445bab0cb7f40b72a3c03ab6329c","functional_test":{"relative_path":"mean_reversion/test_0117_0361_js_ma_day.py","sha256":"5b8d6c8b51212e71ec3c9379495f8ab5926e08d715754b955af28a9296c4f2e2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0117_0361_js_ma_day","source_available":false,"strategy_package":{"files":[{"path":"strategy_js_ma_day.py","sha256":"d8178b67900acc36456d5219dd75c33e8d49a61dae36e634763b1a1bbfc3ccac"},{"path":"config.yaml","sha256":"4d5c2381ec00dcdda2ad416c58d398008f1f2d0714280525773cd72c40e57d2d"},{"path":"run.py","sha256":"d4410d91d62a98b2bbe884e708aee52765dccdccd9cc658f8dd0199ab606d1d0"}],"relative_path":"mean_reversion/0117_0361_js_ma_day","sha256":"d03347ed4d8597c2a609786fc6acdfc59455b8e641b5559eca9e5dae0325a18d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0118_0364_exp_sinewave2_x2","category":"mean_reversion","dependencies":[],"entry_hash":"4b6c5bf9c85ec0658fd62e65386d7077a3d28ea92a1386d45b6daeef1a41a23a","functional_test":{"relative_path":"mean_reversion/test_0118_0364_exp_sinewave2_x2.py","sha256":"e36b38598275455395c483715f4178e3aa7d7bf88170b3e49480db220f564eaa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0118_0364_exp_sinewave2_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_sinewave2_x2.py","sha256":"1e53157fe9f005313354872169263349007457feb966d2c94a469ea93001c7ef"},{"path":"config.yaml","sha256":"99481de34ada1418e379ad358517b55da7e8c5d9b5c859acf9393314b0398106"},{"path":"run.py","sha256":"8783d7350ddbf4ae1883d8ba12721d15940d3c36b34d2a178e6b25245f5b24c4"}],"relative_path":"mean_reversion/0118_0364_exp_sinewave2_x2","sha256":"efbdcc989a95a6be28c8a11485ee1364d5951e1d9925ec27075099143c18f75f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0119_0378_exp_atr_normalize_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"24312c327d2a0639e44b125f57a6d17ef1301dbc541ade7a191a53729e9f1f98","functional_test":{"relative_path":"mean_reversion/test_0119_0378_exp_atr_normalize_histogram.py","sha256":"66026f1cd18a506f5ec92a46dd3c9606a87760d34c03e5ea7a576a2b21edc50a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0119_0378_exp_atr_normalize_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_atr_normalize_histogram.py","sha256":"98b05000cde96605b184bc4c6eeeb7423dc95a46eb075d92e20e37849e5910c8"},{"path":"config.yaml","sha256":"eab773fe0e3e8ef071d3acb98e1a10ba37023a852fc2a5b012052a6e1d5ec429"},{"path":"run.py","sha256":"9f6f38d31950e1dad45b999d55cf834b990bede25bbedd9db0e82b7e66bf603a"}],"relative_path":"mean_reversion/0119_0378_exp_atr_normalize_histogram","sha256":"a170b82e0ae0d4a4bd38b4a36c5d4e4b41a99fa5c7cb13975b9160a5be607749"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0120_0387_exp_average_change_candle","category":"mean_reversion","dependencies":[],"entry_hash":"f5e1959508a12803581a28d2435861bd08c3d550e6985e1d4adecc84c8a13000","functional_test":{"relative_path":"mean_reversion/test_0120_0387_exp_average_change_candle.py","sha256":"0fd123966cd0a56ebda4087bea91e2069e47f0920d874aa8917f275e1edf246a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0120_0387_exp_average_change_candle","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_average_change_candle.py","sha256":"1895fc1948cbc8a0008ab8aaf9063d675448a5c2174b24a96295452d6140f3c4"},{"path":"config.yaml","sha256":"453ad39915773b99ed53438241939d92b3485ddd2a6b636b42ca6d40c9035474"},{"path":"run.py","sha256":"8eab5c586089b31ff4cc0ce00486c4e24ce9def62a8c6953992a30b52af54fb5"}],"relative_path":"mean_reversion/0120_0387_exp_average_change_candle","sha256":"2d54d93a3ab9affc296c6dd98817886a1fd9c8e3767bd5a05a04c0511cf0a6a5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0121_0388_exp_xrsidemarker_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"d40530c9a2b8599c9d40f1307143e3f5a5fa35cd8f0513310eef0a0bc60562ff","functional_test":{"relative_path":"mean_reversion/test_0121_0388_exp_xrsidemarker_histogram.py","sha256":"077d467160677dba2f4f6cc6cb6f688fde2fc7c769008310ee1c3dfe2f874006"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0121_0388_exp_xrsidemarker_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_xrsidemarker_histogram.py","sha256":"cc30d67b88458deb954ca656d65075ee09c1d4207541c3232e13c38f4d55a80a"},{"path":"config.yaml","sha256":"64d626305b0ac978c1f7c6e6e97042e45975d3c981a071b49bf729f77927c140"},{"path":"run.py","sha256":"67f3d10503485b37473b5c015b261905d71ffb5973d71a7cb8d20197a35dbc34"}],"relative_path":"mean_reversion/0121_0388_exp_xrsidemarker_histogram","sha256":"b8d8d8800e8956da894c2a1f79eedbd7b44d68d605df7cc0a3e797937d037a84"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0122_0389_exp_2xma_ichimoku_oscillator","category":"mean_reversion","dependencies":[],"entry_hash":"46b2caee4b5de75fca716f8acf0170527ffb54c98977deac81aafa5d2ae9027b","functional_test":{"relative_path":"mean_reversion/test_0122_0389_exp_2xma_ichimoku_oscillator.py","sha256":"e823dff9438c740edaf2344bfc62833bc3979d41bb0d973af62c8dd767bf332b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0122_0389_exp_2xma_ichimoku_oscillator","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_2xma_ichimoku_oscillator.py","sha256":"bb3ee08a3c4c43271e05184e011b4e56c8961de4b664bb27f1841e7d95cff3db"},{"path":"config.yaml","sha256":"97f816824610f854f24f9c3caac5ed74c5406b9855ec9466ae890adba24d6bd8"},{"path":"run.py","sha256":"1e05b4007bea15729ac00b53cb7dc910a74307f66de17aa1f5bb0ec9509228b9"}],"relative_path":"mean_reversion/0122_0389_exp_2xma_ichimoku_oscillator","sha256":"9e95994fb97228b8bf91f6d8f1431fc9a43b11fc4fc2787dce0d075026b7b1e0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0123_0397_spasm","category":"mean_reversion","dependencies":[],"entry_hash":"7624a47224aa9edeff61f112534f3954a3324d7d313fb76b35a2e710808d7151","functional_test":{"relative_path":"mean_reversion/test_0123_0397_spasm.py","sha256":"4d1c236c66aff4f0a5c6f0e914e1ac6b2f844fe377d96e39767f49241dd23060"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0123_0397_spasm","source_available":false,"strategy_package":{"files":[{"path":"strategy_spasm.py","sha256":"112d0783afe69356f187ebd33627b3be0013b15e4f81f35fae961c4b41187beb"},{"path":"config.yaml","sha256":"69d5889d8f9cded0ac72fe32176c6f4233405b8a3f548e47da43e84593c334bc"},{"path":"run.py","sha256":"ca665ecd94f4307c9aa34ffb127a6288add5dc4b9bbbaf11672fbb3ab01de668"}],"relative_path":"mean_reversion/0123_0397_spasm","sha256":"d65b43126e596f326918973aa75af8d1f39604e48a273abb04dfe9d1cd10d383"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0124_0398_exp_kwan_rdp","category":"mean_reversion","dependencies":[],"entry_hash":"bc23c0384247df431c9c673d073621cb8686867727213c05d003fb00b478d4ab","functional_test":{"relative_path":"mean_reversion/test_0124_0398_exp_kwan_rdp.py","sha256":"6f0784d2a8e4fe1defb3edc48e31f754392d0af9b2f172923b348637ecc11649"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0124_0398_exp_kwan_rdp","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_kwan_rdp.py","sha256":"77dd22651c88d0586758434ac90a87b298be5bd5b6de186b0397e66c11a45dfb"},{"path":"config.yaml","sha256":"bf86f213d8f43a0e9d0c1945c871892a3b1d9a9b3112e92487ea0a47c97dc394"},{"path":"run.py","sha256":"e85be920e702edc9885dbe81e167c76a3a0ca5bf77e03c8b9d80417051d3ae35"}],"relative_path":"mean_reversion/0124_0398_exp_kwan_rdp","sha256":"dc6d7a09e812518ccf98f5812fb1cf55a79aa64b25567c7b2886099a5d1bc59a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0125_0399_exp_kwan_ccc","category":"mean_reversion","dependencies":[],"entry_hash":"1711ba46a053f7d892515c5bb52cd5dde044123a2ded9e6e75262cd01714f87e","functional_test":{"relative_path":"mean_reversion/test_0125_0399_exp_kwan_ccc.py","sha256":"5feff2a9cf1bce3a998b7d6df825d9cb5c9394606b05ac9bc2020d7f0e0778ac"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0125_0399_exp_kwan_ccc","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_kwan_ccc.py","sha256":"42153eb1f94334a736cf94acd413e7cb0cead894bab972ddf80510955182d1cd"},{"path":"config.yaml","sha256":"1c814e1890128910789962ea053881d52ae7245ed5ab1af4e88838303a4ebc1e"},{"path":"run.py","sha256":"c3332aea75de7d93e9501995a1754f281a3d10dfb29ae6de8ca64c9668308b50"}],"relative_path":"mean_reversion/0125_0399_exp_kwan_ccc","sha256":"0ea97313b6c68ae9a122208e2eeb314a9a10a2136273871edbc665442a1c8c3a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0126_0401_exp_kwan_nrp","category":"mean_reversion","dependencies":[],"entry_hash":"298d43f7c9400d0e6e18c507bf7d32ccdbaca3b1608b723561da9015396dec10","functional_test":{"relative_path":"mean_reversion/test_0126_0401_exp_kwan_nrp.py","sha256":"b2c0464077e88c0919778a1c15b64a57599fd7a93c93c3bc053371d3be944889"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0126_0401_exp_kwan_nrp","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_kwan_nrp.py","sha256":"e86b24e5316013618c6153f124394c97843be594df6e1acde0192ec96ddf024f"},{"path":"config.yaml","sha256":"080ccae4eb84f9b4ccb092ef3c3257b3c467daa8bb3404329ffc015e4f5f8f14"},{"path":"run.py","sha256":"d5caa8cec1614ffab28bbf2af3c44947d58d2ca7fcc81f46931652c67eb80789"}],"relative_path":"mean_reversion/0126_0401_exp_kwan_nrp","sha256":"22ee1fd038b2bdf465411d4702cb7a14d09487cba6027f2d66c96a8018658c08"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0127_0406_exp_sar_tm_plus","category":"mean_reversion","dependencies":[],"entry_hash":"cf29552c8c4d65f8f64a9664467934b19ce7373100c00a32469ce56cc68cf5e1","functional_test":{"relative_path":"mean_reversion/test_0127_0406_exp_sar_tm_plus.py","sha256":"54e1c86eb545487a9ce6826deeb71a684d5f8e47aeff5bf43f355590df473573"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0127_0406_exp_sar_tm_plus","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_sar_tm_plus.py","sha256":"ec3b70785ea8c5d989f5d06719f2ee1ff4e330f78d021df2ab362613cdefc874"},{"path":"config.yaml","sha256":"af39e5a08beeb9c59c8c3960ec02d81c0edca1a6e2e3fe86b7ffb8cb9946f5d8"},{"path":"run.py","sha256":"e3d8de5105dcf602a962b5cc251587a78765d442fb164d20bbacb04294def56f"}],"relative_path":"mean_reversion/0127_0406_exp_sar_tm_plus","sha256":"280c98467dfb8b81231597af586b876a4759193a1cb01b4a53defb6a9e233fe8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0128_0415_brandy","category":"mean_reversion","dependencies":[],"entry_hash":"3aae35d3987ad034091e006e2d70aebe19bce37040d84b0af0a161379f6a8c2b","functional_test":{"relative_path":"mean_reversion/test_0128_0415_brandy.py","sha256":"08ae5ff70bc2785fbf3f54ebabfc977d7e3e32d2d6471e885058e33ad04d5904"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0128_0415_brandy","source_available":false,"strategy_package":{"files":[{"path":"strategy_brandy.py","sha256":"75ff3705f3bddc00dbae238b0dde781b997310e3cf39a8c309517819134bc935"},{"path":"config.yaml","sha256":"a7f766831792e0c20db9d21fbf5a423059113a22bb3090d506fe7a61dd43801d"},{"path":"run.py","sha256":"72ccd052528a97e358fd4e766d53819a19a93efe872bb7eea831616de74b7510"}],"relative_path":"mean_reversion/0128_0415_brandy","sha256":"6105807b09417797219596afa7156b2cc57e37744278bbe5df32789eec734c8f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0129_0426_poker_show","category":"mean_reversion","dependencies":[],"entry_hash":"a34bea543292796acd3b8c05e455cf362b3ba58d6471ce8f2e8eceac97d7351d","functional_test":{"relative_path":"mean_reversion/test_0129_0426_poker_show.py","sha256":"961739386f7f64aa1b71b7b1ba890c07e80063d26ab080831c34ea1de572a651"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0129_0426_poker_show","source_available":false,"strategy_package":{"files":[{"path":"strategy_poker_show.py","sha256":"ec2cb0dad0f61afd1c36bcb7fbc28c49e9ccbb62365c6d6269649e37eeab34c6"},{"path":"config.yaml","sha256":"2f63b3ae166e92b291d276f6ab3249bc93b4d5ad2d47e26acc3aef19c5ba964f"},{"path":"run.py","sha256":"fcf9d671c3cd5cac78545e5b59a9f127be77dbecd0d2600276632b52c6899e46"}],"relative_path":"mean_reversion/0129_0426_poker_show","sha256":"d926f352adf697d8d7e317744b027b79c84368ccf610bb378915a2bc2b904574"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0130_0468_diff_tf_ma","category":"mean_reversion","dependencies":[],"entry_hash":"5ebbc63f9ee986f7c7f0b9f7abb57cda7d606e4f667a8ec0f341f2b3de0c11c5","functional_test":{"relative_path":"mean_reversion/test_0130_0468_diff_tf_ma.py","sha256":"f30c0647673419bf083fa851c63dc50815ec7e3f3e05622b47682db13082b2d3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0130_0468_diff_tf_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_diff_tf_ma.py","sha256":"9c74e907ec05211640ae13cfa263244f6cca245b1ed3dc24d7e320e2a4e44fe5"},{"path":"config.yaml","sha256":"1784e3fe2fe65926277f9c9688ad73d3c06b2691617d54a9d07cb3a09bbf023f"},{"path":"run.py","sha256":"dffa0e340d2e4bd8f07781a92cccbdc709e9250fe3ebce2d22bef3a991c7836b"}],"relative_path":"mean_reversion/0130_0468_diff_tf_ma","sha256":"00614d76a315b0c5e94f50dd780baf9784670f2be8fee9cd795d9444a73c7830"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0131_0470_price_extreme_indicator","category":"mean_reversion","dependencies":[],"entry_hash":"6ae93f0d7791fb8f703124b9924c9220416045b407df548089df656912e0627b","functional_test":{"relative_path":"mean_reversion/test_0131_0470_price_extreme_indicator.py","sha256":"030f219df4cac31836bdea2597d83d3a3492f7db95ef8d15b969841b01f06f28"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0131_0470_price_extreme_indicator","source_available":false,"strategy_package":{"files":[{"path":"strategy_price_extreme_indicator.py","sha256":"efff81abfc355330146cd73cf98648820b246b75db6314c53b037fef48378a97"},{"path":"config.yaml","sha256":"cdad9bffab2c6209493bdd73c4eb65440885961fec25d3a8b1944dc18074b090"},{"path":"run.py","sha256":"ac9fb8e7b004ca3364c0fcbb6e2124a95d37683bdf42c96fc95ac507e1a7ba0a"}],"relative_path":"mean_reversion/0131_0470_price_extreme_indicator","sha256":"846302bfa9de4be06ed17f21155bc78ef85c3f09e5169acc6b4aab0db6f39676"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0132_0473_zigzagevgetrofi_ver_1","category":"mean_reversion","dependencies":[],"entry_hash":"fa302b64e8a6f7efc52e442247f3220f4562dff13490d106ec76e2341ec52afd","functional_test":{"relative_path":"mean_reversion/test_0132_0473_zigzagevgetrofi_ver_1.py","sha256":"93c007e7d533e33fa07d4569ca1451deb6a9d63c4652b2e89f6b6549ac0e52dd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0132_0473_zigzagevgetrofi_ver_1","source_available":false,"strategy_package":{"files":[{"path":"strategy_zigzagevgetrofi_ver_1.py","sha256":"a5a9fc8287c8b413e2b950564b4379b5e55088064189a3dbf0d1ef90024fc133"},{"path":"config.yaml","sha256":"0cc5139e0f80d200dbf44ac04d1b78ec1d6223cda5f609235719749f7cc089ca"},{"path":"run.py","sha256":"f4098209013b1f91b944f12175c02b0a61fd4a3af9ea2b98007a12fa8d54da63"}],"relative_path":"mean_reversion/0132_0473_zigzagevgetrofi_ver_1","sha256":"257e72b57730f09c56be2234e667ab4e0b2e07f81fbafa356ff95fb5f7ddad63"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0133_0481_js_sistem_2","category":"mean_reversion","dependencies":[],"entry_hash":"1642a65d38e6627e561cc5ae0cab4d27cf0eef25a37af7a3780be34cdc8930b1","functional_test":{"relative_path":"mean_reversion/test_0133_0481_js_sistem_2.py","sha256":"59a12aa94b67ee73ec210db7e39f109465305a4216669ae2db18efddb4c5a2ca"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0133_0481_js_sistem_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_js_sistem_2.py","sha256":"ab6f05d0d4238a7d03143cd7a00a2ba62f158feaa30d74c49f29a62998418ce0"},{"path":"config.yaml","sha256":"d42a1cdaf182c31ae82559895c76919ee4609ec685cc0cbf3c907e760370c65b"},{"path":"run.py","sha256":"bc137f580051e131b83f3bebad8f96bb5e892e6eec80a4c5050637948960eb9a"}],"relative_path":"mean_reversion/0133_0481_js_sistem_2","sha256":"6aa6287a9ac30f37b17b8ae0f7d31b3e134c232ab83241318d65e60dcf1ee798"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0134_0488_larry_conners_rsi_2","category":"mean_reversion","dependencies":[],"entry_hash":"8cbe2c52240f0d1f6f3c5f248afab943d833216768d1855567a2dbc903f4aaca","functional_test":{"relative_path":"mean_reversion/test_0134_0488_larry_conners_rsi_2.py","sha256":"dda4a3e29ca75e6d97e02b6e4df58894bc4ee496f2dfccc6083a2b7bf0551b77"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0134_0488_larry_conners_rsi_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_larry_conners_rsi_2.py","sha256":"4786fb27080ce0c1b00e16d66a680f85cf59bf65234d235b6aa6e2d682537151"},{"path":"config.yaml","sha256":"d8bbfb3d3e85b9d0df2963dd17de736509646e70b23caecbb93087f4b8547e00"},{"path":"run.py","sha256":"af5743d5f6dc034491c4920d32c99736324b6d326b401454188251b611ccb08c"}],"relative_path":"mean_reversion/0134_0488_larry_conners_rsi_2","sha256":"3b1f0d0c77a734afd77a02ed777efe6b4b39cab369ed585b09f3ea5e123b28c3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0135_0513_20_pips_opposite_last_n_hour_trend","category":"mean_reversion","dependencies":[],"entry_hash":"d2cc9a49a8ebe87758497b5517d4c449b5279d75fb47ca07cf46005d19f3d0f0","functional_test":{"relative_path":"mean_reversion/test_0135_0513_20_pips_opposite_last_n_hour_trend.py","sha256":"31bee4041624d9951fb745dc9927d779f161816745fa666398b48f8b645edcb3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0135_0513_20_pips_opposite_last_n_hour_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_20_pips_opposite_last_n_hour_trend.py","sha256":"a80448152de72de85e2400445a078c8f492b03d349a95f304e8e9eac695d7b01"},{"path":"config.yaml","sha256":"95ebd8a2c71e19e8be59ebccb27c2109bb1996a63b874f7fd148fd7d6bd90f77"},{"path":"run.py","sha256":"301a3ce212b0bd8c0ece285182c44f41705810fd448ed4dde0ae72b45ee31744"}],"relative_path":"mean_reversion/0135_0513_20_pips_opposite_last_n_hour_trend","sha256":"a40840b72150e5a4a864da9606c303cd6fb234e1b64d8af1350962de5087caf4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0136_0520_bollinger_bands_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"8eae4ec935474281fb65f4c23a0c93b4acfb805ef6a575c60ba48730a43d8646","functional_test":{"relative_path":"mean_reversion/test_0136_0520_bollinger_bands_rsi.py","sha256":"6002de24461b1efd5012077bd9564f5bc9af1f7a6089efd8c0515a487a0f7fcf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0136_0520_bollinger_bands_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_bands_rsi.py","sha256":"beca7908262cb36c2e7c4ee60a76322e2e79c3a8710cabe51cbcc33d028a8937"},{"path":"config.yaml","sha256":"6c5524a494a4a2383718cadd877c0bc8ab0e9c79c408753165ce2eff49f5381b"},{"path":"run.py","sha256":"1235a51ca63469f5568975dfc7543f8210f4c0833a0110922e1e06f28c2e142a"}],"relative_path":"mean_reversion/0136_0520_bollinger_bands_rsi","sha256":"6b5ebad7b2d35e217118551d4e3d755435145e54b281e0b079ca6e2c414e41f7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0137_0600_bollinger_bands_n_positions","category":"mean_reversion","dependencies":[],"entry_hash":"1cb218bdf048378deef01656d856aea60131af93282bf75fc2b4971f110acf58","functional_test":{"relative_path":"mean_reversion/test_0137_0600_bollinger_bands_n_positions.py","sha256":"1f6d7887688f3184a1e85939862c455f666fd417ba2f9e79db14556c7658e73e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0137_0600_bollinger_bands_n_positions","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_bands_n_positions.py","sha256":"12a22da6b09aaa365c642ea3c8a5fd3f612b382f3c7183c6084fbda352999b2b"},{"path":"config.yaml","sha256":"17acdfd776829e4dff3561da35bd17cdcf687c3eeed3a5f4b9acb58d65ee50cb"},{"path":"run.py","sha256":"21f0374637b201b319750a7d2492008b5aef1b29a96ab5e3c5b3ea95c64dc82f"}],"relative_path":"mean_reversion/0137_0600_bollinger_bands_n_positions","sha256":"010cfdc196445aab5b6c147d97aedcac4b5c81993ecf52e0706ffef3d8dcdecf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0138_0600_bollinger_n_positions","category":"mean_reversion","dependencies":[],"entry_hash":"31af95cc34faf39f0c8a03eb41bf2e7fb84eeaf9d6298b89c23f3e8903794557","functional_test":{"relative_path":"mean_reversion/test_0138_0600_bollinger_n_positions.py","sha256":"ce5e0f35d53596f09890f20a4cec39a0e039c7d363a29814f871c426066e26b5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0138_0600_bollinger_n_positions","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_n.py","sha256":"14ead303b9b206e72c409150de84696633d777ebf61f2f14a2ca4c452f907bea"},{"path":"config.yaml","sha256":"d2051ec06dc59b7e3b42ee26c011e021e95e45a005a26804ea426167af11f56c"},{"path":"run.py","sha256":"e1ab92c3759ef57bc8eb7137c80c770ae1ff7ab354383e3468b48da2a029a212"}],"relative_path":"mean_reversion/0138_0600_bollinger_n_positions","sha256":"99987d3ae6908a077abe6f97159614032f4427679780f3b9563f0b06ac5e2d5b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0139_0603_rsi_and_bollinger","category":"mean_reversion","dependencies":[],"entry_hash":"c2a1d46ea718badda1bf1abfff4613f650eb2e087bbe89624afa65e9be1919da","functional_test":{"relative_path":"mean_reversion/test_0139_0603_rsi_and_bollinger.py","sha256":"3d212d08816a95cf26c24b287f3f32cc2db35687b704f13cc338618ac5b473bf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0139_0603_rsi_and_bollinger","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_bollinger.py","sha256":"eb7f6540a37cb1c36d3f037f3018b2958ca644d8d328460f429629b4ba639cf3"},{"path":"config.yaml","sha256":"1bac1938429bfeebf240d5cfa2600aeec20a7ae03c16dd811bc2e9f9ae034e74"},{"path":"run.py","sha256":"bfc2506722c9b49979dabf75da41b4739230b1cc96a684ccc71dac3fcad4c452"}],"relative_path":"mean_reversion/0139_0603_rsi_and_bollinger","sha256":"3cae8162d48ac0cc0b22783deb2ea0bd06f165462967b1941a8baa034c30d276"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0140_0616_bollinger","category":"mean_reversion","dependencies":[],"entry_hash":"1c18698c3f8abed45909512f5f209afff50f742ee8f7c30e5396a6dd4f1f61f5","functional_test":{"relative_path":"mean_reversion/test_0140_0616_bollinger.py","sha256":"bc1962eb259339ccca412945bbc39d1235e7482f30b7a1502ba4a513807fb2cd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0140_0616_bollinger","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger.py","sha256":"bcadb73c26346bf46a59dd3c8997accd66c29601871984247b70b3b181b75b63"},{"path":"config.yaml","sha256":"ae24ffcef0ed86d89efc249aa16e8971ef70f20660861de8b82d2eae7630e26b"},{"path":"run.py","sha256":"95e1a8de0cf6aae03deb797e5b4422dda1c5a3f3f551c64a589db7f33289456d"}],"relative_path":"mean_reversion/0140_0616_bollinger","sha256":"2ad2451f0b887ddbaeb3ba41de22375308f7c21e697ef22cf9008e8080e2e57c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0141_0621_20prexp_3","category":"mean_reversion","dependencies":[],"entry_hash":"d5e019ea1760826cf072fca8660f14f5475f00b6d0deef6a7682ece0bc595b67","functional_test":{"relative_path":"mean_reversion/test_0141_0621_20prexp_3.py","sha256":"f6062bc37ca99dd0f43989e8a0c6496b872bade429333c21769d94f7f881c929"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0141_0621_20prexp_3","source_available":false,"strategy_package":{"files":[{"path":"strategy_20prexp_3.py","sha256":"9715a27008d020d4bec1791da423a8b10ffc10542fb6c525cc161a5e22760738"},{"path":"config.yaml","sha256":"a1d873355b2c9ad9caf903c25dd3c4e27f4e11f40329391d803a3cb36fd6af02"},{"path":"run.py","sha256":"9136412c61a532d008b54b7f34e55e942a3233b45e155b5d64d27798d4ce7e81"}],"relative_path":"mean_reversion/0141_0621_20prexp_3","sha256":"ecb934c9e8686451bd6321f0e6d21a7a25b0e1534ca813a9f5ebd2b0d763fd09"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0142_0635_ivan","category":"mean_reversion","dependencies":[],"entry_hash":"c66a5f180e169c1a14b0c17107bada7fdc6620e0b0fe26e95897f08e1a0b386e","functional_test":{"relative_path":"mean_reversion/test_0142_0635_ivan.py","sha256":"37ba6ca8f00feaf4025fe29a65cbbcd0706cda687966ab6ca8a441be37ddfe6f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0142_0635_ivan","source_available":false,"strategy_package":{"files":[{"path":"strategy_ivan.py","sha256":"5bed042d9c9534797cc357152b85bdf1f5d15d0a10745b9c2ccaf5b5376bb4e8"},{"path":"config.yaml","sha256":"bf42a955db1d306edc4030b92d0a6705df981a617178009943d5e39b0655b59d"},{"path":"run.py","sha256":"3c05e29dcdb58e39e2e44b784f1bccfe8e66f37857ebe233dcc39e77bca0405a"}],"relative_path":"mean_reversion/0142_0635_ivan","sha256":"afe6f71c0461c1ca4d99f1af78e5e4ed911c3cf8cb9eb0a1574a103ba8c76b2e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0143_0636_exp_threecandles","category":"mean_reversion","dependencies":[],"entry_hash":"2140e3b8a200869f3d49bc071c2caf4bf00166c10f410d72c3ac1a5c428643ad","functional_test":{"relative_path":"mean_reversion/test_0143_0636_exp_threecandles.py","sha256":"772602a4b930712acee191ba638f3fa80038658b2f10447ec4fee6a3b82d0aaf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0143_0636_exp_threecandles","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_threecandles.py","sha256":"601dc4b2e1a9e756e7701b94ffa8752c04e38c991a3e67d72383dead32dafd6f"},{"path":"config.yaml","sha256":"de42073d8006b0067596087b78608e93999a089dd584d7b96f48cff79308537e"},{"path":"run.py","sha256":"67a1c0d9316259600f10ebb742cfe43175f7f285b4d6b75cfdcc8f269067515c"}],"relative_path":"mean_reversion/0143_0636_exp_threecandles","sha256":"f9f10f486640f75bbd1d5bf1f11da7085940437f854f1a643cb055ad11738800"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0144_0639_exp_cgoscillator_x2","category":"mean_reversion","dependencies":[],"entry_hash":"e669a20637defa369e9a80901265f1f95d6529ea68fa91a9138c6ccb99a11bc1","functional_test":{"relative_path":"mean_reversion/test_0144_0639_exp_cgoscillator_x2.py","sha256":"6357b037fb063a795a84c8ea52df8585fa94c04c45699b7f9439f6108b67859e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0144_0639_exp_cgoscillator_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_cgoscillator_x2.py","sha256":"b55d57ccef88dd373fe7aedacfdaa1e300e19cc739d9352041e2ea0927bc3453"},{"path":"config.yaml","sha256":"b95b6c45e507cafbb70e101bd2fa104374a2029ac6652819afaccbe4eebe1053"},{"path":"run.py","sha256":"c4b2048c8125e166d87276698692b999f4f4371ef94e606313645e956bddf215"}],"relative_path":"mean_reversion/0144_0639_exp_cgoscillator_x2","sha256":"63683d38bc67f8d72925cd7323f916f222a99761ede63747ec43e141717e6a1e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0145_0652_ma_reverse","category":"mean_reversion","dependencies":[],"entry_hash":"35787826110035346a6a594ab0e4ef20b18921b38e9c15add35bab14ef316583","functional_test":{"relative_path":"mean_reversion/test_0145_0652_ma_reverse.py","sha256":"1e9c14296534db7af05583689eb2d738b98303d618c843f12d50ccc391bdda7c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0145_0652_ma_reverse","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_reverse.py","sha256":"4e324e713a24d7abb3763637e8d2dda1e89a0f30295f52d4ea5c54e96142a0ee"},{"path":"config.yaml","sha256":"6fa3ff1f68d1fb3850ad9f330c0b1cbab851edca2fddd0ba023ec4a15c6902f2"},{"path":"run.py","sha256":"2f9ecb4b70028c74d18117deb67007265eb8cf3f7359c7415fe15c3fe8f1b98f"}],"relative_path":"mean_reversion/0145_0652_ma_reverse","sha256":"cbdeaefbf37dc21bec683bf32f4f5b753a81cf82b3c8066391939df994026716"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0146_0662_altarius_rsi_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"41dafd036bd934c789595a398e1d0e355a40643cd25052aa15cf6dff76cc5cfa","functional_test":{"relative_path":"mean_reversion/test_0146_0662_altarius_rsi_stochastic.py","sha256":"347519dba6179421b8ac931f4804505195c79846478be6203c72f65635c8eacc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0146_0662_altarius_rsi_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_altarius_rsi_stochastic.py","sha256":"3b73f8506c6b2b8177fb5bcbe67c983a6d05eec49ce54cd02b5f998acc11deea"},{"path":"config.yaml","sha256":"9e98fd80150f60b9938f76cf8e374c2786769575d2a42833560e2fc291a6941e"},{"path":"run.py","sha256":"40f2f85104b85303ae09fa3510ae0285c79a4f6006cdaa9ff66d974fcc1a3659"}],"relative_path":"mean_reversion/0146_0662_altarius_rsi_stochastic","sha256":"6061b1760b7af1f1769bee285bb1252f7cb3172a481246084288c61905d57537"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0147_0673_expbuysellside","category":"mean_reversion","dependencies":[],"entry_hash":"49cc2cf2acba5859a1c9d2b0c28375b392daec928f228918a197d9dd36fc5f9b","functional_test":{"relative_path":"mean_reversion/test_0147_0673_expbuysellside.py","sha256":"8ab1b52dedeb1869336e1bcdaa904bf958a6539eb6ad320bdf81699b80ade7d5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0147_0673_expbuysellside","source_available":false,"strategy_package":{"files":[{"path":"strategy_expbuysellside.py","sha256":"da7ac78548edf90080dba61c46613a0626a936955cb5bda5176ec8c3a092bd2c"},{"path":"config.yaml","sha256":"78a61980d0cd2c99c44f932df19529d8c4964a2477954f4f8981acdd4698c25c"},{"path":"run.py","sha256":"dc236bfb93cb031667fab0866ccc83c5be07d3fed8a376a7ff2c5f08c9c83981"}],"relative_path":"mean_reversion/0147_0673_expbuysellside","sha256":"19b9204586916f7b47e788777ec5a66f90ae14d0240762586fd52b011a438076"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0148_0674_exphawaves","category":"mean_reversion","dependencies":[],"entry_hash":"4db7e6809dd1c981b027a961a0eca9b0f87fa75ae7d93352530ffb3f0d111d10","functional_test":{"relative_path":"mean_reversion/test_0148_0674_exphawaves.py","sha256":"b04710fa782155b77d6ecf3a8b05a1615a236800023bf1772b798b4179bf8708"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0148_0674_exphawaves","source_available":false,"strategy_package":{"files":[{"path":"strategy_exphawaves.py","sha256":"294fc1c7e30a5f5f6aa881fa2465b153247d06b8498b552b483bbcd4d09882aa"},{"path":"config.yaml","sha256":"8c025d118b77af4b8b2a112ffd905f823f2a4f71e6a79ac5907b23b8f7aa9094"},{"path":"run.py","sha256":"8df8ce062a92fb1fea439a58d91d9422501255bba633c4a180df1fb42415c884"}],"relative_path":"mean_reversion/0148_0674_exphawaves","sha256":"803ae5e856814422183c5870dfa7ab370dbbde47f9034d4d2abeacc78790ac44"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0149_0676_exp_price_position","category":"mean_reversion","dependencies":[],"entry_hash":"e25ec7a00ca44e6ac2d2b65dc724282ae5fc67a9f5ba1c1d8e0a15e6eb0a3bcb","functional_test":{"relative_path":"mean_reversion/test_0149_0676_exp_price_position.py","sha256":"e37aab931ed1570d89c131fb50e0492e6043d02fc911180f12e68fcd9b9cb87a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0149_0676_exp_price_position","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_price_position.py","sha256":"2a8d1523a7d432b605675b4244603b6d85c02b8819b7eeb96ebf1ac507647d33"},{"path":"config.yaml","sha256":"ac816fb15df00a377b785fd4696011004c0acbe177b533f8d048fa4d6ae56484"},{"path":"run.py","sha256":"6e004ac604d4484c0d411fc0dbbd3486f0c23669a98360065dc4b57d9af520c5"}],"relative_path":"mean_reversion/0149_0676_exp_price_position","sha256":"4c8b65a17baa1a21a27cc20083a4fae6007e51067f4ee662859b24c6c92258d5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0150_0694_10pips_once_a_day_opposite_last_n_hour_trend","category":"mean_reversion","dependencies":[],"entry_hash":"b875f79ed3509b7748540d75028d99d4a512a3114f91137764ecdef8c7f213ed","functional_test":{"relative_path":"mean_reversion/test_0150_0694_10pips_once_a_day_opposite_last_n_hour_trend.py","sha256":"9eca085fa7451610ce37dca264c71bcb62bf1c2fba181753f818f04171cbef11"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0150_0694_10pips_once_a_day_opposite_last_n_hour_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_10pips_once_a_day_opposite_last_n_hour_trend.py","sha256":"8b05f137196e8bac84f558030edf64d3eceaaa6685e5ee92c4bf0a1e9151a86c"},{"path":"config.yaml","sha256":"75cb600c747343e774b392e057771a9a6a2b0ff73cb8ac05be81173a7baba2a6"},{"path":"run.py","sha256":"9b657866c18002bbc434b5027287dbc18a4de8b02f2a39f536aa3cfac094a552"}],"relative_path":"mean_reversion/0150_0694_10pips_once_a_day_opposite_last_n_hour_trend","sha256":"d0c4457ea33307270f044f0d90335d3dfad7e5fae614e776e0599c2e875a4046"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0151_0697_exp_tdi_2_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"e406e759d654b9e7073270b4dd2d4b325ac250bcd1ba4ce91c942558449ce16a","functional_test":{"relative_path":"mean_reversion/test_0151_0697_exp_tdi_2_reopen.py","sha256":"8c93f5b070cc6b8656bd59fd5b7dddcfd7992be841effdc31e928d00b74401e5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0151_0697_exp_tdi_2_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_tdi_2_reopen.py","sha256":"f9242bd2d02f07af946c4e10389bdcb9e51e35aa8fcdca48f1d74656f48063b0"},{"path":"config.yaml","sha256":"a9deccb51b22c5dfb4386da07ff757629298e017969ef33e99e2859fc08f06f2"},{"path":"run.py","sha256":"3283e8890fea8c601fa1c0f384f64f85dfc1ac386e70885c1ad127ef74a3fa0d"}],"relative_path":"mean_reversion/0151_0697_exp_tdi_2_reopen","sha256":"2c2c2d19edab671d2bc4f52c8f61a3cad1cfcd42a898aff5e8f3af15a719cd73"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0152_0707_trend_catcher","category":"mean_reversion","dependencies":[],"entry_hash":"6f39ed430a182e8c6b376c344fea1e2ceb4f0cc80b0904ddc0bffc8ed77bf983","functional_test":{"relative_path":"mean_reversion/test_0152_0707_trend_catcher.py","sha256":"0a1bd36ef869d267a5ffbec37e3189c2c5320fe0e8fa0ed70f649e242031718d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0152_0707_trend_catcher","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_catcher.py","sha256":"2e17229a258a00fbdd7fd697e7d20844956a800813bd61e91ad6ee1b29940160"},{"path":"config.yaml","sha256":"70b5c8c789654a3743306cf2d3598ad0309d474b733a8b814e1fc7650f9226ea"},{"path":"run.py","sha256":"26a34878080256b03ea8da5d57836f05a5e3218129588d46d0c904491a314bad"}],"relative_path":"mean_reversion/0152_0707_trend_catcher","sha256":"fcc30341e980750c14534539a8d8492e5c7bc9ce72518d8a7006ac55c6e494f4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0153_0721_macd_pattern_trader_all","category":"mean_reversion","dependencies":[],"entry_hash":"2dfc0eca5b422f980d0ab8f7920470fb9e2bbd9ebf00026b038bc3440c93a430","functional_test":{"relative_path":"mean_reversion/test_0153_0721_macd_pattern_trader_all.py","sha256":"5eec3dbb4fc0aadb522fe16f9972d32e074d9fc6caadd6174cf7abf847b8a5f8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0153_0721_macd_pattern_trader_all","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_pattern_trader_all.py","sha256":"1252ecb4aa59f31f403f0a7207f88b374816fb4a612ea7300990e07c53aa5bc2"},{"path":"config.yaml","sha256":"4f665e5efedbe257b6fe9f35b14aa082950835332aa0edf9adafc14bd872642e"},{"path":"run.py","sha256":"e27e1573cb132bd9e438cd1bf92a44f6605b299655c57b10afc22a0c3b27aa06"}],"relative_path":"mean_reversion/0153_0721_macd_pattern_trader_all","sha256":"bedb6db48f64d7fc3e1e59c74398635755a8293d5d8a6902632193f58428d2f6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0154_0723_exp_fractal_mfi","category":"mean_reversion","dependencies":[],"entry_hash":"ef350cde46c23810cd7dd5da8aa03fb0c346407c4c45a1d4c87b0faadfb1646d","functional_test":{"relative_path":"mean_reversion/test_0154_0723_exp_fractal_mfi.py","sha256":"dc180e87eba0ae993a8f5eaecd300415cf50732df0a2417f901373388f25ef30"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0154_0723_exp_fractal_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fractal_mfi.py","sha256":"319c97b528fc9a6f63bb95e8bb8652b2a378868f07a9ae7c083198178043e047"},{"path":"config.yaml","sha256":"b7fb9f7895cffe53625ba80fdf9540178ce6ae081dc14f6e181869fb93b348a5"},{"path":"run.py","sha256":"27f5725438456666254cf6c5b51b8eefd9493382fe16d1f6dd4a8dd049265032"}],"relative_path":"mean_reversion/0154_0723_exp_fractal_mfi","sha256":"44af02e1ecbeded1cef606efbce92f5a6718f53afbde49c9be93c291cd91d24a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0155_0727_ft_billwilliams_trader","category":"mean_reversion","dependencies":[],"entry_hash":"f7a7e866ef4c39919256a37a5dd9981f9fe44fab1eee5b358b14f9d66b18a0d5","functional_test":{"relative_path":"mean_reversion/test_0155_0727_ft_billwilliams_trader.py","sha256":"f4ca9fa8fa6afa1067697746248927961cc41d99868a4ff4149904ad2b3f91f6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0155_0727_ft_billwilliams_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_ft_billwilliams_trader.py","sha256":"7f6ef6df9dc371ab5f3cb37f2003dba9d101806a49bd57afef1feb82b92a65d3"},{"path":"config.yaml","sha256":"25f7026587b5dced17a649941c951e30fa77e29dc4a21ce1d355d58fd1799713"},{"path":"run.py","sha256":"bb65db65064e6efce7e542b2f33ac51fee5649a8bebe3c3b6479556d6c821f1b"}],"relative_path":"mean_reversion/0155_0727_ft_billwilliams_trader","sha256":"48df198cead482ecb95117e7995241b448463b2d7dafc3a6d99a04a607588367"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0156_0730_exp_weight_oscillator","category":"mean_reversion","dependencies":[],"entry_hash":"a491b18449186058220516ef48f4d6f6f2167d28a6feb2d8d5c8bbe7928d0f30","functional_test":{"relative_path":"mean_reversion/test_0156_0730_exp_weight_oscillator.py","sha256":"99d194acdd49b2ec6147dec2aa07c0d8c42a5a31a33c826692fd542d68ed5194"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0156_0730_exp_weight_oscillator","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_weight_oscillator.py","sha256":"d26e36e28d110f653d4a5613be0cc85b4d375b94c7b7a8d442a7b0b5e6adff23"},{"path":"config.yaml","sha256":"411539f6b6d500ad91ce1d8b16f6ad1da21a820a892e00fe60a2c2d845ba4c3e"},{"path":"run.py","sha256":"398ecd19fd42302a09bc620bfa7284500ea2c535d10419a577873829a9d5f4b1"}],"relative_path":"mean_reversion/0156_0730_exp_weight_oscillator","sha256":"67efce6ce936fc386f78efa9ce5723ebd5ce07f4e76314445fef9557847ce0ca"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0157_0732_exp_silvertrend_signal_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"18da89951d38c833348dd00cdd74b4a445522961805f2e5ce490eecf585b732d","functional_test":{"relative_path":"mean_reversion/test_0157_0732_exp_silvertrend_signal_reopen.py","sha256":"6a09d6a8d935273d0c462d810c5d785a360066df3575e63c33b8b85ef311189e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0157_0732_exp_silvertrend_signal_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_silvertrend_signal_reopen.py","sha256":"26a6a49e51b1b7ab6b55aecb25d194679394e42178560c45a72d1b7694d52e73"},{"path":"config.yaml","sha256":"34f6f84e9258580114b872e3dab205646d3ee7586a408af73b1fc88892ccc9a4"},{"path":"run.py","sha256":"7824d7013acc8c170f2e994bcf2d3cb00118d7add59ae8a3750c2b3d61a3f11e"}],"relative_path":"mean_reversion/0157_0732_exp_silvertrend_signal_reopen","sha256":"81608df1b830dc88f8540a2bd56bf6d3760c5e3af45119316f8cbf7191f2989f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0158_0733_exp_bykovtrend_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"f8ff76fc91ae5dd214126b65b15f1df64cccf060a0f4cc4a6894249914f4811f","functional_test":{"relative_path":"mean_reversion/test_0158_0733_exp_bykovtrend_reopen.py","sha256":"c2955403d46e90ed08e9d40121a68c2650a62c880b0f2e7611b1d43a7ca68d67"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0158_0733_exp_bykovtrend_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_bykovtrend_reopen.py","sha256":"64ada1752451229ccde9aa38a5d0bd143c7729fc0e60ca17843a5dd824bb69d3"},{"path":"config.yaml","sha256":"55199d334c4cf4a48b3a6615e41c5ff5b43189b85447ec105d8ece8e9e543912"},{"path":"run.py","sha256":"012e2be421b5705254cb7452c7402f31ac23316b70256f8de0f260d0e93927d3"}],"relative_path":"mean_reversion/0158_0733_exp_bykovtrend_reopen","sha256":"6d65cea970b0bb3e7989fdc211a83d2c25aad7b2bd3045d92ef9c798ebc4c10f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0159_0737_exp_fractal_force_index","category":"mean_reversion","dependencies":[],"entry_hash":"c1d79c7550497ca243e74fa2ac032f19eac6fdaf8f352735fd2d524fc960e175","functional_test":{"relative_path":"mean_reversion/test_0159_0737_exp_fractal_force_index.py","sha256":"219d5b0e4945bfa7907a5e0d80908f73a08b1dd6294b3f37505404626f22f900"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0159_0737_exp_fractal_force_index","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fractal_force_index.py","sha256":"70359b5eeb392c47ccc889427d2b4d6ae32726ccc5a004e5bab14990905da37f"},{"path":"config.yaml","sha256":"508025ae3d774bfab4e80dfa2b7bf0304d24d3ea482abb1ce8d288cc9125acfc"},{"path":"run.py","sha256":"7db2c4e66e9ec87d055f2f45e34090a0e3d6c3b6074cf327fa9fc9c5d2b412ae"}],"relative_path":"mean_reversion/0159_0737_exp_fractal_force_index","sha256":"b162aef2285e22994533776f276a5375bc68cf57f7347e99e540cffed6eb8eb9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0160_0741_exp_fractal_adx_cloud","category":"mean_reversion","dependencies":[],"entry_hash":"af24563b5e52ca8e890b731188a54453576fef814a08a4b3e27c6f0f36efea93","functional_test":{"relative_path":"mean_reversion/test_0160_0741_exp_fractal_adx_cloud.py","sha256":"9059b58235d8dcff13772fea4a47374e4f5f64603042334c5ba5c22985f59c2a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0160_0741_exp_fractal_adx_cloud","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fractal_adx_cloud.py","sha256":"6bec1fc22e9939e46013d31d3ab1f4432ad8e92260917b972ec6cbf0f2153d37"},{"path":"config.yaml","sha256":"c32d971ee188f21c8eb358adfd13ec29d06d01b42137635806769030b0b488b3"},{"path":"run.py","sha256":"0403dbf9c07050ef3df36bb941e25fe666061e3d9f5465d9b80bcf6fb129d24f"}],"relative_path":"mean_reversion/0160_0741_exp_fractal_adx_cloud","sha256":"906870b7086693a8b74e10567cf9dc245375eaacd84d7a13dffe7eeec31b60fc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0161_0747_exp_fractal_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"e7456a36537cc5f7eb0964263f4cf5045c022dd193a7512147b4dddb382c6943","functional_test":{"relative_path":"mean_reversion/test_0161_0747_exp_fractal_wpr.py","sha256":"f4f16f5f9a4a33ab5b2ecb5b8d7d67aa87e188d38b6b6bd37a60d11a1a9b66c5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0161_0747_exp_fractal_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fractal_wpr.py","sha256":"6829823eae0c1c8e715422ea998afb33bb7cb37287160523699127f0d7e8f453"},{"path":"config.yaml","sha256":"54fd4388b546c514ac2d14ede47c27ace9e9fb680b029f5bae5a138cc5add94f"},{"path":"run.py","sha256":"f5ef33fb6d5a71fb9f9f05fa1eb7d78e934586a2eb76ec66e1b48b1798054cd6"}],"relative_path":"mean_reversion/0161_0747_exp_fractal_wpr","sha256":"e49f15153665706f75b39ac670c5a9ec43e00479ac6e04ba017a093570364a80"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0162_0751_bollinger_bands","category":"mean_reversion","dependencies":[],"entry_hash":"f7409a82c4b263a283852334f3b052e1a4a486c16814a16323c7e2ce5329520b","functional_test":{"relative_path":"mean_reversion/test_0162_0751_bollinger_bands.py","sha256":"422c146103e48e243504a50f15ad9a8555adfe86606fbcec701bf147380d93d7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0162_0751_bollinger_bands","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_bands.py","sha256":"84670f29db3c92beea4a0f228f984799799c2794a56b4c5c075d5347fab86b99"},{"path":"config.yaml","sha256":"cdb2355a03a9ef22b806e2583784f8e1d864b1d24c9d301345bc7174e4afe639"},{"path":"run.py","sha256":"3e397173ade0001c5197f1dc1822158df69fd25e5fa88efbd48168b902fed24a"}],"relative_path":"mean_reversion/0162_0751_bollinger_bands","sha256":"4f57b1ffa7d0be0ab99bcd48c530e63cfc5f15d7bf0a8da1f5bae32ffa3bf822"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0163_0752_exp_zonal_trading","category":"mean_reversion","dependencies":[],"entry_hash":"00bc83fa228d729aa41739ccc8b8b19b36b2efca5be971a41f1ab89a44ef072b","functional_test":{"relative_path":"mean_reversion/test_0163_0752_exp_zonal_trading.py","sha256":"882b415db6351e820da6f149b3d2cf12543935da5fdc7118c01a1f1bee3bc10b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0163_0752_exp_zonal_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_zonal_trading.py","sha256":"afb6f854944664dfee3449e970b5c5969bb6b796989a3bb273301490f2df24b5"},{"path":"config.yaml","sha256":"ac8140eeb79d012b5db7a88644a2b7091be5aff2fe656935d465a1e7e0a1a54f"},{"path":"run.py","sha256":"7bb09f7381d46808eab214b1c7aba356e177815431b0cd9fc2b54293bd24708e"}],"relative_path":"mean_reversion/0163_0752_exp_zonal_trading","sha256":"9fc9605da2b53692bdb550f4404714121f905c8d755926aec7e0c38c9828b74c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0164_0755_exp_colorzerolagmomentum_x2","category":"mean_reversion","dependencies":[],"entry_hash":"87768c41ba4fde4fcd48da8fcce27726a658c66dab4274e021f193328a296458","functional_test":{"relative_path":"mean_reversion/test_0164_0755_exp_colorzerolagmomentum_x2.py","sha256":"af65f24bd787d1063861d7419c99c8f5a1c07f2e8a39e59fe5b8313cea6ad0d1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0164_0755_exp_colorzerolagmomentum_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_colorzerolagmomentum_x2.py","sha256":"ff37c01a2d8d35deff66414a518c1b93108da9f350f4c894d84286aa753637b0"},{"path":"config.yaml","sha256":"313e1ad36c88b9faef12932cf40dbeda7f59230f1f0af0780db8d28ab14f9d54"},{"path":"run.py","sha256":"2e45a2f54ad819d58e10d0f01b61406b9af20981a221595312705928f155840f"}],"relative_path":"mean_reversion/0164_0755_exp_colorzerolagmomentum_x2","sha256":"9ec0479588f07bb15c7693e4f8365281daeba00a6d7274f6db2b7ab09dda70ae"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0165_0758_exp_2pbidealma_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"d6f3d4bb0351b1f0023c8f03d35ea80be7a39f59e38da66dab5ec4586c27a62c","functional_test":{"relative_path":"mean_reversion/test_0165_0758_exp_2pbidealma_reopen.py","sha256":"8f3987dcec7bc664202e71d5bf8d77de4d9303eb813b8eba9976e0133d629f35"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0165_0758_exp_2pbidealma_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_2pbidealma_reopen.py","sha256":"d86cb1b70e2f610d806cd2215f08bc40a2cbe2e1ae65a1c276d09ea11796ef51"},{"path":"config.yaml","sha256":"aa0a6e16e5998ba97a4629682c9e4829d8881630ad56ed3b942f69fe872199cf"},{"path":"run.py","sha256":"3880db31ccdd099c8d2cdb0eae8b62eca455460d150542a3a723d6d26fd78076"}],"relative_path":"mean_reversion/0165_0758_exp_2pbidealma_reopen","sha256":"04d248c6456b6579d782208fa175a23cbe4e34d7e823bb0d40df9c2c45227c36"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0166_0760_exp_fishertransform_x2","category":"mean_reversion","dependencies":[],"entry_hash":"a6e765e2098487d0c99f6455a05d92348e390b17bfc87d0b2b2637bf2213cf7d","functional_test":{"relative_path":"mean_reversion/test_0166_0760_exp_fishertransform_x2.py","sha256":"443920c4331f06fd10ed496c6095adf0ad2ed4ce799259fc1f8bca71480109a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0166_0760_exp_fishertransform_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fishertransform_x2.py","sha256":"8a9133fc75571a7981126248d51876a074387569a4044b8ea1c125ab1217d826"},{"path":"config.yaml","sha256":"85b02033c91f290d29d93babb4ae66581752c95eba96785460cb3089cb632e7f"},{"path":"run.py","sha256":"d7884bb85775fce2f5ca2db8536b4147a85203d2e7357c82d221edef2b432852"}],"relative_path":"mean_reversion/0166_0760_exp_fishertransform_x2","sha256":"26490f7e237143c399976e854b705e3f857aa59823380643f23194bce236b522"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0167_0761_exp_fractal_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"4cfb37a0f7e53ff5d3376feb1954f2331a24016149d7cc3a42dbfa3d4dae719d","functional_test":{"relative_path":"mean_reversion/test_0167_0761_exp_fractal_rsi.py","sha256":"3eeb0e042c4e9fb7010b9e4d5cd387a9104f86fa033a286cc1d00e0759bda69b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0167_0761_exp_fractal_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fractal_rsi.py","sha256":"ae415399630f8052b6d87d494bfbcfa0482d06119bb6eef208e22f73256967c8"},{"path":"config.yaml","sha256":"e28593f7a30fdf1774cbabdd4015a9d9b912650a1f455741ec12fa5913be4223"},{"path":"run.py","sha256":"c9beeaad6c62a52a39c95f85fdfeddc26b4356e6923fe647b82a70f4a9f620df"}],"relative_path":"mean_reversion/0167_0761_exp_fractal_rsi","sha256":"4738099fc8c2502808f09d5bfad735bd7730593e1e02de095bed5b9453d2dae8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0168_0768_exp_jbraintrend1stop_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"27020fa27dbec577053d55efd8c8685cb168a6dd20d733e3322e9136e2a93753","functional_test":{"relative_path":"mean_reversion/test_0168_0768_exp_jbraintrend1stop_reopen.py","sha256":"2a9fa92dc93c03e80c9c24cb171645b2774a3e6d19e95035ed22e4633225316c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0168_0768_exp_jbraintrend1stop_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_jbraintrend1stop_reopen.py","sha256":"91da920757544adc2660b386b3d07c369bb09a579d5d7cd60334530766e8a374"},{"path":"config.yaml","sha256":"bdf3ac26bea8b83bbb961f2cd2d395f23ab59b2acb529a990bc863f3fa3c191e"},{"path":"run.py","sha256":"cd1d03c6503ae6a11335b20f0938048e03f24c73c273e0274428c878de5d4e63"}],"relative_path":"mean_reversion/0168_0768_exp_jbraintrend1stop_reopen","sha256":"bcddbbdd0a4864abf0995ead300841451172964e1859bc41615e3375bbb99153"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0169_0769_doubleup","category":"mean_reversion","dependencies":[],"entry_hash":"19c86d2d3806430f09f6ba89592facc77b3bd1771da34c839b394e14bfe19baa","functional_test":{"relative_path":"mean_reversion/test_0169_0769_doubleup.py","sha256":"91bd4a3d58d6712e8fc0fa0ddf444404659dd7505521eeffe7b2ef425303a5e8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0169_0769_doubleup","source_available":false,"strategy_package":{"files":[{"path":"strategy_doubleup.py","sha256":"7e41b6b261db0f6299fe97e0286ac7312b47d31e12872fac67c789e536d6c70e"},{"path":"config.yaml","sha256":"9610c7161104dd501ee54612f5b663809d8f174e95c7b4af3f8d2ab4d90b2057"},{"path":"run.py","sha256":"f60891d395bdc1a7499d545f236659ab794f635a9b25b64c785b4e0f97fdbaec"}],"relative_path":"mean_reversion/0169_0769_doubleup","sha256":"87ed7ac6ea369b035934b5da2f54ae4b892acb29dfbd7a7320e462561182e204"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0170_0771_exp_bezier_reopen","category":"mean_reversion","dependencies":[],"entry_hash":"79c5d36a43ed9bf722ab6a1f89ad1597e23272c289e28e8ce7f501139614b233","functional_test":{"relative_path":"mean_reversion/test_0170_0771_exp_bezier_reopen.py","sha256":"617cbece853d422d279cf9c6f5641cc389057c49473f74b152181008a33e4a01"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0170_0771_exp_bezier_reopen","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_bezier_reopen.py","sha256":"96109de292173b6219dc314da629fbbe41897280aeabe47902da0ecc10c766f6"},{"path":"config.yaml","sha256":"3b56c744af9af03cb9ef90b59c0613245a253943b5805c628f28736d6e43760d"},{"path":"run.py","sha256":"6de04b291befcba823ec6e880f0aaa1d452f48d690233c89cbe43365f71ab816"}],"relative_path":"mean_reversion/0170_0771_exp_bezier_reopen","sha256":"53f541db734e1f9cf4fffe82964de9b64fc606165d5f97863b87490f36a6973f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0171_0774_exp_fishing","category":"mean_reversion","dependencies":[],"entry_hash":"ea3774fd40a53d64e653890f8c9b34fa11f5a30d76b9667982b780581a63f320","functional_test":{"relative_path":"mean_reversion/test_0171_0774_exp_fishing.py","sha256":"eb53ffc45ade5423e3170ea06b7987812948471302d71bb21901d44309edc62d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0171_0774_exp_fishing","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_fishing.py","sha256":"a59ef12516fdcfb157e5dfc584afb12dcdea4dd0aaa8088dc5304ad74403ced3"},{"path":"config.yaml","sha256":"11f25155540900fce1802f79c92cb045abe38d089ffef45b86109cd15ce58c87"},{"path":"run.py","sha256":"bb94043a5b3a53e6a9cef996ad0b87c8449c6bbce71941b29a4dc45ff7d5f7c6"}],"relative_path":"mean_reversion/0171_0774_exp_fishing","sha256":"97362f08aed517db914bf4721caf130ae0a0e43795eeaa49f1d44b158432f47e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0172_0775_exp_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"7246713f23a0b8b59c5ebfae41620b388c3d2cfc839fa4c629382eeb9d4dabb8","functional_test":{"relative_path":"mean_reversion/test_0172_0775_exp_wpr.py","sha256":"3526a0975cde0ccc7a5e458b1b6a76c5a901f21e88a70fbea71961c6beeada5c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0172_0775_exp_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_wpr.py","sha256":"b0705f32411949d2e0f18f8d7f5c93a6d44dd70b0908af2ba92465a6f4bfed3e"},{"path":"config.yaml","sha256":"3741094360c6328d49c6de78b20c271772c910b529413c2a019ccee43087d8cb"},{"path":"run.py","sha256":"0962f9740b28eb3990c69afb1423ae79274f760dbd9ac6d6c36f9d0481a80627"}],"relative_path":"mean_reversion/0172_0775_exp_wpr","sha256":"c441f5d7f3478a8513d93fcda6921982083a6f11e1d984f924402d34851a59b4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0173_0777_candels_high_open","category":"mean_reversion","dependencies":[],"entry_hash":"34b4e4d49d66854201316c98b13d2567fe8f950c0403a4372dbc21df37116645","functional_test":{"relative_path":"mean_reversion/test_0173_0777_candels_high_open.py","sha256":"502e6be0ad7d35a830cb1dd95dd6224547de5f4a2354f56dcddc039b89b93899"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0173_0777_candels_high_open","source_available":false,"strategy_package":{"files":[{"path":"strategy_candels_high_open.py","sha256":"137d00e15e81cbf7a0b5a8857109021170ae2f9b0ade3cf8498d96a0d6ae85c2"},{"path":"config.yaml","sha256":"63dcdbe193fc93d2748d103203f02c1b74242cfaad3ad4f0baf73346ee94bd91"},{"path":"run.py","sha256":"223a7deb453e3f69bea98ea844eec009b6e9bdddcaba28cc7e3d57191e93ef94"}],"relative_path":"mean_reversion/0173_0777_candels_high_open","sha256":"ba2c6e17c6741f8c6d2315b529e706794d504227229a60ec49ec0f41ae6b672b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0174_0778_exp_mfi","category":"mean_reversion","dependencies":[],"entry_hash":"981d093a76a2a18b08f6c90db46061605c4c767f5903edfbaf89813f2259f128","functional_test":{"relative_path":"mean_reversion/test_0174_0778_exp_mfi.py","sha256":"19921da98c3c84ef2eff928a38b1342e68cd5f35e74e61bb4506a0815852594d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0174_0778_exp_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_mfi.py","sha256":"b1d9b74f306b971799ad49a254c82d7751acacb06902b3419333d86aa3d9ce62"},{"path":"config.yaml","sha256":"3387b3c902ce01c5788ed497a3e59a2266cce341fd473c730639c45a28b7a413"},{"path":"run.py","sha256":"857be9a89786a90751839e5bd6a57917b7808f53acfde84c186a23664d22e8b2"}],"relative_path":"mean_reversion/0174_0778_exp_mfi","sha256":"b2eeb075beac7155f4f6a7434da2625ab616572dade45e9fc722e93efff160d7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0175_0779_exp_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"3a9824275a698e86c882e1ae2cd33100a8b93d6da180ca7cdadc7a41602c829e","functional_test":{"relative_path":"mean_reversion/test_0175_0779_exp_rsi.py","sha256":"ddaab7a388c11ef440cab6ad52a3460316864da24bcf922fa33a867e506591cf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0175_0779_exp_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_rsi.py","sha256":"06fbc7a46967b1724b15b6768dd3556e01eb7381f74c0c93f1ef0440b4dedb83"},{"path":"config.yaml","sha256":"b69a0b93872d8dc2518b78b7f5514eeec4d070d7a09da338ec962d8abd1ba1c1"},{"path":"run.py","sha256":"45405e16bf210980409a637e3ed9a703308cc9072fce36ac45b85990c7724799"}],"relative_path":"mean_reversion/0175_0779_exp_rsi","sha256":"a71381f1bd489bd1fe21b6962c464ca0c73c78cea516bebc47259e3495e3da0a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0176_0794_exp_3rvi","category":"mean_reversion","dependencies":[],"entry_hash":"1a738394e48dcb130600dd0b65cea898e4760090a6da389b13540f62201ef4ae","functional_test":{"relative_path":"mean_reversion/test_0176_0794_exp_3rvi.py","sha256":"004e519f5e70ac923ce17a42d6fb8e05c1199e3203af4b35327c84c394dd9503"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0176_0794_exp_3rvi","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_3rvi.py","sha256":"c9e54839a6fea6b670d80fc2662832225fd594f79d57e6667606b11806043495"},{"path":"config.yaml","sha256":"fefd2f89a39556fcea4a59da59a8994569f099afefe2eeb9ebf2a3ed2f86cabe"},{"path":"run.py","sha256":"0e669c7ae985d610c09b1166897488989e64716255ef2c3897955452540b6da5"}],"relative_path":"mean_reversion/0176_0794_exp_3rvi","sha256":"e6c6bf4f8f2513310eef6d1ac492add5d3b1c05de87b5805512ed2ebc42abf5f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0176_exp_hans_indicator_cloud_system","category":"mean_reversion","dependencies":[],"entry_hash":"519110376a2bbc52973b05031c3247908045d151ab687b9251fe618f851cc305","functional_test":{"relative_path":"mean_reversion/test_0176_exp_hans_indicator_cloud_system.py","sha256":"50c066d7c8777a0cd4abd764be1a37c6769030b23eba4c37eb241ef0a61642b9"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0176_exp_hans_indicator_cloud_system","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0177_0795_exp_3sto","category":"mean_reversion","dependencies":[],"entry_hash":"92fe0dd5fcd9e943a5a7fde7604e56d153525127bf157c04b6c2b29f5e95710d","functional_test":{"relative_path":"mean_reversion/test_0177_0795_exp_3sto.py","sha256":"58d6af9a3f314257b652123dc2571125e95429f4668477c3b22e3a60d08df142"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0177_0795_exp_3sto","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_3sto.py","sha256":"ab1645cb2621d9281d1225732bc6065d183c618b5f512db8dd5ab4b0ad7919c7"},{"path":"config.yaml","sha256":"fcc914c2642b888db1e08784d9580de45cea00aecf0a917c213e93fe61dfcb26"},{"path":"run.py","sha256":"270fa12b299c37831cc84667582d4e6ee66eaf61651539d05627ec3a8f0db311"}],"relative_path":"mean_reversion/0177_0795_exp_3sto","sha256":"bcc31a33f3e190aa3dae2241dba1e4339e8104eff9d28c857a78990eb4969e24"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0178_0814_delta_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"d7034a9fdc785573dbc65a80e9742eb181d5f81e5d16148da1683bfe41ee048b","functional_test":{"relative_path":"mean_reversion/test_0178_0814_delta_rsi.py","sha256":"14dabcceee3c9a02961fd904e39e29635db6650953824a4836988fb33924763a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0178_0814_delta_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_delta_rsi.py","sha256":"6855fd002a990f6ebfd19ec3ec84efb94c881b6e595c4b8683040fce29977ba0"},{"path":"config.yaml","sha256":"62a18650be9e24d4c45521f00619e157599f8e612f4324d3b47e83c44dc5b861"},{"path":"run.py","sha256":"1cfccfe17e152a15d53319f84c3ab3d8c77dd41dc317b02465208f575808cdeb"}],"relative_path":"mean_reversion/0178_0814_delta_rsi","sha256":"4f9a3ed5523c42c8065109199dcd6a742305c6b7b9f893a0d2d81eddb4663065"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0179_0889_vwap_close","category":"mean_reversion","dependencies":[],"entry_hash":"50784e10e9092d93b0b642da890f7ce4e6d6f739edf36f7d317d653d92a924ee","functional_test":{"relative_path":"mean_reversion/test_0179_0889_vwap_close.py","sha256":"9872320269c9dcbc971a996ee454650ca04227e0303b4b2776fe240f1357bc16"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0179_0889_vwap_close","source_available":false,"strategy_package":{"files":[{"path":"strategy_vwap_close.py","sha256":"e61adaf173428fd6577db20406abec9adc9fa24f65abed1e918f91e7f70b4750"},{"path":"config.yaml","sha256":"93b02df714a774bd7f17675b41505a1192b9a4e07b3e62fcfabbe9aa4aca6477"},{"path":"run.py","sha256":"44d056c8f91d852a18d7c5062cfb4c86bae854cd7e5b4a4dbd6dbe7a1d6e6007"}],"relative_path":"mean_reversion/0179_0889_vwap_close","sha256":"89b3738655c5c3112e41ce372eaa86d2307b18efd0612ae52f2fd3f780315043"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0180_0907_stepma_nrtr","category":"mean_reversion","dependencies":[],"entry_hash":"dac7ab1b530e036579bb7f83741ad260a2cb520cd3ac930529c234759f74319b","functional_test":{"relative_path":"mean_reversion/test_0180_0907_stepma_nrtr.py","sha256":"22e606fbcaf2a8eb1ea2fb7cd284e3563b06e3a1538dfde3fad0afb281d6bcb8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0180_0907_stepma_nrtr","source_available":false,"strategy_package":{"files":[{"path":"strategy_stepma_nrtr.py","sha256":"25e8409d6378c252011ab80e7f4b5bf2f3507273c8c18c46568975f52ee7daad"},{"path":"config.yaml","sha256":"8ac53c2bb154bdf3d420651b55858b086c7aa0abe85d3b22c279c83bde216f8f"},{"path":"run.py","sha256":"421ef866798844429766b86d616c697952144cad22b93972fbc9e3005fcae43b"}],"relative_path":"mean_reversion/0180_0907_stepma_nrtr","sha256":"8290306b25e0adb1f6705efe91bf85fd69ccd83df2761eea394ec1375685ba10"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0181_0943_colormetro_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"e063eea3119454a3ece0bd9449a8b21994992aab36db222059d492c7a7d54271","functional_test":{"relative_path":"mean_reversion/test_0181_0943_colormetro_wpr.py","sha256":"747efbbe27bd50699fa67e4b2504896c1433ef2564284467bf6819c5be6a6e84"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0181_0943_colormetro_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_colormetro_wpr.py","sha256":"87a3378f14e61b79cea7fd9794db33b84f0421329fd87780f72578593fab3484"},{"path":"config.yaml","sha256":"d805e86f369098cfb6de7150639a794a239a40bc599b3db3c455dce9ef9a2831"},{"path":"run.py","sha256":"760ff1a62f7cb2e64c44aeab238078c465a6b0bc839d0b18b4b9b7fa4bb53317"}],"relative_path":"mean_reversion/0181_0943_colormetro_wpr","sha256":"c237e0c3ee2d81cf2f6652a53389ee098d085d966f8b3e4b505417c585697070"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0182_0946_colormetro_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"15527a3eac1ddd03200333786422dd9cdcf6ee1dd693911e88acac3fb386f266","functional_test":{"relative_path":"mean_reversion/test_0182_0946_colormetro_stochastic.py","sha256":"d847dfcb334d9e7e4c53f98728d95656ac1b33fb3cb975f32632d0616dc32412"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0182_0946_colormetro_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_colormetro_stochastic.py","sha256":"0eaca7f051b09f3508233e4695cc7ea53f131cac33dcbc1fa98fed592a0539f8"},{"path":"config.yaml","sha256":"d022fd90777472b01c87b9dc41ff9a919d10db0166a08815183b83b4c7e152eb"},{"path":"run.py","sha256":"9d67fec885f87e7c9afc4637bbf4d94a3abbf13fc234826ab2a5cb06091b836f"}],"relative_path":"mean_reversion/0182_0946_colormetro_stochastic","sha256":"f4625d6352c1aa4b869f2a77c1ef7b8d7f1d8f8b4cb8e40128946a18254b4eec"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0183_0947_colormetro_demarker","category":"mean_reversion","dependencies":[],"entry_hash":"b9fef579e127555552a2bd1e8077cc65c52ba4c1011c372291f4d5956512c343","functional_test":{"relative_path":"mean_reversion/test_0183_0947_colormetro_demarker.py","sha256":"615f3c98fee92bc86ecaa1a66cc2fc6593e89fecc84093550c6de22e487e1f21"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0183_0947_colormetro_demarker","source_available":false,"strategy_package":{"files":[{"path":"strategy_colormetro_demarker.py","sha256":"eac49c5931b6a4674e83de1788aebded89d9101f4a6dd18f3566fd9e8e9ece2b"},{"path":"config.yaml","sha256":"96298a8e50696f1a32dc91110db98e48ca73408a9c88e533702a66bfd03b6480"},{"path":"run.py","sha256":"4f0a574dd667a98aa65c0e1e4edb04d74ec6176440d3c3fd73476f1e56cc6748"}],"relative_path":"mean_reversion/0183_0947_colormetro_demarker","sha256":"df78317790ef1a9f489f4a47dd6c3737612b2293a2e5fce43337128718676591"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0184_0949_macd_2","category":"mean_reversion","dependencies":[],"entry_hash":"bd711c8e02ee140e56aa3257a67f5d3fa388112fc3c7292e960dec5248fb5c07","functional_test":{"relative_path":"mean_reversion/test_0184_0949_macd_2.py","sha256":"649ff310f4263b602dd5b87167babaf1734a64b2857a611d13357ac28c8698cf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0184_0949_macd_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_2.py","sha256":"a2f114869ad6fa8f2f736915e10a962ef6a5b5da23450ad20333e07a68bedf3d"},{"path":"config.yaml","sha256":"69cf2bf4b1101e2e41d5860ab40d7aaf657f15fd1f232cf966840022dcb51343"},{"path":"run.py","sha256":"6cbc5ddb7c66f74663f3dced23d2a1f74b7caa313de0c698121a40bc41bc5a41"}],"relative_path":"mean_reversion/0184_0949_macd_2","sha256":"81523e49756b0f5056ddff6dd2ccde773796ddeca92eb7747927c4780e83c539"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0185_0950_anchoredmomentumcandle","category":"mean_reversion","dependencies":[],"entry_hash":"de4d19930079bef34328f9f36b4304e22b29b83233071e53cbf53d16557343bc","functional_test":{"relative_path":"mean_reversion/test_0185_0950_anchoredmomentumcandle.py","sha256":"b3826c20658b721f964e09e64949db06d3da717e18b58bab8beaf58c36cc4d93"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0185_0950_anchoredmomentumcandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_anchoredmomentumcandle.py","sha256":"dd9aec94c0b21ee799a1c268b2e18d1e55730550ea13a1c5bb2584452ba0977c"},{"path":"config.yaml","sha256":"31b8c9265e347e1fc160ef96d86251d9f844625c7667004efdadbfc201eb2a8b"},{"path":"run.py","sha256":"8e18a2ebda5ef96332923d162e91d8481e277b64632ae8806846436715511353"}],"relative_path":"mean_reversion/0185_0950_anchoredmomentumcandle","sha256":"7156e63aea63e761b83bac9457d3ce6d0f90f5b14ad4f93b1ee9aff9edab26a1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0186_0951_kalmanfiltercandle","category":"mean_reversion","dependencies":[],"entry_hash":"bc1a79e9c9cae084ba4ff5cfa1156ac6c1ba46e7cce05df2759238d16b93351e","functional_test":{"relative_path":"mean_reversion/test_0186_0951_kalmanfiltercandle.py","sha256":"deb82f615bba42c012d001c77e14686ce7e64118c1ecc922634cfa8f2306de62"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0186_0951_kalmanfiltercandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_kalmanfiltercandle.py","sha256":"2656459390555aabdfd0cd91f9e9762b5c18c4c1ba3a03f300b4f0c6e5f00804"},{"path":"config.yaml","sha256":"41ff861f21e2e3b4fbf3322e306a0bf7afc72fc0799c98a46adbc945259ba307"},{"path":"run.py","sha256":"5d9cd1802a52ce8d277faecc86996e6c0f277ee6c28f344f6715be44a614f808"}],"relative_path":"mean_reversion/0186_0951_kalmanfiltercandle","sha256":"5979f7de793682698d117a6d6dc8037e39806bfa9c0d9e3e79a78062a9eaaf2e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0187_0952_macdcandle","category":"mean_reversion","dependencies":[],"entry_hash":"f0fb7693202bd97383c73f3c263a0e78d88ba263daa9d54ff0a5a7f409e330f0","functional_test":{"relative_path":"mean_reversion/test_0187_0952_macdcandle.py","sha256":"0f9772e945146db6b55bb86311b011bb8fa279ae97777a2e1bb8cb37efe3edb7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0187_0952_macdcandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_macdcandle.py","sha256":"da01d74553f0764a107f2cdd561ff74cb5bc78c0aa5ff98b59dee52e14c4548b"},{"path":"config.yaml","sha256":"759041a69b96bb1b0d349d21e88d3c296124159e82ef99c1d6f04aa29bf71419"},{"path":"run.py","sha256":"d66284fa467c1a6deaac3e557401dde8085ef6d3fa034228051ee5fd6c924fa8"}],"relative_path":"mean_reversion/0187_0952_macdcandle","sha256":"da5204c2696d4ae76aedc59135513b25aecbff57e0ab3650f91d8b1acde0de80"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0188_0953_laguerre_roc","category":"mean_reversion","dependencies":[],"entry_hash":"dabb47c93596acb5e32111202c72b3395e6bd5564a39a57cacc4e4e44f86827d","functional_test":{"relative_path":"mean_reversion/test_0188_0953_laguerre_roc.py","sha256":"bae669c1c90e85c29b393872e1b1254d62223bcc356632fda701d993fc9cebaa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0188_0953_laguerre_roc","source_available":false,"strategy_package":{"files":[{"path":"strategy_laguerre_roc.py","sha256":"f178ba6a73ef98c5478116b6df8cf9341502d61b80ed040364d55dde532650fb"},{"path":"config.yaml","sha256":"8ce7c31a8be4c29a9892146f49f6b14e4835b8f4f65b3ba8b2e0938d7c7913ce"},{"path":"run.py","sha256":"7fe3d30141b36ce5e6883fe6fef2700ad6bc4dfa3297e5c2dd9ae44685287c35"}],"relative_path":"mean_reversion/0188_0953_laguerre_roc","sha256":"41b3250cec8453d426465f19350783b93f18bae9fc1e47b32a5788b796e8266d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0189_0955_i_gap","category":"mean_reversion","dependencies":[],"entry_hash":"2af237fa2b1e141dda935936b206d3311927c69e4bf614fba815b51d47b4541d","functional_test":{"relative_path":"mean_reversion/test_0189_0955_i_gap.py","sha256":"1e436d6e866f0067d2ae0eef0c0618e1e03afdf7076173a4071c552b6afc3433"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0189_0955_i_gap","source_available":false,"strategy_package":{"files":[{"path":"strategy_i_gap.py","sha256":"95976494c5b249869c223798ebe54d9d86965f90d7b7c6da1045f011bcf80ad3"},{"path":"config.yaml","sha256":"d49d7db13b33b413dd9807baa25363c0fdd8b0db5a43dda30ec0bd8c90915eec"},{"path":"run.py","sha256":"5f18ff7ddff120741df21335174aea58e336f4d6df24dd8766a3cf61cdb7d0b4"}],"relative_path":"mean_reversion/0189_0955_i_gap","sha256":"01c9ecb356f2557427be42c3c29d7ac7c66c5d679202519884f44f1d2c6ffb2a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0190_0959_dots","category":"mean_reversion","dependencies":[],"entry_hash":"23fdc360dcef4844e04b178f024ae443b191a31d5a2612d6c993502955bc6ba5","functional_test":{"relative_path":"mean_reversion/test_0190_0959_dots.py","sha256":"87c93d53bebcd26961bf0a222f6f1e2834f1b48905df696fffe1a2f2d241c809"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0190_0959_dots","source_available":false,"strategy_package":{"files":[{"path":"strategy_dots.py","sha256":"1953c7cd42a8ac48b0d33aadc9133c3ea80a0ce8afe7ccb3e2e880f4cd738c9a"},{"path":"config.yaml","sha256":"d4ee09823f709155879ee0d8065543ce220c589f37aa3ef1964977c83d5ec982"},{"path":"run.py","sha256":"30f0f91b1a3c963798e78aa85be0cc7913f0f754a9c12c99fc1dee841acfcc4e"}],"relative_path":"mean_reversion/0190_0959_dots","sha256":"d4c4f3ff6baf392eb8f993c95304c40dbf77ae130e69e7060e435719a381dc6a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0191_0960_super_trend","category":"mean_reversion","dependencies":[],"entry_hash":"a7895908df721328b2cfb9203e2caeddfba1d47749f62bcdd02576bd3818e5fc","functional_test":null,"mapping_status":"package_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0191_0960_super_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_super_trend.py","sha256":"a0a97a83e37ea762f58abe431fa2b7dc92744a31b9000d674ff9e79acc9dcb0c"},{"path":"config.yaml","sha256":"939cab792bb8f68dadf9888f5720f7de0e85b5ed0601a3a0f12ae6f41a5b50dd"},{"path":"run.py","sha256":"a25778e8b4cbc002970254d83f73774a8d2a8eb7dc04dfdd341d8d5eeaaa79a5"}],"relative_path":"mean_reversion/0191_0960_super_trend","sha256":"4eaa6be871c744662bb4c289749c6a93e84fbe006e960c159883a22da4f595e8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0192_0962_momentumcandlesign","category":"mean_reversion","dependencies":[],"entry_hash":"a11bca4b06ec1a23fceb7369127ab99c167044e547ceb571056eb3944bad20a4","functional_test":{"relative_path":"mean_reversion/test_0192_0962_momentumcandlesign.py","sha256":"8ba0ef74096c8fcb2c0aedb86840d92dae9d1abc4c5c1c2a9971f89c8aad00a3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0192_0962_momentumcandlesign","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentumcandlesign.py","sha256":"8d8b6b2399e91553f4546338441c372b806155260e369784965e9dc793e0040c"},{"path":"config.yaml","sha256":"57b7946da4c9e7e198ff1478cf21b97d43c592928bcccf95d5adcd5d4d16e1bc"},{"path":"run.py","sha256":"ae5cb897801f0de3a48ee8437aaba0d589fda69102d39f26a06a495c79e08d80"}],"relative_path":"mean_reversion/0192_0962_momentumcandlesign","sha256":"3c3f04c8bd84a0be51aa33e9fa949f3d6fbc1e64173a81328e7520f2c259892a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0193_0968_trixcandle","category":"mean_reversion","dependencies":[],"entry_hash":"8c96e6bc2bf95958eff6b40543a3d049eb337fed128f2d019dc970d8cb3bda6b","functional_test":{"relative_path":"mean_reversion/test_0193_0968_trixcandle.py","sha256":"c06343014b5fb7cc98446d8c2f9a7e0d8ac29e87c94f171073c9b44d316e4981"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0193_0968_trixcandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_trixcandle.py","sha256":"5d5c6349c2ac6f7aec9295306eaf528a211dc40e2716ecf86cc8a18a5013fba6"},{"path":"config.yaml","sha256":"b1b2cf6b84cd61fd05a68a9f55ec627cd86e4337fb141aaf49083807d7f7708a"},{"path":"run.py","sha256":"8146658831b4c696b2624f4f19eaf350328ab4461c21688ef17d7446f40220ef"}],"relative_path":"mean_reversion/0193_0968_trixcandle","sha256":"aabc4290a290723bb44a6e3a735a8f9f86eaaa12033f3a6d736297e42eaeb62a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0194_0970_framacandle","category":"mean_reversion","dependencies":[],"entry_hash":"f5d56e9e2e4c63623ad842791e9c2dec402e1e8642f707054756fc793a239686","functional_test":{"relative_path":"mean_reversion/test_0194_0970_framacandle.py","sha256":"e75d77815abac46e6252e43a0cfd5f5af5da9fff0dff169ed47325268c03cb68"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0194_0970_framacandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_framacandle.py","sha256":"901436e6905975aceeae9a0525b1225441eb7f37c32192bb2176186897bce31b"},{"path":"config.yaml","sha256":"e3f016e4bb4f66890d0a9b9c7411362cbdab1288ca71a4023724fd91fb7055c2"},{"path":"run.py","sha256":"2c5a282baa99c0fd22effc2dab155ccd9da3abd8b86ab41de36691a8f9a1a267"}],"relative_path":"mean_reversion/0194_0970_framacandle","sha256":"d9fd20fbb05f2c6c54da527f4eaca4c0285eb75c7f23ac36e72d79398946d853"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0195_0974_lsma_angle","category":"mean_reversion","dependencies":[],"entry_hash":"1856f1a850de1ecd8e31eb00fde5d1550b1a21c5475038d49264912e9c9986ea","functional_test":{"relative_path":"mean_reversion/test_0195_0974_lsma_angle.py","sha256":"b3893f1f2946dbce283b4b2c950d63128b5be69cc697969f75595e5e74f4b8a4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0195_0974_lsma_angle","source_available":false,"strategy_package":{"files":[{"path":"strategy_lsma_angle.py","sha256":"b70197ad2702d7844b481f3af0ed0cce49f440606436e16d59e8e6df0b4ec8a7"},{"path":"config.yaml","sha256":"8fa3aeb39cb7f25c4bcca4da2822edcfe2d10b77bee7f7f4ecd11c0cc8d463f2"},{"path":"run.py","sha256":"9ed7ab766d78858279a589cb9cf12845e8c52e815b0d6a69180bfb2b6fe2d230"}],"relative_path":"mean_reversion/0195_0974_lsma_angle","sha256":"1c846b4d6281d382795b94dd325f1a5ac2657d67a8e4c84a5860b9bd2e52345e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0196_0983_kalmanfilter","category":"mean_reversion","dependencies":[],"entry_hash":"0bf4103d7d241cdc99886821f3d206c101313bc0edbe49cbcd66de1354f27ae9","functional_test":{"relative_path":"mean_reversion/test_0196_0983_kalmanfilter.py","sha256":"be9a2a0c90d74c6b86c7a127e5718241ab6f957fb580dcae671fb198325d9abc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0196_0983_kalmanfilter","source_available":false,"strategy_package":{"files":[{"path":"strategy_kalmanfilter.py","sha256":"c112360719b5cb4d9258d2cb89c40b84a4e23f4a4d7d4d99c28d8a07b9cc739e"},{"path":"config.yaml","sha256":"4526045a61ab5e337d11ce5de79518e6c7927deae8b2355742cb929ad2681c76"},{"path":"run.py","sha256":"482cdecfab59cc760374f91d18e20552804aa3c4aedc7f65cb6bbff3ee6bd294"}],"relative_path":"mean_reversion/0196_0983_kalmanfilter","sha256":"564c097c0150244e17ed7d821632a2a4b11a2e6bbdc752ff266d92787b54dcc0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0197_0990_i_amma","category":"mean_reversion","dependencies":[],"entry_hash":"f5b86ad3f22da488b1f663f93a6b016c4e16c2ab4ea1398304a5ad9890786c21","functional_test":{"relative_path":"mean_reversion/test_0197_0990_i_amma.py","sha256":"74802d0f1e2133fd44ea47986f1b08cf41f37dfff74fd7ed901e8ef915ab6903"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0197_0990_i_amma","source_available":false,"strategy_package":{"files":[{"path":"strategy_i_amma.py","sha256":"6284c0e4193d4ab4e9ed771e81306d39cd30c1c84695ebf501a77c6a8b7bc24a"},{"path":"config.yaml","sha256":"a5c13877fcc202ee63e872549ec3f13f05965c2d1d8c8ec154b281bdffa2cfad"},{"path":"run.py","sha256":"885d434d8eca60aa12d8099d8f2c39e537cb4d716dfd1ac5c0f503d5cae1802a"}],"relative_path":"mean_reversion/0197_0990_i_amma","sha256":"497dc55f8f433bf4e5684dbbb80a6446701d155ca3d0360f029bd899ded78ece"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0198_0994_ianchmom","category":"mean_reversion","dependencies":[],"entry_hash":"619493cf290663575933c9013489bd403b04fe85b7b943a1003596e4e7ee5cd7","functional_test":{"relative_path":"mean_reversion/test_0198_0994_ianchmom.py","sha256":"9c93e0828d579d54c90fc0f7b0617c02211a1c9b00494b53f5dc3c2d350bbb5e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0198_0994_ianchmom","source_available":false,"strategy_package":{"files":[{"path":"strategy_ianchmom.py","sha256":"9a5b74a6724c035d371dd626233f1ec3414309be3619ebd1f845ac5cc303b4d9"},{"path":"config.yaml","sha256":"5b6386a7671e224c89c65ca2e8ce6bfdad1ce5089f6a609179a1d10563452233"},{"path":"run.py","sha256":"cbbe90e398bc02c7c3cda249f38b1948c5ab1ca570f8fab067086766cab315f0"}],"relative_path":"mean_reversion/0198_0994_ianchmom","sha256":"fe30475a9d97711770e9bb81f1bdfc92eada847589f0aab32db8632b201bc780"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0199_1000_colorhma","category":"mean_reversion","dependencies":[],"entry_hash":"d2f10ea845c0cf3c94a429f1eb8043875fa4615c65b1e7fcb5988c4f489e1f95","functional_test":{"relative_path":"mean_reversion/test_0199_1000_colorhma.py","sha256":"c9474824a1d2a2c72e993f3f4bd952e6bd008b8163b84de6067f54e57ced79fd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0199_1000_colorhma","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorhma.py","sha256":"3fc2d14b7d69148beb961c65276cd9280205f7f8d195741c01ae1d83ad79ad8e"},{"path":"config.yaml","sha256":"4cbe0cd7a4bac000a1ed854cb010c3074b71debc0903e7c903b3d29c8eba3de0"},{"path":"run.py","sha256":"223e791dedb8bee48ea95acedff518b9af38adfb7260bec93576fba1bb9bc29a"}],"relative_path":"mean_reversion/0199_1000_colorhma","sha256":"5aba3603dccafab383329d5102435f598313cc21bf4e62e42248a5480e52e717"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0200_1005_finetuningma","category":"mean_reversion","dependencies":[],"entry_hash":"aced5fc87e5a5e4b5cbbe116c0bb4741e58ad9da57554f36a06ab6a5a497511b","functional_test":{"relative_path":"mean_reversion/test_0200_1005_finetuningma.py","sha256":"01cb925e81e1c3563795f101208b8254926b019e91c9e9280a00319bfde0d8de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0200_1005_finetuningma","source_available":false,"strategy_package":{"files":[{"path":"strategy_finetuningma.py","sha256":"72e4f5e0faa25cacdb068690d9c1c5dd8498b4795a7e8b7e905693f6ccfb7cba"},{"path":"config.yaml","sha256":"df12ce60c430de6f1bdfd9f9d6e16c9a1afaa2def4e474140da99a948d32bc6b"},{"path":"run.py","sha256":"9de8596c85e429b066a78f0dac49570fa964173d4642e3ad1f18873cb556ace4"}],"relative_path":"mean_reversion/0200_1005_finetuningma","sha256":"8463aaae56819137318be7e7ea6456efcfde97d6dfdb5214001592c975ee173c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0201_1119_ma_delta","category":"mean_reversion","dependencies":[],"entry_hash":"4f6b792c104f14d0712006d39ce3683008c45eaa40cb054f42dacbe41c9eabc2","functional_test":{"relative_path":"mean_reversion/test_0201_1119_ma_delta.py","sha256":"05be7c56a35965899be8c9ba40cb9e86af9d7e0fabc9fc5c833eae749a292ab0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0201_1119_ma_delta","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_delta.py","sha256":"a951e10e432312503280c5a0401ca56e1d9020cb40ad24696c23908b5221d88c"},{"path":"config.yaml","sha256":"59e0c9476d82e20b8c06118aa313e7d544a43b2e557dc45fc103b2c3be947778"},{"path":"run.py","sha256":"b1d1636143ca7b13f0995ab94da3378cb05a4f677656be59919e16d8a16dec29"}],"relative_path":"mean_reversion/0201_1119_ma_delta","sha256":"ae4bbaca4a502fb10a3ca707ffa007bf1ead0e94449db277f0079f779fbea1c4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0202_1134_bobsley_ea","category":"mean_reversion","dependencies":[],"entry_hash":"03acfee907d24605b47bb28fdadffa4408e30f2dfbf6a4aa5955507bf3989c92","functional_test":{"relative_path":"mean_reversion/test_0202_1134_bobsley_ea.py","sha256":"d0666bd3601138fdb3732ee0f1cc0db49a43df224019c82d05ec489b3f9b800f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0202_1134_bobsley_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_bobsley_ea.py","sha256":"d25e98aac81e43d1a739669686c4b91c141860b80c88d4bf67ba22c5bc1857e3"},{"path":"config.yaml","sha256":"06a494d9fe8dce1577692bc55cd6ac82d27e2ce32256d0dc1cb3ad7199f8918d"},{"path":"run.py","sha256":"5af6eaebb6bf0e2814663eba282947aa126e02bd5cc29b6927dab9653604fa64"}],"relative_path":"mean_reversion/0202_1134_bobsley_ea","sha256":"64c74af778bb7ad9840576cb87d873da7500d454f83238dd9cab8cbde596b8a0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0203_1143_kloss","category":"mean_reversion","dependencies":[],"entry_hash":"36cc253f6cbce205a7d630baea595c3d675c41c36d1cc29763f726a0bbb14884","functional_test":{"relative_path":"mean_reversion/test_0203_1143_kloss.py","sha256":"9a70fde3f4a3757062f47502520658a94924addc73521c73c0727a0a441ed680"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0203_1143_kloss","source_available":false,"strategy_package":{"files":[{"path":"strategy_kloss.py","sha256":"5b9946d09488273a5c41c732b3d42ac73a30598e3d14753871e54b663bf0805e"},{"path":"config.yaml","sha256":"e78dda3861c3b5bef40beff36443838a3326f2328f648b1f5b93648c62dbe796"},{"path":"run.py","sha256":"5017b08cdabe96dffa8410b48c158c52a1b64c49c095fc2dd945f0fe43dd62f4"}],"relative_path":"mean_reversion/0203_1143_kloss","sha256":"e661c06c1bd3214005d5bd4c46321b52d95ce7eb0f0e3728f40800bb49649c6f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0204_1146_t3ma_mtc","category":"mean_reversion","dependencies":[],"entry_hash":"173064bbef5c2b296780d9b450250af16fc2c1753e7b649b2b01a8727be923b4","functional_test":{"relative_path":"mean_reversion/test_0204_1146_t3ma_mtc.py","sha256":"cbdb91367b4c4a2c1fcac1ab37014f5ca60d8b6d737d3d5a955ea293c25c2805"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0204_1146_t3ma_mtc","source_available":false,"strategy_package":{"files":[{"path":"strategy_t3ma_mtc.py","sha256":"9e0db68173246042ca35f73507d07dbf68a62ce9f23b2f53be9e2d2ec1241166"},{"path":"config.yaml","sha256":"99da93ec432706b2e1f6023e9100dea1e709bf7b791af996471136f420a48164"},{"path":"run.py","sha256":"31a189c90362b78fca11113ae485d5211df70c627a3d22a0811d6d9bfd1af0aa"}],"relative_path":"mean_reversion/0204_1146_t3ma_mtc","sha256":"0faaead87e9e62a88d4a15b83c80d6469b600eadb8d1071610d216bf5a26982e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0205_1149_terminator_v2_0","category":"mean_reversion","dependencies":[],"entry_hash":"3fbbc359eb05c1506178cad59315354a5095a43d91f6d25b3521d638c9a9b527","functional_test":{"relative_path":"mean_reversion/test_0205_1149_terminator_v2_0.py","sha256":"06c2293ca3e2c8a1cdf4a4d1a356dbc2080fa340da430af9ec04bd71c9ce7039"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0205_1149_terminator_v2_0","source_available":false,"strategy_package":{"files":[{"path":"strategy_terminator_v2_0.py","sha256":"0890591b94ab83af05591fe3df5be5d74d389235196b1237c6fd570b71982eb9"},{"path":"config.yaml","sha256":"4ad9f8eaf7f1fb802a39afc5f809621186868d32265c0519d011afd4f51bf30e"},{"path":"run.py","sha256":"266831bfccd39ef93c73053e6f3ae4095a03eaa8bb5a7fded07586ea064d40d2"}],"relative_path":"mean_reversion/0205_1149_terminator_v2_0","sha256":"a247d066d88bd8015ced792fb58ccce9bedda45c5abb7e7152609b43a3fb8d06"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0206_1156_starter","category":"mean_reversion","dependencies":[],"entry_hash":"de2a872d2f4cdac71bfc83333ecb746854519db381deb0a3df86c10f5f68c5a8","functional_test":{"relative_path":"mean_reversion/test_0206_1156_starter.py","sha256":"9044dcec39b1541348770a16a19d342c4c14e3b02d3ee043a2517f239a16330e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0206_1156_starter","source_available":false,"strategy_package":{"files":[{"path":"strategy_starter.py","sha256":"085683c7a719bcacb90bb14f8d9f64ff73eb8ab14b6bacb70f2c095e8399e09f"},{"path":"config.yaml","sha256":"2fdb27a4624feb11fc4ce3a4461c4f6c69bb289ad54f91e71e3be1d5e78f5eef"},{"path":"run.py","sha256":"bc09bb48a1a0e8907de7b9b1c232ab1b90a999dae55e93142974039b7cb1896f"}],"relative_path":"mean_reversion/0206_1156_starter","sha256":"6507b39c7d3a16b6e8c03c8ed28f949d454560ea546663224f63504d31e03fdd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0207_1160_up3x1","category":"mean_reversion","dependencies":[],"entry_hash":"a39e37f4ee5feed2b0014b1a6e0e37c894b2384bd827a85d08ce3517f247503e","functional_test":{"relative_path":"mean_reversion/test_0207_1160_up3x1.py","sha256":"4ccd28c3ca4e80827825ab0d9c4a0093c2f4c4a0405a24337f9eac5ab3d2b263"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0207_1160_up3x1","source_available":false,"strategy_package":{"files":[{"path":"strategy_up3x1.py","sha256":"c1aaf2e5349555f9f1f5a32f5a84f0941e2f53adbbc0d95918cfe74de5fae200"},{"path":"config.yaml","sha256":"653b052f40864927be5e065641429bcd1f2ce7ba47547eff9ac3956a90adcc76"},{"path":"run.py","sha256":"07a6b353b9cacd701d46a95b535e3d7f0eadecba334b05ebf3df82fdf8ba5593"}],"relative_path":"mean_reversion/0207_1160_up3x1","sha256":"84a2a5f6e6997c9fec54cbba84053c9d6dac6f207085656901996910b72e5277"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0208_1161_universal_investor","category":"mean_reversion","dependencies":[],"entry_hash":"e55c108b4883a260809e4639941550dabc1eea2b21d1af9459ab4b1df8bc5628","functional_test":{"relative_path":"mean_reversion/test_0208_1161_universal_investor.py","sha256":"41aebf3cfebf83fc6db550f6d8cf562b928be72387e3d7ddd3aa5894dd9b772e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0208_1161_universal_investor","source_available":false,"strategy_package":{"files":[{"path":"strategy_universal_investor.py","sha256":"0990c665801604f802fed8301660ee155dfccda52450dc4160e10e4dd18340c5"},{"path":"config.yaml","sha256":"e14e7adfe9a93e05f964129b9333b4a4ce650b1acab36921f7b41e4ab953247a"},{"path":"run.py","sha256":"4dd36bde6fc5719dc28a966aa4cd8bf264ecc4af6691545270e9c1dbfd85172a"}],"relative_path":"mean_reversion/0208_1161_universal_investor","sha256":"e76c7fa751e31794962da41c604e8c8f6e8ae16422b31cc5ee01f47a13187939"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0209_1163_gpftcpivotlimit","category":"mean_reversion","dependencies":[],"entry_hash":"3b98bf4c596a6bbbf130d8683187d67700a664b0ac7bc7d62526dbaaba7cfa80","functional_test":{"relative_path":"mean_reversion/test_0209_1163_gpftcpivotlimit.py","sha256":"b56deca40ec3900cf0b47e26ea294e2cfd4be22be73ca5a9f4636b208a2b4c59"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0209_1163_gpftcpivotlimit","source_available":false,"strategy_package":{"files":[{"path":"strategy_gpftcpivotlimit.py","sha256":"1f197260df92c912951a2c5ba202d20c8bc8e1ad3bc06b618ad66ad222e89686"},{"path":"config.yaml","sha256":"033781a1570c9f519d1d58c49d00810461da78db509365b3c378ff72b94eb0a4"},{"path":"run.py","sha256":"3c806f0a456774fe06044f8193003e258155bca62e4f0fa33a8d66a42e3f14bb"}],"relative_path":"mean_reversion/0209_1163_gpftcpivotlimit","sha256":"50fcb286caa40b11e02368548d064fdf381184502f89f5916f28307beeec88a9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0210_1164_gpftc_pivot_stop","category":"mean_reversion","dependencies":[],"entry_hash":"0c232ee54b5500b3246dd402067dc183a4a66d22e859bee7251131a3691b2ec5","functional_test":{"relative_path":"mean_reversion/test_0210_1164_gpftc_pivot_stop.py","sha256":"ee6cf21d597d63a66576486ad5be2f4bbbe11f07d725a4e8376f1897c13f2651"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0210_1164_gpftc_pivot_stop","source_available":false,"strategy_package":{"files":[{"path":"strategy_gpftc_pivot_stop.py","sha256":"806019cf7ec20aa1b4cb6d3ad6d6f4b282bd13bb15423a5294f369d833e48554"},{"path":"config.yaml","sha256":"757108daf1b65ae2133789e669b3c2e87395eb378f3190ab7d71ae38b3680bb6"},{"path":"run.py","sha256":"5d66729f6edf96c46f77704aec108c8a2aee5a02d89a31c933cbe0169235a93b"}],"relative_path":"mean_reversion/0210_1164_gpftc_pivot_stop","sha256":"7b226b29175fb98fb367942033b59195c8041768cbad4616db3c357f2ddf5022"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0211_1164_gpftcpivotstop","category":"mean_reversion","dependencies":[],"entry_hash":"22e36a9bdb63029a9fb9dbc1a5494bfcebc3c5f65b33f370da6030d065f43775","functional_test":{"relative_path":"mean_reversion/test_0211_1164_gpftcpivotstop.py","sha256":"0ff77cb983549cfd6442b10c567376074a0f1bc0ece1074e1024ba4dac59e4b1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0211_1164_gpftcpivotstop","source_available":false,"strategy_package":{"files":[{"path":"strategy_gpftcpivotstop.py","sha256":"1d6dd852a97169856bc81cfeaefd55443cc06d4c38be1ea2e40f9b142b9dcb9b"},{"path":"config.yaml","sha256":"ff02b4e1ddf31f9005a801ce598ccdd3d43b37f322046c13e1622ecfe9584ddf"},{"path":"run.py","sha256":"a9cbef92e733f0663e956edcd9c9d55a1729052c61a94b1f2c312923de1ec90d"}],"relative_path":"mean_reversion/0211_1164_gpftcpivotstop","sha256":"dbd0c4ec292526446d28e1cd6c9dc023b1fa4fbdf325dda59d0ccbae2f62dfc5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0212_1168_ea_aml","category":"mean_reversion","dependencies":[],"entry_hash":"61efc73f683b35a55019179cfabd7fdce65a2926010f82c03495603a56500ff8","functional_test":{"relative_path":"mean_reversion/test_0212_1168_ea_aml.py","sha256":"53f051c561e108e0356070def3c368022c3277621dc723772d47a0c0f20712cf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0212_1168_ea_aml","source_available":false,"strategy_package":{"files":[{"path":"strategy_aml.py","sha256":"b8ca3d16afbce1fd2c05a05685c4fb39876161e937a5505d3396382cab588d91"},{"path":"config.yaml","sha256":"9089870cf2192702533702c8ce5019f286d2ddabf019339d89dc916d3fab5a8d"},{"path":"run.py","sha256":"67cc10ae4fbc8ec0d9d17d8dafd145242b6f098ea3e920e04f44f091f368cbbe"}],"relative_path":"mean_reversion/0212_1168_ea_aml","sha256":"c646c7e9b7f76f938991068e03970215c5b7183dbb8b9f9e7eff2e67820aa404"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0213_1168_ea_aml","category":"mean_reversion","dependencies":[],"entry_hash":"26454cf0cf089e3198f1b8a3ceb89a1f51ad07a2791534a8d79d25e11b5684f1","functional_test":{"relative_path":"mean_reversion/test_0213_1168_ea_aml.py","sha256":"f1021e04127e35d7a2dfe351bac24785675b5acd38f20b0195615de08343e5fa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0213_1168_ea_aml","source_available":false,"strategy_package":{"files":[{"path":"strategy_aml.py","sha256":"b8ca3d16afbce1fd2c05a05685c4fb39876161e937a5505d3396382cab588d91"},{"path":"config.yaml","sha256":"9089870cf2192702533702c8ce5019f286d2ddabf019339d89dc916d3fab5a8d"},{"path":"run.py","sha256":"67cc10ae4fbc8ec0d9d17d8dafd145242b6f098ea3e920e04f44f091f368cbbe"}],"relative_path":"mean_reversion/0213_1168_ea_aml","sha256":"c646c7e9b7f76f938991068e03970215c5b7183dbb8b9f9e7eff2e67820aa404"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0214_1169_ea_ccit3","category":"mean_reversion","dependencies":[],"entry_hash":"d93d763df0e47a8080c2b9d2514ab7c3b94a6bd5351e5462c2ce471db639a90a","functional_test":{"relative_path":"mean_reversion/test_0214_1169_ea_ccit3.py","sha256":"09d2b7a8a6f00c6cb19f82d4409118c32b7af88d5ba3c9ae2d4f7f95fd5703dc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0214_1169_ea_ccit3","source_available":false,"strategy_package":{"files":[{"path":"strategy_ccit3.py","sha256":"90b7b65785f739c5318f568fc020fb271b0b6ecfbefa233ce0c860721fa36112"},{"path":"config.yaml","sha256":"5e7bfab8531acac36e59e53fd017265d24b15b6501aaa36b51ad2cab0b171f75"},{"path":"run.py","sha256":"6aa542f8681570acad2d8f0a979c4fe0272cdfc9397698a587e5df65be7978dd"}],"relative_path":"mean_reversion/0214_1169_ea_ccit3","sha256":"9c4a11eb7ab25ebab9c368c50dbcabb9bf4a7a4bf804f7c1be538b7d765f571b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0215_1172_marsi","category":"mean_reversion","dependencies":[],"entry_hash":"c2da18c8c239e84aee8a61d17b703bdd4710fb4923b59ee6c2a758c6d5a28fc7","functional_test":{"relative_path":"mean_reversion/test_0215_1172_marsi.py","sha256":"c69b57ad6f276eff90fe55a428c0a9b103852c43e95950aafe8fc0e88945abc6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0215_1172_marsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_marsi.py","sha256":"29e5b4be409bf34d4ee6507a290c3117ba70c07759287bad6f5f6b78bf40eb80"},{"path":"config.yaml","sha256":"60b8adc5b419db1229c158344f64e4c27ea6af38dad06315921ffcf2144906e5"},{"path":"run.py","sha256":"89ee213d6126e6138e024e9e5292641b27819647319fde1887689faec0815bb6"}],"relative_path":"mean_reversion/0215_1172_marsi","sha256":"fd016da9a7414b58adfc49e609ef12b6fadeb6f0e33cdc5152deb7906dc3cdd8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0216_1191_promart","category":"mean_reversion","dependencies":[],"entry_hash":"0cbede4c31d306716bd6e7e16a6e50e1fd80093fadc2e0464fd7d1ed8b929465","functional_test":{"relative_path":"mean_reversion/test_0216_1191_promart.py","sha256":"1f293f01914f9db1c10d209e03c141f2897938b65c00b90161f9c0cb33ded55f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0216_1191_promart","source_available":false,"strategy_package":{"files":[{"path":"strategy_promart.py","sha256":"5735ea038454b8d38784aeae86632bf82898b43d631066f80939075eb6cb78d8"},{"path":"config.yaml","sha256":"783d008fb90b98409535986c6cca58011f3f38bc79de5a8428583b64f874b21c"},{"path":"run.py","sha256":"36427b2036f94ea169cab2e195ac8bbef99696c0a3776cbe3bf0848871c6d5bf"}],"relative_path":"mean_reversion/0216_1191_promart","sha256":"de9be6c7b1291dbb1b3945bc4fcaf14b0547ca87009a62921af3a13c3445f59d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0217_1200_night_ea","category":"mean_reversion","dependencies":[],"entry_hash":"dd3b419580a302b20ccdfbbc8446777a85526d2b6cd643c4b82b230a2f2265da","functional_test":{"relative_path":"mean_reversion/test_0217_1200_night_ea.py","sha256":"400b8e367b9e515c7365ac5ac4ff408abf7eabe84886d72b870b1f6123ad1d05"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0217_1200_night_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_night_ea.py","sha256":"c7f1ed433b6b8e8c7090551051f6098dd9d6aa6c507e4bb9a02ea22cb933cdc9"},{"path":"config.yaml","sha256":"90f0f92d4f8c41998bd793516a0146359004b8785156455e4975bb52e6ddc80f"},{"path":"run.py","sha256":"04513119994877dc214bac3eebe2ca7ceac819ebf76e7a08e7d98375681b6ba1"}],"relative_path":"mean_reversion/0217_1200_night_ea","sha256":"f8df62628d18a89a29f195cb34ded328971d5be1f42d8ead5962ca746b1600a4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0218_1217_trend_envelopes","category":"mean_reversion","dependencies":[],"entry_hash":"5c10756807aa964b61b6c81aa979f3e49a162729de145da830bfa26f16ed4861","functional_test":{"relative_path":"mean_reversion/test_0218_1217_trend_envelopes.py","sha256":"e210aa0db2861ae8d0a3cb277fe978774b36667f8a51bf762482e59121646726"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0218_1217_trend_envelopes","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_envelopes.py","sha256":"dfee35e37a9e2bab2f969e325a64eed0047c3ed050c83f8cd842535c508ec023"},{"path":"config.yaml","sha256":"9e7189e41765eaf8e883e7bfba9a83fdaf8331c21be041b38252141b36abe3a6"},{"path":"run.py","sha256":"d66db4b8eebaa5f22026e1e2ce0558f0eb543ed8ae96653e1ef89170e8f959f5"}],"relative_path":"mean_reversion/0218_1217_trend_envelopes","sha256":"356e0602ac67df2e7504ec0ed9b6c8dda5dc4ab20e0cf13b457e22de49f6849d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0219_1222_color_stoch_nr","category":"mean_reversion","dependencies":[],"entry_hash":"ee12904ba6c852644b351e53d6de54c4b361330e7d60ef929393eb0efe13e1ed","functional_test":{"relative_path":"mean_reversion/test_0219_1222_color_stoch_nr.py","sha256":"e57a431302d9593b6811a2ff1bf3e0a776a108dc6dbcf7f0ca44d9064d3879ba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0219_1222_color_stoch_nr","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_stoch_nr.py","sha256":"7b2718359fb9422dfc6df915a8a021bbdaba090b03376aef5980b39cc65c0564"},{"path":"config.yaml","sha256":"04fd382b86e22bb09e26d3d253947b34f2fa06cf171a9b389abcddbb25556dde"},{"path":"run.py","sha256":"34f4525f5678eef37b2f7e877c9dafb4b7e3e370e96681cecaad07f82729bbf8"}],"relative_path":"mean_reversion/0219_1222_color_stoch_nr","sha256":"38467bd08ae73b1c3277897e793294210cb0449185b231e6ad26674b767a74eb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0220_1224_color_non_lag_dot_macd","category":"mean_reversion","dependencies":[],"entry_hash":"b812cd3d7e6b3a752ab2983c28dfe9f9c8bb3c9edce1da4ec9e6911d8e0bd5ee","functional_test":{"relative_path":"mean_reversion/test_0220_1224_color_non_lag_dot_macd.py","sha256":"2f18293a62257efc9f5a1665d255a556e71445481c43bd43a40fe044d9a9e76c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0220_1224_color_non_lag_dot_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_non_lag_dot_macd.py","sha256":"8d9467556d372a80382fc1cff1fa31f6769f7f0819c53dcc84b984a9b1bbdfaa"},{"path":"config.yaml","sha256":"afd61920a02eee1588a2cb8ed9ab497745ba420b84fc10f0c8b4cd60abafad0f"},{"path":"run.py","sha256":"ee16710a6fb7301a959db313dbc442b9457d8437132d0f33e894afa74b37b0c2"}],"relative_path":"mean_reversion/0220_1224_color_non_lag_dot_macd","sha256":"8c79f1749029ea8ff0747d02b00017bd53edd3b543f03990916a6b0da53b7ea1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0221_1244_bbands_stop","category":"mean_reversion","dependencies":[],"entry_hash":"4e2929fb49c6387b1470e9fb96aa0eea45be6207a75f9da9751f54d79c696a42","functional_test":{"relative_path":"mean_reversion/test_0221_1244_bbands_stop.py","sha256":"4a8d3ae718c8c077194ec4a93e0c8fbe5a2d38d7e58d4c80de0afd56071e2a38"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0221_1244_bbands_stop","source_available":false,"strategy_package":{"files":[{"path":"strategy_bbands_stop.py","sha256":"18a8a9b7ed921c5aca16dbf6e93e434aa3bef46e285d5f16ee205cdcbde77ded"},{"path":"config.yaml","sha256":"c1552dd2849d7cf4db1002108f02cfd6e8b39cbcdb32453752a897a8d5d5d3f2"},{"path":"run.py","sha256":"c676b17ba9c5570150e11d428094cf63c8d0f24fa127aa1aadd9b9ae049b9c5c"}],"relative_path":"mean_reversion/0221_1244_bbands_stop","sha256":"d95b7da19bbc65659fa136f646d7d08eb0b26d9bf311aa3a171d050b32de540b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0222_1281_asimmetric_stoch_nr","category":"mean_reversion","dependencies":[],"entry_hash":"185dc1e245872ee7071be32a8fe1b980b93822befb1001a9d50b8235f92f96cf","functional_test":{"relative_path":"mean_reversion/test_0222_1281_asimmetric_stoch_nr.py","sha256":"3de1acd5bec20d6f2db9a8d0fbd1a152a90d0e6acd5c02f63f7c2c858d5489a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0222_1281_asimmetric_stoch_nr","source_available":false,"strategy_package":{"files":[{"path":"strategy_asimmetric_stoch_nr.py","sha256":"11a66cc7572c0a859dae5e45b355652db6e932fb4057d6a10537fb5cb188c536"},{"path":"config.yaml","sha256":"8df90d198bb22fd2d436811df8c8e4e53f1b79a60aa7236afba08a8f829d0033"},{"path":"run.py","sha256":"e06d44824b59d25ed8a05b33124bd8b89f7b12de0181d0c775151826475a9d4e"}],"relative_path":"mean_reversion/0222_1281_asimmetric_stoch_nr","sha256":"ef1e0ed2753ec4c1803470d4dbeac82cc78698e2fdaf04a32e1c4eb3e91e11b1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0223_1282_xma_range_bands","category":"mean_reversion","dependencies":[],"entry_hash":"03e7208bc7629094ca22c1d5d5d621bd50c6543e56f30b42ac74e67c8fa42b3b","functional_test":{"relative_path":"mean_reversion/test_0223_1282_xma_range_bands.py","sha256":"da70de55ab0fcfdea7df1f7abf434af1f893b8d39295c02bc887f56b1d2f156f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0223_1282_xma_range_bands","source_available":false,"strategy_package":{"files":[{"path":"strategy_xma_range_bands.py","sha256":"673c216e120039147b2ac16ab9ed3df43f0559a9f45f993f5d39cdd23b831f08"},{"path":"config.yaml","sha256":"29be7b09db084e16f9cbf1cb09ca3982144967d2f213cc409ba92f29b76a4c93"},{"path":"run.py","sha256":"d30966d588326435eed99373775e2d4a3801ac5fdd0fd3ba83444e59816faff4"}],"relative_path":"mean_reversion/0223_1282_xma_range_bands","sha256":"72cef5f0cb5521b5d24e35327b09fed2bf751589df55a13b961dbe255413d5f9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0224_1300_bb_squeeze","category":"mean_reversion","dependencies":[],"entry_hash":"4cf32c7193a474145120c9e9346de9d9f16ed8025c1882b78d5e4e5015b83754","functional_test":{"relative_path":"mean_reversion/test_0224_1300_bb_squeeze.py","sha256":"cf77f22225111a1e789e649e5d5ac82849cc17605c187ef7f162335712c9b4d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0224_1300_bb_squeeze","source_available":false,"strategy_package":{"files":[{"path":"strategy_bb_squeeze.py","sha256":"d1de1c95d60f258fbc58db522c9757863457e06c6520081854ceb93ee67736c6"},{"path":"config.yaml","sha256":"ef7c19743b1bc73241eb31f92336947bf6b2b4754d2b77db70249576ffc51124"},{"path":"run.py","sha256":"6c776560eed318848ea16d907259cd74a840bc6c4bec50ba1412b7788274f563"}],"relative_path":"mean_reversion/0224_1300_bb_squeeze","sha256":"4ce37dbab3508ba2554807d775ea860e998c7349febcc7d6912c40f606544d82"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0225_1343_three_crows_soldiers_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"61712e80022a34f72294abe4f72d800c39febcccac47a8a498b8efbde416b39e","functional_test":{"relative_path":"mean_reversion/test_0225_1343_three_crows_soldiers_rsi.py","sha256":"973a600cd8cdd1184df6e97d33bb7dcc9bf2c34ecd6ac6588cea69a9a84ef5af"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0225_1343_three_crows_soldiers_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_3crows_rsi.py","sha256":"2c21c732b19cc079b16d8524483283e9a36fa387b07c88fd624e817379496769"},{"path":"config.yaml","sha256":"8eb6d06a3424049eab50644546dcb8780e5cc7475780db9d3e3301153748775e"},{"path":"run.py","sha256":"6f7457bc5a0614fb7d80341cfa608e95481dbb90484d750378c172276b617c39"}],"relative_path":"mean_reversion/0225_1343_three_crows_soldiers_rsi","sha256":"e7923fa320f49406d337f3b2e13c8c2bcba1caafd457c8a6bad8c6b248613967"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0226_1344_three_crows_soldiers_mfi","category":"mean_reversion","dependencies":[],"entry_hash":"f3c33c55fcd1d537faebbb7933b8e80f48743d002feb03069a975e2e7597bdea","functional_test":{"relative_path":"mean_reversion/test_0226_1344_three_crows_soldiers_mfi.py","sha256":"3388c20caedb2e5e20091a838f8edc4753a8519bdb907d9d7c4a8170e0283a6a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0226_1344_three_crows_soldiers_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_3crows_mfi.py","sha256":"21ee2b4cb91d27d2b03bf1ed493f57c8bda84af69e184f2875ee12b5bdf0880d"},{"path":"config.yaml","sha256":"a41b58234417c04e09a2883a2c3f7be0ba60347540f211579477b65f89adfe60"},{"path":"run.py","sha256":"24dff736feb20b227d27d3df95f79f65bf4b925d4b871fc59174fb71938dcee8"}],"relative_path":"mean_reversion/0226_1344_three_crows_soldiers_mfi","sha256":"87c8ef13c022dca0f4fd0f51b6fa0c5462221357d4c5668216d951344e83cf7f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0227_1345_three_crows_soldiers_cci","category":"mean_reversion","dependencies":[],"entry_hash":"2281c2d99fcde7f3aa5f412a17cf68adb53a95d231f726d6e0c4958acf6d2276","functional_test":{"relative_path":"mean_reversion/test_0227_1345_three_crows_soldiers_cci.py","sha256":"dcbb39dd54dbb8de3a48268608bf162b1a9d97b137062bd141e1a3043bc432c0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0227_1345_three_crows_soldiers_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_3crows_cci.py","sha256":"68cc9ca5bc9d7cdafb9a35b57e845fb51d0feb3a736eaaefa2f55b21c02257a2"},{"path":"config.yaml","sha256":"9c7a7ef8fb6bad817a70fc122a0e9fb98a4178f3513f06672cbbfd89fb7e941c"},{"path":"run.py","sha256":"9f9616421e9ebc8385dbe34c3a5a31674c053f91b51eb4be9fc17aa9c50cf610"}],"relative_path":"mean_reversion/0227_1345_three_crows_soldiers_cci","sha256":"342b5363adb29b98a88133f1a1822ad4d345a8c5d6b2dfbabfdb2f35ec7155c5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0228_1346_three_crows_soldiers_stoch","category":"mean_reversion","dependencies":[],"entry_hash":"642bc744644f7dead753e7899dc5a9f8af50d475d89fd02759b9f187aca610da","functional_test":{"relative_path":"mean_reversion/test_0228_1346_three_crows_soldiers_stoch.py","sha256":"52c649311d4282367c5cebd9623700244e49ee1c224ab6c286ac7d3979a107fe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0228_1346_three_crows_soldiers_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_3crows_stoch.py","sha256":"accef4fffea1a4ecbc9d36644e99439466e33d0d87e93acea14492135e21a50e"},{"path":"config.yaml","sha256":"52e78a0b30cf1cbe38d8381e0c24da4330e23bead3959f4a4404232b7626f868"},{"path":"run.py","sha256":"872294250ec4f6ea2d4b1335ba4e8220fd02430472e215f016978994bf3be013"}],"relative_path":"mean_reversion/0228_1346_three_crows_soldiers_stoch","sha256":"cb2aa1f2ae943c8f6d242553a4ec066a1e80001c988f1963a7d8041e3c5b897b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0229_1347_reversal_candles","category":"mean_reversion","dependencies":[],"entry_hash":"194da1c3f1625d83b85035b39b999597da10b06041dc080fcb315ad95c434282","functional_test":{"relative_path":"mean_reversion/test_0229_1347_reversal_candles.py","sha256":"ad9c6b8bee53c14f1d68971f1133ae47eb94451f302cddbb895dadc8706860ed"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0229_1347_reversal_candles","source_available":false,"strategy_package":{"files":[{"path":"strategy_reversal_candles.py","sha256":"349e95c6efba798fb403485da0e3493d1e16027cb89f8204bd96957070e10a10"},{"path":"config.yaml","sha256":"dd35ecd187c5b57ea62bc143a1b84fe1bc760c031894a0221720a9107b007548"},{"path":"run.py","sha256":"0869f638f4ce6c901771c3dd75dca42fd86bff024160ef89781d8723935fe251"}],"relative_path":"mean_reversion/0229_1347_reversal_candles","sha256":"5bb05619d536337ccab010a1e2b4b07393bd750a4d0e7a1a3145ccbdfe231f74"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0230_simple_connorsrsi_sp500","category":"mean_reversion","dependencies":[],"entry_hash":"c629ddd30e0a3584bf977515de21a50f281576964f30554340ecfc290a3b67ca","functional_test":{"relative_path":"mean_reversion/test_0230_simple_connorsrsi_sp500.py","sha256":"b22808399359f8a19836872f52e221725da8ff24d1d524ee03745ebac4220620"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0230_simple_connorsrsi_sp500","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_connorsrsi_sp500.py","sha256":"0f31d85a4a61b9b9b681ec9f0a4e1070113850bcb64eee2a97354ec82b2a6ef1"},{"path":"config.yaml","sha256":"f6a977a61e967424816e3c9c0ed0cea13ecf3711fdfe204d7aa5d53a07593b07"},{"path":"run.py","sha256":"636805ac59bf163716ea665a6511a936b497a5ccf3e72dc04ce3fa1704e55a93"}],"relative_path":"mean_reversion/0230_simple_connorsrsi_sp500","sha256":"3095d71d186902699d52d69e88031bfafd6f85a6c27fe3666b1bb08c0265ee73"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0231_rsi2_double_returns","category":"mean_reversion","dependencies":[],"entry_hash":"e1d61799cc8d29cfadcd2f81491b643f8651b72e7890552864ef8b2cdb395531","functional_test":{"relative_path":"mean_reversion/test_0231_rsi2_double_returns.py","sha256":"137fe5984363311e45a2118bfd7f48b3b8a9a5f00d974cd1293cafe3e066648d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0231_rsi2_double_returns","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi2_double_returns.py","sha256":"86b69365530646ab8f831f83c3d0d0d0f85ecce7a33eaf6fe0f22cfd5413eedb"},{"path":"config.yaml","sha256":"1696b7697b2becd4326c51b7a1a746dd5170746921daa53f1feaf03811e18022"},{"path":"run.py","sha256":"42956b36aa995a5aae6f5694b82e8164de382d135cdf6d786b46f75cb6f300a9"}],"relative_path":"mean_reversion/0231_rsi2_double_returns","sha256":"75c7fad484864b32ddd88018108b31d8217e523d224295770efd33b868a6501f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0232_crypto_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"6fb1b0a4d021881ac6fd04f2a0655a1ab0e493cc409b158252f160ca37df377e","functional_test":{"relative_path":"mean_reversion/test_0232_crypto_rsi.py","sha256":"65856ebbdc7845201e096598dbb22b4ba926cc340f51176e1ea5e1a6f3e6876f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0232_crypto_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_crypto_rsi.py","sha256":"8c56af9014dc2b331a3e2fae0bf7f3149a4a3ab50432c51c06d115fb6a1cde51"},{"path":"config.yaml","sha256":"ac1e0d27319db683330e8514acfa9f60ca2f4b8f2fde7bcf7fe6d92013914932"},{"path":"run.py","sha256":"bf4f2b1c47dcff4af1c6c30bc78bb2cdf7afd45441ecb801d783643345e5df06"}],"relative_path":"mean_reversion/0232_crypto_rsi","sha256":"364f7759e3d9b0bf0052c56240cd6aee6c8aa864c11e0aa5b5182c95799a4566"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0233_improved_rsi_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"cec1693818e6454f8f46713f5c90bfc27bb7fd0ff1ad0e009b0f96252cb0a6a2","functional_test":{"relative_path":"mean_reversion/test_0233_improved_rsi_strategy.py","sha256":"5930ad7d23b6a1dc97148b8e998eff3e9883e069110b00660024530fdd85798d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0233_improved_rsi_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_improved_rsi.py","sha256":"a4e29511911310c229fdac24bef93333a0aedfbb21b35a82471573dd3ba7c4b3"},{"path":"config.yaml","sha256":"c9b81a762a989656fbe0832a1a2dcb56779162aa5fb7d1db90a6ed66c23f3568"},{"path":"run.py","sha256":"d57118f42be965225f5fd59812ec43e4437ad24483fe65885b835f90caec1c4a"}],"relative_path":"mean_reversion/0233_improved_rsi_strategy","sha256":"57ff1ff0dce0d454655f22904b20634fadc7539538f3f8912be13bb6d97103b9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0234_0063_multi_divergence_ea","category":"mean_reversion","dependencies":[],"entry_hash":"a82d651d2a456e2b059c7b45bf225f1b3f4efba99e0c4cafeb6085139228acce","functional_test":{"relative_path":"mean_reversion/test_0234_0063_multi_divergence_ea.py","sha256":"ba9d8226362ca0e321997170d5c588166272752ebec9c00976a8f467b40f74e3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0234_0063_multi_divergence_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_multi_divergence_ea.py","sha256":"ca4d2dd4f8475a31e370be4979dcbb7932f2137786f93f79955942669dd5b179"},{"path":"config.yaml","sha256":"917e30d3b5f2b3a7c0138a122a43ae4443a8227ee89bed79be65e3cbdc7316eb"},{"path":"run.py","sha256":"305055079b54a29bdae329b1b5f929cd3833d386de582b62ca8aed4c55f9d1c0"}],"relative_path":"mean_reversion/0234_0063_multi_divergence_ea","sha256":"3367fbcf9a78dc716fb195168e1b621d5a67d81bbcb083541240a2b955a1a582"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0235_0143_jmaster_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"a08cd60c4472fb4828ad02be5689ce02063031d55c4d2547b28662c8729719e0","functional_test":{"relative_path":"mean_reversion/test_0235_0143_jmaster_rsi.py","sha256":"ac5fbac0a97bf07897877b2e86e650f48bada15706d89ece5124118446367b86"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0235_0143_jmaster_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_jmaster_rsi.py","sha256":"d7d5c2bbd3025cb82594e5c2af068dad59f820a7a991f7aeffedd1a46616b8c2"},{"path":"config.yaml","sha256":"930abbc446b3026bc8ece79a0f6e33fa455b1c76a5e27dc5f777479dd6736b88"},{"path":"run.py","sha256":"f840b11ead58d43574bbe06bb94fba2240cbc5db0a4fdc6867741fbeb9f3d218"}],"relative_path":"mean_reversion/0235_0143_jmaster_rsi","sha256":"9e253efdceb7254d864c2cae1284116b427bab6546a9dd05cb2f8c9a14097609"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0236_0146_rsi_ea_v2","category":"mean_reversion","dependencies":[],"entry_hash":"88ea3bf486a92f83e9c62c81628b8ece3f06b745bcdb2d2c232d69cef08fd083","functional_test":{"relative_path":"mean_reversion/test_0236_0146_rsi_ea_v2.py","sha256":"6a1ac892cd70607068c06adaa1a9379c8555f1917a9159908eafea25dd14255a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0236_0146_rsi_ea_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_ea_v2.py","sha256":"e0d3d49fdbd8bc1b951224ccf8c1de56cb8a743c4feee0a106be044c91eafe9b"},{"path":"config.yaml","sha256":"156fb603978b2ed8c3cb8cb3c7e679427590c9f37744375bb3decd123293402b"},{"path":"run.py","sha256":"02d99e25fbbedc9676f80c4c713e503cb810f0d0aed4eaa37840bfe0029aa2b5"}],"relative_path":"mean_reversion/0236_0146_rsi_ea_v2","sha256":"be63a227dde0708088414b5a27946e6274d8047a6ee38f0b2ce6b60ba8f1880e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0237_0328_aocci","category":"mean_reversion","dependencies":[],"entry_hash":"66a56ec58ad4bf636c1b4d1dc2fda8707d696ad6debba1c3a23f9b6962a9ca7d","functional_test":{"relative_path":"mean_reversion/test_0237_0328_aocci.py","sha256":"f52562ec4e8f9b2a92fdf9ee0ba3e3d63a014d61a3c8ae883872341d07ae0967"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0237_0328_aocci","source_available":false,"strategy_package":{"files":[{"path":"strategy_aocci.py","sha256":"ff9b9399a3a643d2e724299e273f1bd9ad1bcfe811191cc087624d4f4c2a3027"},{"path":"config.yaml","sha256":"14b0b270388ba919466f9f7c51ca5de4da1eb775482d6b9951beccaf399f551e"},{"path":"run.py","sha256":"9a51d82a6a18369b0283b428afa540b6ae903c5061d331977c40d8499116c241"}],"relative_path":"mean_reversion/0237_0328_aocci","sha256":"18fdca891f6d6998f7e63c29f9726c4ea8122922b240f2d3aa106daf95dd98e4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0238_0369_ea_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"a321fb22cc6800b2d12c29828cb32aa22266729b749202c5e75ed1a53cd03dfa","functional_test":{"relative_path":"mean_reversion/test_0238_0369_ea_stochastic.py","sha256":"1dabd043e3fb374e2f4f75e81fb017f2af5970533dba702d4476827885dfad29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0238_0369_ea_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_ea_stochastic.py","sha256":"dd99f73144d6b9ce9e82cb51a1167058f9b76ad41d0afd01dadc03bd6d2fcd1b"},{"path":"config.yaml","sha256":"a6198960e363e925e2aedce996a47ffd0443a31044994c7e8e8da00242a26c99"},{"path":"run.py","sha256":"acd6ced1f4c4f17ade91cf3d1094f881849ba1e4f2504eb6b0db47b4980ab741"}],"relative_path":"mean_reversion/0238_0369_ea_stochastic","sha256":"2190b1d03f06d6aa4e591658e6771a774c5ae74c07faaea3a29aabbbf2efc821"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0239_0515_kdj_trading_system","category":"mean_reversion","dependencies":[],"entry_hash":"a8e9b50ec88f8f4d8b7db1356a9da1983154c2cfd987c3ff6d47809f2cc5ce3a","functional_test":{"relative_path":"mean_reversion/test_0239_0515_kdj_trading_system.py","sha256":"8edb252e777630bdacdc3c6136c2e2579629e07849395ea677db6563b22438bb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0239_0515_kdj_trading_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_kdj_trading_system.py","sha256":"f1408382bddccb243cb8adf818ac18edc9956b08ef21160b6e3ba36418085d7a"},{"path":"config.yaml","sha256":"70c76f94ea3b95f87a1fb36f6054d84cf07d3af1e8787f2e2fa0e023912eac0e"},{"path":"run.py","sha256":"05e99fdfa436ebff3a9a025ec0d43448b3bba8903c72531984ece9954f9e83ee"}],"relative_path":"mean_reversion/0239_0515_kdj_trading_system","sha256":"d33d60c8ad124080037420420eee3d18ac9eed3d35846297549b9691dcedeedc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0240_0516_greentrade","category":"mean_reversion","dependencies":[],"entry_hash":"ea79a28147ca10d53fc699b7aa143279ebdfdf079af60b47b2ac7e4cbf913145","functional_test":{"relative_path":"mean_reversion/test_0240_0516_greentrade.py","sha256":"606dfd601331e45e03f3608d2c575b092887e0d4a6b76ed586e3d1b30e512b3e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0240_0516_greentrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_greentrade.py","sha256":"fe8e604f285a9487cfb78466315c99ca4ce3f5ba9b8ea5e340880f3ad8323d1c"},{"path":"config.yaml","sha256":"22f3c61cc505b84624b1e436670497718c7abda1cd3c7e54fd48a2487c0b4ea5"},{"path":"run.py","sha256":"eac931339605c6d4532759b8e8a5e798aa0813277eb7c4b748cf0e9d7e4b303c"}],"relative_path":"mean_reversion/0240_0516_greentrade","sha256":"9e6717f2c7e5619623f678800ab5855ffe6bc65dd5dbc1530eecde4c6c41dbf3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0241_0524_rsi_eraser","category":"mean_reversion","dependencies":[],"entry_hash":"135cc12ab3eaf35b464d4bc7d61e94f1dd15c662ca146d4e8b97c8806216bf2b","functional_test":{"relative_path":"mean_reversion/test_0241_0524_rsi_eraser.py","sha256":"09e210fab9e30cb65b5767e465c73caa8fe286b67d628ac40f96e5abfcdf790c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0241_0524_rsi_eraser","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_eraser.py","sha256":"e4d0e3b36d3e7933290263ab53a9fe3ffa0e2c6094cfe85e5f35333ee1d2a85a"},{"path":"config.yaml","sha256":"2e3afd648b55484de5db2be2d308ca5ff07195fde10dea3ffb750c34f36c1792"},{"path":"run.py","sha256":"714d3f6b7134aa626438863397cd067e13f101005d868195b3efa4d495bcd4ed"}],"relative_path":"mean_reversion/0241_0524_rsi_eraser","sha256":"ba3943297841396626f2701bbc164b2e1bf94b0d0716e5410864a2f000d1284d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0242_0546_anubis","category":"mean_reversion","dependencies":[],"entry_hash":"e2cbc3be1eec5cc1d62b0da228a8a89357fff19577b937cedfc250e63972e597","functional_test":{"relative_path":"mean_reversion/test_0242_0546_anubis.py","sha256":"c7563eb1e636db1ce50e52ddd1819d84a00f6eb25e7595777cb08a3c4de29ff3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0242_0546_anubis","source_available":false,"strategy_package":{"files":[{"path":"strategy_anubis.py","sha256":"fe38ca214a5fdf3bd0329f4e649c5fb77c0dcb7fabefafc7793dfbec0708bfd0"},{"path":"config.yaml","sha256":"b7dbd23b7e620d000b864820f1c45f512ea4a4f17e4f3c59736d69ece0284b15"},{"path":"run.py","sha256":"56032a1ec634916448dc3e7f929dd9a40260a8d77d7cfd9cf6b3586ca549653e"}],"relative_path":"mean_reversion/0242_0546_anubis","sha256":"00857265440424f8859b3f0ecaad030a642fde536a00d1fdd98513b70f0c43bb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0243_0565_icci_ima","category":"mean_reversion","dependencies":[],"entry_hash":"6db5cab623212c5066137f49e51c08845e12107187aa03f9ed9e78d10151a5ff","functional_test":{"relative_path":"mean_reversion/test_0243_0565_icci_ima.py","sha256":"f2f5b9ab3fe7fb3b67519c12ef819d227d2e09c13271c275d0601f1de4f1e37e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0243_0565_icci_ima","source_available":false,"strategy_package":{"files":[{"path":"strategy_icci_ima.py","sha256":"31d3bf5a3e7fb19ba4550e21df230b3ddd512d1da892c7fc4bd29d855dd3f4fa"},{"path":"config.yaml","sha256":"c90ed0e895aaf4cf7d0e11ff3cc28dd5de0fa00fad423be6d12916fec7bb82e8"},{"path":"run.py","sha256":"4d0ae32b24f3215aea02af169880103407310e60c771d41def698491e2c39ebf"}],"relative_path":"mean_reversion/0243_0565_icci_ima","sha256":"411404339ae3a0d28d92a4e409954275da2e3ebfd3202851419618b184328e88"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0244_0583_istochastic_trading","category":"mean_reversion","dependencies":[],"entry_hash":"b019578fae24011e28e6b454971e0c9018a2f15ba02d975fe8d17741645d2617","functional_test":{"relative_path":"mean_reversion/test_0244_0583_istochastic_trading.py","sha256":"426fef1ed5194166dead20fcc4c57178177ca1e4bd11a5f779a87b71c35aea4b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0244_0583_istochastic_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_istochastic_trading.py","sha256":"bbb313e725e0a9ae9d0b6f9a8a6b29856fa5d9e48b37f973cf46ce9bd5b6c939"},{"path":"config.yaml","sha256":"e12dbd9672139b7dc8f4109e44b66b577efc89c8d049ddf80c70a48af1f972aa"},{"path":"run.py","sha256":"06ad6241fe316efda8d5587b9d8a313df4b08c9b7a11b9d50fae0b0c0cce8a01"}],"relative_path":"mean_reversion/0244_0583_istochastic_trading","sha256":"df98662a81b696a15b7386a47ca9bf6adade951e084402b10d2df37af9a9cd4d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0245_0622_trade_on_qualified_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"b72fb755fb6571a98df2a7afc78c4a27bc8d04347c4b7d298b06012ddb3f75c8","functional_test":{"relative_path":"mean_reversion/test_0245_0622_trade_on_qualified_rsi.py","sha256":"3c2f82db20581d43b64695b38199c021dc602e218c0c7d6f7230faebfd519e00"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0245_0622_trade_on_qualified_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_qualified_rsi.py","sha256":"968f561ffc2cc349986c88b02631246f9b6c51702a29f5bffafa122dd1df2e20"},{"path":"config.yaml","sha256":"04048ee421ec260b60d0491dafcfe8b9c80b5269c20c381c2710b14ec26d32eb"},{"path":"run.py","sha256":"a46aea7374b6c74037b3b566893f8d08c6f9ec124ed117d81956d3166afb5489"}],"relative_path":"mean_reversion/0245_0622_trade_on_qualified_rsi","sha256":"ad7f2bac906acd0465eb755079434641bb38132d4f0ba59417ad3e8b17bed490"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0246_0653_rsi_ea","category":"mean_reversion","dependencies":[],"entry_hash":"46d13f706e8c24b613b5b96c6988526d1359257bda49760834f6b9697d0ee001","functional_test":{"relative_path":"mean_reversion/test_0246_0653_rsi_ea.py","sha256":"aa12b4213d061d057256f3fdf78eec3370116eafd094a17faf55179cb6557c29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0246_0653_rsi_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_ea.py","sha256":"04ffa59c800c8aac43b81103883d54fbed780d816b6d125f998d40d2d1c09343"},{"path":"config.yaml","sha256":"85880b2f2c51a99ea1552145cb0d6aa0b9d147fea76b57b321103dcec64f81f9"},{"path":"run.py","sha256":"5b33d9cb22598cb503811d8c65b0f4df4e84d4327f3ed2317e670ddfde82118c"}],"relative_path":"mean_reversion/0246_0653_rsi_ea","sha256":"9b06106e4c74edfe6a24ab47e1dee8aa672e5bf3d362a4c86e1c8d2946d53026"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0247_0714_cashmachine_5min","category":"mean_reversion","dependencies":[],"entry_hash":"50d7046fd8fffd181dadfb74b75e852b70e2528563dadf4ebb793eae15be83ab","functional_test":{"relative_path":"mean_reversion/test_0247_0714_cashmachine_5min.py","sha256":"4b2a5ec1d500ad254b2d5bce8a5241bba700be458e7ea00e7b4ac289f3ff304b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0247_0714_cashmachine_5min","source_available":false,"strategy_package":{"files":[{"path":"strategy_cashmachine_5min.py","sha256":"3b6b016afbf350e9a34711bad50ce045946e5462107fc10057011353880febdc"},{"path":"config.yaml","sha256":"6d11a1f81a5848d66c19af35e7fe251af1cd5db8d16b6b672c8796038ead3d47"},{"path":"run.py","sha256":"770bd9197b374c82dba85a6c78827868151fc1093a6532a30ca545cc3b8ee671"}],"relative_path":"mean_reversion/0247_0714_cashmachine_5min","sha256":"907f7353bf5e0c6bbdb1a31ee22d0ae23e9d91df0409e3b2767a8245f7dace87"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0248_0722_angry_bird_scalping","category":"mean_reversion","dependencies":[],"entry_hash":"8fec121f816a8c33baa96d550fa4bee6936e6a9b0016cc63226eff2e7de29b15","functional_test":{"relative_path":"mean_reversion/test_0248_0722_angry_bird_scalping.py","sha256":"3df6cff08dcea21450bc2c0ea422ab0db2731e7167dbe92b0fe06b83c834c837"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0248_0722_angry_bird_scalping","source_available":false,"strategy_package":{"files":[{"path":"strategy_angry_bird_scalping.py","sha256":"b9665a6663c61247a5d8fd88b14cbee79951e7941f57dbc328f8a16498f596aa"},{"path":"config.yaml","sha256":"046a0ae40a79612c7cde62cf451fe33d3f7fcd7b9a1b013cd4e098e1e012fc44"},{"path":"run.py","sha256":"124c6352b15e4c425d03b90080101c561b93ddf652dc882ea6d599f678f99e13"}],"relative_path":"mean_reversion/0248_0722_angry_bird_scalping","sha256":"1244797d2faaec0a59acabb8b5a6e7f90249d382beffc250f83cc66434ea4d79"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0249_0736_exp_rsioma","category":"mean_reversion","dependencies":[],"entry_hash":"2413e62e35fb5e6b2ee89413d085164eff825d21123873c39bce720c2c612b4b","functional_test":{"relative_path":"mean_reversion/test_0249_0736_exp_rsioma.py","sha256":"a88ab08ea17b7740f2f5683ac71b95d9ef136fbb5bb7d642494d177d10d5de4f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0249_0736_exp_rsioma","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_rsioma.py","sha256":"f7c30a0db999e19ab17e95c2215dda8d137f36ea0a5af4c0a5ae7f86d74d100d"},{"path":"config.yaml","sha256":"d24c2eeb900c161bdb5ca6c2a8836a502fc812821d1f00cd26a23a72a5a6b622"},{"path":"run.py","sha256":"f55daeacd19545af5a95bb0a2e90cc6f17e40e684ee892c22576173e57d08f41"}],"relative_path":"mean_reversion/0249_0736_exp_rsioma","sha256":"aa31f00ef9062aa221263d0461c54b792c894873f09cf2428bdff5dc59ffd90b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0250_0748_the_mastermind_3","category":"mean_reversion","dependencies":[],"entry_hash":"caad4f4121bc56fcb49992e6bbec407fc79002aa8f84a0a54fb8ef0b75dc0203","functional_test":{"relative_path":"mean_reversion/test_0250_0748_the_mastermind_3.py","sha256":"75ecf981550332e6eb88ed2e13a2bd0dbdb4a5ccc5e1c1b95516b3b7e0834576"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0250_0748_the_mastermind_3","source_available":false,"strategy_package":{"files":[{"path":"strategy_the_mastermind_3.py","sha256":"4433d14b015b0ee7614d132f4e97f9191f7e582e8df89a8b7b1dbb12a6308efd"},{"path":"config.yaml","sha256":"540a29c960ef64306910002b3ca3daf1c3675928f3681f4e8f278b67915116f4"},{"path":"run.py","sha256":"898c2017134d46884485f25da6b005551f0f37c66064fc9d88909823c455949a"}],"relative_path":"mean_reversion/0250_0748_the_mastermind_3","sha256":"ae9266c61a55f9c17d5a07beca7814fa9ff45818497cd35da12f4b888ff81de2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0251_0750_the_mastermind","category":"mean_reversion","dependencies":[],"entry_hash":"99fb0985254d9918d7e74878a3750de1cb018665ca4d271de8351936b58912e4","functional_test":{"relative_path":"mean_reversion/test_0251_0750_the_mastermind.py","sha256":"e47bdcebf2c8b8f2ab687e963f370c2f7ca9f2fcc19633b453658689a6a6c463"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0251_0750_the_mastermind","source_available":false,"strategy_package":{"files":[{"path":"strategy_the_mastermind.py","sha256":"54a92e794c0362e01bfc66be087e4189484948d8728442d98d4f71dfc5055e57"},{"path":"config.yaml","sha256":"c44dcf7684296071451ea3ba0d50fdcb5285f8e747e64746ffb38adeb5d5f7ec"},{"path":"run.py","sha256":"3cddbe580dc0d0fccbd41d681583bda02eae7d9c132b85788671cbdabbd07100"}],"relative_path":"mean_reversion/0251_0750_the_mastermind","sha256":"cd3d4a77116c78c5ca76e2533d24e9745cfb0f45d7386bc7fc938489900b1aca"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0252_0753_stochastic_three_periods","category":"mean_reversion","dependencies":[],"entry_hash":"0af7a3231e9ddfe8bb0cffcd2779c4046e3249dcf19b163a3fb44ab11785332d","functional_test":{"relative_path":"mean_reversion/test_0252_0753_stochastic_three_periods.py","sha256":"aa99b63591483f998a440ae9d6fb7395c8bed5ad6ef4419d037d31c538c206e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0252_0753_stochastic_three_periods","source_available":false,"strategy_package":{"files":[{"path":"strategy_stochastic_three_periods.py","sha256":"d358b52f9af04412e959f8fb47a4dbccd23d9257bc58855576e5fbc1d9018aae"},{"path":"config.yaml","sha256":"6f3f32d7d530df78374d79a47fba25293fd56394611a8012ed6e5dcb9a97ce66"},{"path":"run.py","sha256":"b594c4fa729204087aa019e1a487bb2477d43e7e7a1e119e19c2a8b8b0cdf98c"}],"relative_path":"mean_reversion/0252_0753_stochastic_three_periods","sha256":"2d04acfb97b1efa0d532a326dccc816a5932bfa8a03031b130b530bdc877a819"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0253_0754_stoch","category":"mean_reversion","dependencies":[],"entry_hash":"04cde3485f385d3b2e16f6728c8fa9e06462296e4454c0216ed817cea64569bc","functional_test":{"relative_path":"mean_reversion/test_0253_0754_stoch.py","sha256":"6ed78bba7dce596d8cc78101cf990ba0bd5908e64b30ddbaa9095d2cd7e3e582"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0253_0754_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_stoch.py","sha256":"db55dfb0dfc229e48e0b15d6116592924fc9056ca717fcc4a611b1586b28ba0b"},{"path":"config.yaml","sha256":"eb28f85233b5e1c2dd2d841597b07c94eedc7006573ba7aeecf43400504b72ee"},{"path":"run.py","sha256":"f6dc263eee2736bc64c313c2fb4f01d9ee4ad6064e276a2435a6fae3d48b45f7"}],"relative_path":"mean_reversion/0253_0754_stoch","sha256":"2260429d51835bdba4067a53bcb4a23ffce09e58011994de51e42380648338c6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0254_0783_scalpel_ea","category":"mean_reversion","dependencies":[],"entry_hash":"7fc32e8b098f9a842ac493f9a14093a1aa006bb7fa654b8e14f2c350fa48b338","functional_test":{"relative_path":"mean_reversion/test_0254_0783_scalpel_ea.py","sha256":"a0184b5e81f2c244b9d74bba4d240b7724a5cac661003e9e9c0cd6889589ac73"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0254_0783_scalpel_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_scalpel_ea.py","sha256":"7fac6fb486fce5129bc400704e39f77203b1615e38fe811ecf9de8a159171863"},{"path":"config.yaml","sha256":"69178f64799e988c5ed0b61ab29ff1777ab92c785e3d1aaf086f2ae13b4dea51"},{"path":"run.py","sha256":"75fc872e59f3a2c4ed67bdaa8e7e783c0f0182a627f0f97d7ca322f03e374d40"}],"relative_path":"mean_reversion/0254_0783_scalpel_ea","sha256":"0a193eb984770d7c663c21a1d023bdb3742f47cd63f25cc1a1dfb86b54ea32f6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0255_0788_center_of_gravity_candle","category":"mean_reversion","dependencies":[],"entry_hash":"b45a3d30318b97ebff7975b1b19aeb327c46f74d4ff626636cd6e883b2bc9de2","functional_test":{"relative_path":"mean_reversion/test_0255_0788_center_of_gravity_candle.py","sha256":"84fd6adbee2413ad6909a2c77b1f896f9b50629bff96f3d940825279caa97940"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0255_0788_center_of_gravity_candle","source_available":false,"strategy_package":{"files":[{"path":"strategy_center_of_gravity_candle.py","sha256":"fdda78e13d16c5d1e66004ee1f6f5c0899ee37202c2e244ef45bae6f379dc32c"},{"path":"config.yaml","sha256":"0cb2ccb1e0c665f3709d0ae049c95d749812bf4fe794ab5ffe23c46b4abd7bd6"},{"path":"run.py","sha256":"ab759424d9825a50dc3550ed72b526c6eb0b44651d6bff4cbf9dd87ff9dbf192"}],"relative_path":"mean_reversion/0255_0788_center_of_gravity_candle","sha256":"01daa5f83e49bebc8f09275148ef42dafa1c18b1ef1329159ff0034300d9b433"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0256_0798_mastermind_2","category":"mean_reversion","dependencies":[],"entry_hash":"71f292a2c7ffc1dcd220d522c44520717284e47b80f73f5453e754233152cb7a","functional_test":{"relative_path":"mean_reversion/test_0256_0798_mastermind_2.py","sha256":"49ef9b3a522f065d3b287e47826ba0a266cfdc38cfe6ab8e21f58af69c13c08e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0256_0798_mastermind_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_mastermind_2.py","sha256":"04bc20770faadf81cc844e0f5007c69588ded308f53cf9bf1c8d32a77be1a726"},{"path":"config.yaml","sha256":"6a254bc15a2cf48810627557bd5e64a40fc2854d283dff91bec06b0b52ba0813"},{"path":"run.py","sha256":"5d91edcf2af81c7e2e5e7c89ac42c34774276a91bff23ed5fd2f7eae15f42cab"}],"relative_path":"mean_reversion/0256_0798_mastermind_2","sha256":"24e24a245e194c95505c7a5e641c5a98986558b360f50214ad4e9d040979bdcd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0257_0809_mfi_slowdown","category":"mean_reversion","dependencies":[],"entry_hash":"b82bb868c9f5121a62370e850a5c3f6015f36864146d338e4cff12ad4bef39f8","functional_test":{"relative_path":"mean_reversion/test_0257_0809_mfi_slowdown.py","sha256":"8da36a2bafbf3fe30c9d28f0714364612c34872f68bb09a4df455e49427f7e60"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0257_0809_mfi_slowdown","source_available":false,"strategy_package":{"files":[{"path":"strategy_mfi_slowdown.py","sha256":"c85f84e69879fc447ea8871b58389fc9ca56a975d7bf8c6469e6ce0c244fab21"},{"path":"config.yaml","sha256":"3d92f4f0f6dec9e18af005be37fa21593be95508367171ff87b1fdb46a00eff0"},{"path":"run.py","sha256":"bd0c0a43c88b543aa9c4e65f6dc7f610453b4008d1fb361f8bfd7fb8676a348b"}],"relative_path":"mean_reversion/0257_0809_mfi_slowdown","sha256":"f06185764a11d7c30adf87a71b38d3baf45a1bd38fe3edda99c784fc3f0fc784"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0258_0810_wpr_slowdown","category":"mean_reversion","dependencies":[],"entry_hash":"54562eab6050978ace286345631a97fe7854d64ec87dd2020d8fbed86538cc1d","functional_test":{"relative_path":"mean_reversion/test_0258_0810_wpr_slowdown.py","sha256":"fa335fb0afe674120012d53fc1f3b828af9f3995194483ced4828563944c2f0c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0258_0810_wpr_slowdown","source_available":false,"strategy_package":{"files":[{"path":"strategy_wpr_slowdown.py","sha256":"d95d9ea388f7420a5e7c14bbf8b9c6d3749460e8b7dc78a12f89be5674985de0"},{"path":"config.yaml","sha256":"1651620d1b39c9d7b24c090c7ab0702946a0d6955e2f38d3f3705bf94d152610"},{"path":"run.py","sha256":"1c75017fff2aa15a9f78d187c2c85bb77b4bc7e03d0d5d4ff7cf09894be90ddb"}],"relative_path":"mean_reversion/0258_0810_wpr_slowdown","sha256":"84094d90b7386b81e79eeb3cf15e994e11e0926e049d9290f50b7301e9f0497e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0259_0811_rsi_slowdown","category":"mean_reversion","dependencies":[],"entry_hash":"b8eb9d08be4cd81a7defe4e98dba92bbe273be8a4c9309f8f9ff5caf9c2d666d","functional_test":{"relative_path":"mean_reversion/test_0259_0811_rsi_slowdown.py","sha256":"3968116e8a88c09d03791b99ba01865de7b3a5bcd46cde8d172b89f2c22c3ce8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0259_0811_rsi_slowdown","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_slowdown.py","sha256":"4b04948f43f23c5cd8970c4385e6a23f925e504d7bbac46a3e16a30926acd3db"},{"path":"config.yaml","sha256":"25176abecdb5cb8666099a8b0d3b56139548d79f544f200b57f26465054c106e"},{"path":"run.py","sha256":"08584232d7299050e3fc563ebfda528fc7ef8a37d3be4f7e948225ae51bc2b9a"}],"relative_path":"mean_reversion/0259_0811_rsi_slowdown","sha256":"21f91fcac7843a7a343e7a94fe0eec08b43c327015cace1a24694e5e9ce1eb50"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0260_0812_delta_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"da17bca80859409642d0f32c1a9fa0cdf10376dbae5e15876eeda2716465a888","functional_test":{"relative_path":"mean_reversion/test_0260_0812_delta_wpr.py","sha256":"46ccceff3ac3f1565cba1e2e0355e86db83bb02a797302041a6ee9f85dff070d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0260_0812_delta_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_delta_wpr.py","sha256":"953855332deb783c758c6515325648f214d8ba9c265d766818d1ab10dfbdad9f"},{"path":"config.yaml","sha256":"14e1aa2e2dd964514fc0330d136269727f64e7723d39fc1b12fdf6d1ff026b36"},{"path":"run.py","sha256":"21d482a1c3fe9272c17f3ac777d7a775a6ede1585c45ff6270ac8b4799b61587"}],"relative_path":"mean_reversion/0260_0812_delta_wpr","sha256":"6383d58caf0eb4e24e9bd84f650c94380bf7984b291cc3d4549fe6e474b8a182"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0261_0813_delta_mfi","category":"mean_reversion","dependencies":[],"entry_hash":"77444c20dabc0a859d2f5febef1e15f797cf76763b2ba308ddff93f0b0ee9ed7","functional_test":{"relative_path":"mean_reversion/test_0261_0813_delta_mfi.py","sha256":"fcffefa4c223b579d95e2f011fe80a9af39ea82d33248d624b8aa9be9fac0bd6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0261_0813_delta_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_delta_mfi.py","sha256":"254a698028e55b3f001be918b38b242a2d5d123149524aee29226072bb5827d5"},{"path":"config.yaml","sha256":"fd1db85e600e20790175a923421c99793c533059925e981fcff71ed66c0d692c"},{"path":"run.py","sha256":"fd8a8d09aa5bad92b64c7dca4bf97a60dccd5172cb8270288f12d377fb7fdb07"}],"relative_path":"mean_reversion/0261_0813_delta_mfi","sha256":"ea047f0befcb4c374b3e00a3296bbde14603073e58171086a562c216fa3c957e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0262_0860_fisher_org_v1_sign","category":"mean_reversion","dependencies":[],"entry_hash":"b6eb97b6038e8159313c8b2a979e937a1ee82a08b36aa3e77c17fb2223110415","functional_test":{"relative_path":"mean_reversion/test_0262_0860_fisher_org_v1_sign.py","sha256":"43de1db3334db48dbe7bac36d354344860c934b3ad93b238b027a19f2fdaca17"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0262_0860_fisher_org_v1_sign","source_available":false,"strategy_package":{"files":[{"path":"strategy_fisher_org_v1_sign.py","sha256":"dacbead0b867472dd5cc4b5b76b66f8a3e28a34f3400fc682ecaf566b1204b7b"},{"path":"config.yaml","sha256":"d3d4dd90659556fd64342cd3d87e6ee0870d57b331674cf2714b0147f9149d59"},{"path":"run.py","sha256":"4a1688c84794c34d68688d0aadb03943f9be5d088766248d9e0bd5a10144252f"}],"relative_path":"mean_reversion/0262_0860_fisher_org_v1_sign","sha256":"93bf97fea0f2b4661b071366b9c5f7ae20635e41f39583893d4a359e2c865179"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0263_0861_fisher_org_v1","category":"mean_reversion","dependencies":[],"entry_hash":"1db501ca7688da4635e0fcde2e2f5c3a5687324d444a2cf9f01026aea03db882","functional_test":{"relative_path":"mean_reversion/test_0263_0861_fisher_org_v1.py","sha256":"2840b97ac4212ba21ccaf33e9cd6e98de40eb118d68edbb439ddafd534e3c176"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0263_0861_fisher_org_v1","source_available":false,"strategy_package":{"files":[{"path":"strategy_fisher_org_v1.py","sha256":"178d4a17b59118c61b91bf7601bbfbec866bdf6d755ba156f385e512ee4faff2"},{"path":"config.yaml","sha256":"92589e42ecb78f98088e8cdce2cf420242612aa93962642df04adcac4151b9d5"},{"path":"run.py","sha256":"722661c84ab786f710320fc8ea33386c24fd50f9135ed7999c13b39fce9e5fca"}],"relative_path":"mean_reversion/0263_0861_fisher_org_v1","sha256":"8421e98333409eb5f691e0afaaa61afffaee2eaa77e9f5d22e02faab120bc1f1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0264_0873_idemarkersign","category":"mean_reversion","dependencies":[],"entry_hash":"accf4f64154f59d8b548ab17b60722a0c92653dbcacadce71463b7d1783861d3","functional_test":{"relative_path":"mean_reversion/test_0264_0873_idemarkersign.py","sha256":"1ce63e4fc46fd3ab8afed5891217d536251395c8c36155e700dd4ef88cba91e8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0264_0873_idemarkersign","source_available":false,"strategy_package":{"files":[{"path":"strategy_idemarkersign.py","sha256":"777f6877762fb4a56f059b16541a22601126d5115bf726aca08aa926d7b7a560"},{"path":"config.yaml","sha256":"fbf11228d4795e34ef053381f40972da870db13caa3d3499e1941515148737d7"},{"path":"run.py","sha256":"44ddb7b3fc39550e354aad864a5082c3db86a865e08777d9f2fb18c144b3ab53"}],"relative_path":"mean_reversion/0264_0873_idemarkersign","sha256":"fbfe620755825b977f657081e58528245c72aea9586684f1ef60ac8cdaf36bce"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0265_0876_istochkomposter","category":"mean_reversion","dependencies":[],"entry_hash":"3dd46f2c07bc48724fb8eeb638fda783a3c9eab5bb32c9858bb091293aeb8ac6","functional_test":{"relative_path":"mean_reversion/test_0265_0876_istochkomposter.py","sha256":"bd66ec84c55a10a9b8698f498ba2c5560154b2397a808ee84ace38e5eb0b3c52"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0265_0876_istochkomposter","source_available":false,"strategy_package":{"files":[{"path":"strategy_istochkomposter.py","sha256":"adbe2392b1d0c94851aa9c2f05772ffe758ebea097e35df09a46fd88f920f4e4"},{"path":"config.yaml","sha256":"f72e072ddbf92230d8ce4d27f407409602fb5e97a4633510f95793feaa9e2e35"},{"path":"run.py","sha256":"316413c2382333b4aa91c7753f6478e88640b0d0cb1c147c8cd1b128bd1efd47"}],"relative_path":"mean_reversion/0265_0876_istochkomposter","sha256":"2f45f2e9f097d8b6f91a9374b94ac6b4adea2ee5273dc2130cbe14391dabf2b4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0266_0878_iwprsign","category":"mean_reversion","dependencies":[],"entry_hash":"ddd91b36276e832f91f0400671483f9cf84a1b9aec82749ee04e30e4c727afcb","functional_test":{"relative_path":"mean_reversion/test_0266_0878_iwprsign.py","sha256":"6e94bd0e9032dc9adce12e88b8cdfbd78d76731f9b10c4b46f4a27c3b456b584"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0266_0878_iwprsign","source_available":false,"strategy_package":{"files":[{"path":"strategy_iwprsign.py","sha256":"8ccf2722db36948f31652694fdad5465ad4519b5181c9ebe44504d0f6caeecdf"},{"path":"config.yaml","sha256":"e40f39f656bef276f1134b67529020ad37d96e95c246922eafbfa283ca88834a"},{"path":"run.py","sha256":"d734be84cca104b53c36b7ae67a0c6fa36f33f73d55a34e7b02c1f28b241551f"}],"relative_path":"mean_reversion/0266_0878_iwprsign","sha256":"676b333f37c18852b93140b1a894a792901e28f0033f1bccc3c8c8fa06440d0b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0267_0879_irsisign","category":"mean_reversion","dependencies":[],"entry_hash":"7bb847f3526caac231fd9ceea5f052829ab5faf3ef4aeff3a08daaad945a1a5b","functional_test":{"relative_path":"mean_reversion/test_0267_0879_irsisign.py","sha256":"0e28a7943c519ab0e238fd49dcfda3c43949328f5a829d8a9ab9defc46a654fa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0267_0879_irsisign","source_available":false,"strategy_package":{"files":[{"path":"strategy_irsisign.py","sha256":"a459f27e918c61c59a647f46380dd84f420cc52595acb6200ed3f8f6dd076904"},{"path":"config.yaml","sha256":"79ffda8ba7b6de8f94f242a40d5a9d42bc8a24c34597444f1b660e6c6017c518"},{"path":"run.py","sha256":"35c6e7404cf1b75369a444f0c43c7e094258ec7c66e06f1ebf15395cdc7d1703"}],"relative_path":"mean_reversion/0267_0879_irsisign","sha256":"9876c64dc4a8440c996197442df4db4b4e6d898f5fd1a81cb00d01be2b9eecd8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0268_0925_cci_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"c1e9b1bc5fc69a61d43f2642f329004eccaa8fc68c5416b22672cbdddde591bc","functional_test":{"relative_path":"mean_reversion/test_0268_0925_cci_histogram.py","sha256":"ba26b83f9b5760b8d037b67dfbc22bcfc55731d393d4f96a467e544c694de3be"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0268_0925_cci_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_cci_histogram.py","sha256":"de456980692f677659259cfbddc1a24b6533e043491727d4925969e4d4901808"},{"path":"config.yaml","sha256":"f58d5f5e899a58d368f5838496b5a3f50e600af7f842268e702df7c58e2e1c67"},{"path":"run.py","sha256":"58c3a03b1097e89fac336246b64da065b811fa0c4336167e8f7e647f2caec8ab"}],"relative_path":"mean_reversion/0268_0925_cci_histogram","sha256":"3d228ccc0ef6b89df19d0d0873618aba39612b0e4a606332106927bd2a230926"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0269_0930_wpr_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"3821f493829e56e583bbfc7990f411684144f3283fdb84d3bf1eb63f7b316fbc","functional_test":{"relative_path":"mean_reversion/test_0269_0930_wpr_histogram.py","sha256":"86089dfc6c8a0b822046197c653587560e0b1025d0cb89f12abcbff6cbde3773"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0269_0930_wpr_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_wpr_histogram.py","sha256":"33e8cff3067da3b4efc2516c5b172ff6947c41912df11c61a98146acc8828b71"},{"path":"config.yaml","sha256":"5d49a3679444f93bf7f6dc23ab47356b1d74b9748ab5488386434d7b9b103705"},{"path":"run.py","sha256":"043208e406ad438d547d839bfaa32edf475e064417cf8b5ec83037215ee36e96"}],"relative_path":"mean_reversion/0269_0930_wpr_histogram","sha256":"1512d5add1c9e5809d72ef4dd0f142d0ead9f7f5ea16d658073ebb8adec93dc5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0270_0931_mfi_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"de390ea1b0cca7b481e5879624835d36500aac34bf6314b9c75580571cb325e5","functional_test":{"relative_path":"mean_reversion/test_0270_0931_mfi_histogram.py","sha256":"3c36a28c88cf30dd1d3b3f2a0ed21e306b5550fe076d340f160ba77a3987a8be"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0270_0931_mfi_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_mfi_histogram.py","sha256":"d3c395f2762273c9476765e93c1893cc3992e53bce1a8c4cf15f9d7f05241cd9"},{"path":"config.yaml","sha256":"55b0c5d814afdc5afe8cd8c1dd80f53582e8eaaaf807d7fc6246127c68df423d"},{"path":"run.py","sha256":"06cc49fab5699954c12e103e55e4580d4fe6eaa143ef799f6cc35f5453c81373"}],"relative_path":"mean_reversion/0270_0931_mfi_histogram","sha256":"4ab8a9457f55155e99a59c2fac715b472549d5414cd957517a041d3986ccd6c7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0271_0932_rsi_histogram","category":"mean_reversion","dependencies":[],"entry_hash":"a22b73bfeee7b6ec0ffdb98e6987d03420ccaf54e6a278293b051558528763f1","functional_test":{"relative_path":"mean_reversion/test_0271_0932_rsi_histogram.py","sha256":"503e8129f86f97bd67940b96095269b78bd7e90b54a91465191388a3f52e0a0b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0271_0932_rsi_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_histogram.py","sha256":"9e2655f170db1b0a717889228f339a2fc9670dcb6fc4eb2dad592dfdaec61cba"},{"path":"config.yaml","sha256":"900d2cc58e8b49738bb5f28d5c1b590f2cc675ed600fe9bddbb736b5c0a5ec0c"},{"path":"run.py","sha256":"f3ab77c902765c053a334af45d0b20521c0b3a37ba04da81dcbf622113a604be"}],"relative_path":"mean_reversion/0271_0932_rsi_histogram","sha256":"9592bc4e6acd20e1e867ef2ed169e32508c3a0c5a1ebbac8cec30c4b91ca5dd5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0272_0935_extrem_n","category":"mean_reversion","dependencies":[],"entry_hash":"2b21a3728237872337f9de60ae6f7d627632daf47048d500f7a01d579fc78e25","functional_test":{"relative_path":"mean_reversion/test_0272_0935_extrem_n.py","sha256":"321102683e7e2f0919c33efef4acfa50bb74cfa2cf43164afe9cee53e5a8db8b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0272_0935_extrem_n","source_available":false,"strategy_package":{"files":[{"path":"strategy_extrem_n.py","sha256":"be70b68c9d11d696a0f3ab6d5235f514ab01abc076587e94cc569b7156f6abd8"},{"path":"config.yaml","sha256":"87ed72c1c6ef24c470200075baa1964253b9e9bfeb27ba7647b93ca0e84ad9ed"},{"path":"run.py","sha256":"5b7e82b18dd4f74039e753468864b99da615d8546c3d665a4e7b9d7a602963c4"}],"relative_path":"mean_reversion/0272_0935_extrem_n","sha256":"9b26ece3cd679416a4fda08a0f9195438221e36900c60974c1d95467838e0b6c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0273_1004_force_diversign","category":"mean_reversion","dependencies":[],"entry_hash":"0e19a092bb1ae321231517c23da3a210e036cd0d269db52ab0f952e8c6271c65","functional_test":{"relative_path":"mean_reversion/test_0273_1004_force_diversign.py","sha256":"d41162fb4c9b892528fb777ee8130728550e3ab021ce18160111dac9dfaeb763"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0273_1004_force_diversign","source_available":false,"strategy_package":{"files":[{"path":"strategy_force_diversign.py","sha256":"740c244230430f0e6f18498911f15433b1db54fd2ed6baa82d193bd63c561752"},{"path":"config.yaml","sha256":"fac309e2373bfe30ada08ad5dd0a96145e824e5005a44189cfaeb7429b3da38d"},{"path":"run.py","sha256":"ca3a8387b848410d7a9c3b2f0ed50b7d3bac469612fa618e2561b7552843182e"}],"relative_path":"mean_reversion/0273_1004_force_diversign","sha256":"edef101cf08f63c88a4a041fe9682ac8514f7cbb370d4a4d2e73b1509384986d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0274_1012_dig_variation","category":"mean_reversion","dependencies":[],"entry_hash":"6e8d62d4fea3f04bb30997c30cb8c2baeb750c270e8be0be47c2e00a23bfe93f","functional_test":{"relative_path":"mean_reversion/test_0274_1012_dig_variation.py","sha256":"6a4d5193c8d3ddfadefcd893676da3c6141df1d58776d477e3e707abf197d36d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0274_1012_dig_variation","source_available":false,"strategy_package":{"files":[{"path":"strategy_dig_variation.py","sha256":"e374cdcb33652dbf9abb43d28f39dfe15c4c946baf6a21891dc70ed6a94d330e"},{"path":"config.yaml","sha256":"8b0b05ed33d684d4ad887a714ab4af6e3d9fa5181b9ca7283b118ebf62a0e2fd"},{"path":"run.py","sha256":"f82c95169b6a5b483c386d8477361a4bc90e4b199e7a31751fe47d14a50f61af"}],"relative_path":"mean_reversion/0274_1012_dig_variation","sha256":"0119786b18939038a33f4f032b363b7e93be8fd51b0a9dbbaa9da116ebcb174a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0275_1013_dinapoli_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"8334b575ecf50f06767495340313f8574156626563896740f34f751e61964be9","functional_test":{"relative_path":"mean_reversion/test_0275_1013_dinapoli_stochastic.py","sha256":"15492b6b29541e074441b7e668b370dab05a5e1f044726ec70f3665bfb1db05c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0275_1013_dinapoli_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_dinapoli_stochastic.py","sha256":"0e308f56c99a929ba6740c3d56c57c142f81018eac202588c7695766d754dd0e"},{"path":"config.yaml","sha256":"0218239717de1e65a5dc2ad4d478ca58e08c640677da2c0c2b3623d8bfe37fd0"},{"path":"run.py","sha256":"bbcc551dad3c357ee470bc29be781d986ff6db64c518ad16400b676c2fa7a6f0"}],"relative_path":"mean_reversion/0275_1013_dinapoli_stochastic","sha256":"975b634b665dd455d9115714771ecba900f1fa5b32690811f7191d325457afa5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0276_1015_cronex_cci","category":"mean_reversion","dependencies":[],"entry_hash":"dd1cbe59da14a892173919bc1e6c509d3126d0765614beac9b90671e304f5d47","functional_test":{"relative_path":"mean_reversion/test_0276_1015_cronex_cci.py","sha256":"3bfe2b42b99722e6d502e7eccc1f6631fdf838c01f5000d8795e28c29a933242"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0276_1015_cronex_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronex_cci.py","sha256":"8da7da5240ab925663724399f1a13362cf832ab8b64ed6d345b255841e8e603b"},{"path":"config.yaml","sha256":"607ba9c62b19e14a96df2d085200240b24058bae7665784a6a11e379fc4a30da"},{"path":"run.py","sha256":"6935843114d7f672b8fca5304389be88830fb66dd6eea9b2c445ad49d5e0bf62"}],"relative_path":"mean_reversion/0276_1015_cronex_cci","sha256":"76f71f3caa8f3bdfdd6b5d1838ee2602747bed1f8cd4696a022cc72a7faa7229"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0277_1016_coppock_hist","category":"mean_reversion","dependencies":[],"entry_hash":"a948323d4c01d01c9451c0de330d6957d85897f1aa75b32934433cb6a267c329","functional_test":{"relative_path":"mean_reversion/test_0277_1016_coppock_hist.py","sha256":"21b709b56b372c0aaa235dce4204b2d232cea2f222d7bce03f12e02897dd8e39"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0277_1016_coppock_hist","source_available":false,"strategy_package":{"files":[{"path":"strategy_coppock_hist.py","sha256":"6f9e0f1b9814c44ca1fe2e945b934d41abd8d05bef3737adaa7dd28f0269fc04"},{"path":"config.yaml","sha256":"84d3e8e878bc48902d44a7a2ad90271e23e89b05425f1d138346cad91df16830"},{"path":"run.py","sha256":"50677d728e4571fbe21d37f45605c5dffbf92ef9a9c75c4dc28721e94120130b"}],"relative_path":"mean_reversion/0277_1016_coppock_hist","sha256":"ca2817752a2a4990648aea6f9d168a2020c0329fdd3f6170a557d795b59e0533"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0278_1025_color_marsi_trigger","category":"mean_reversion","dependencies":[],"entry_hash":"342dfa1b87e9e759127f935d50b228b5741181a120ebec8186b70b0e9c5aea91","functional_test":{"relative_path":"mean_reversion/test_0278_1025_color_marsi_trigger.py","sha256":"51e6ac31accdda88949aa659aa7cac0882ec9cdfadbdfe77d04d1a75f3bd2ec0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0278_1025_color_marsi_trigger","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_marsi_trigger.py","sha256":"dc7fe5d95b90d6b4f9915ea13407127e1524c93b14c3a15ad06f9d14e5aa4884"},{"path":"config.yaml","sha256":"159fa102b614769512214b9ff10b72d4bfd3df96e9084fc537a741230cad3cdb"},{"path":"run.py","sha256":"e4cf28d5ecf32d6716fddd8f8fabc178c7c1d94cbda67b312b46250e0421c8f6"}],"relative_path":"mean_reversion/0278_1025_color_marsi_trigger","sha256":"cf0fab2cd7df4812113308a6152face7c16d6bf20694c438b265ed113d37e088"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0279_1031_color_zerolag_rsi_osma","category":"mean_reversion","dependencies":[],"entry_hash":"d447b9104784b37bd680cd8b84c9e2fce197dfbe51942926a1e4e5df35abb8be","functional_test":{"relative_path":"mean_reversion/test_0279_1031_color_zerolag_rsi_osma.py","sha256":"af0d8ecec96f46f3a9477dec683692ea2fedc9079ac075f2415149eaf4d4c22e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0279_1031_color_zerolag_rsi_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_zerolag_rsi_osma.py","sha256":"70eb724517314df1f7e89fafed2f8cd739ca302f4ff2598de0a51fdc0cc522c3"},{"path":"config.yaml","sha256":"dce292530dec743fe1c05fbfb48526a735a54e7698f943e92f0d65ad7fe62555"},{"path":"run.py","sha256":"56995fa46ebaed5836edeeb626711441ab8a99952e388c6ded93edd19d603028"}],"relative_path":"mean_reversion/0279_1031_color_zerolag_rsi_osma","sha256":"ecdf49c174547cc7edec9fea3e48a9cec322b396b57234cda3d79133b83c167d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0280_1033_color_zerolag_trix_osma","category":"mean_reversion","dependencies":[],"entry_hash":"78add83cfe1df7373041a5c1e7a433a3a22c8aead117f610636cd1cd34323262","functional_test":{"relative_path":"mean_reversion/test_0280_1033_color_zerolag_trix_osma.py","sha256":"4edf3591de9aa22b283d28d580f9ece7e39b7afd977a374c4ba9837f8d8caeee"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0280_1033_color_zerolag_trix_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_zerolag_trix_osma.py","sha256":"0140a4f56be6db6d8b7da9fa7ec1815584c161757640768935ab916a8cda771a"},{"path":"config.yaml","sha256":"47960ac9d1df7f9d2be80abeb4aeeb168abbecf1f9c8c731631f194df266b3c7"},{"path":"run.py","sha256":"96dea4aa6e5b09eca55bfe4b87e8e783f7374d46978183411a96627f1c3ab559"}],"relative_path":"mean_reversion/0280_1033_color_zerolag_trix_osma","sha256":"691d9391f3abb987d20d39bb9e7b591eddf498d463badfd1e76222a6a81a271c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0281_1034_center_of_gravity_osma","category":"mean_reversion","dependencies":[],"entry_hash":"f56c651a952e5be42de2e1e1bcee1a08f4363697dacc9ab6a4732878f5d0021c","functional_test":{"relative_path":"mean_reversion/test_0281_1034_center_of_gravity_osma.py","sha256":"1a06ba76723efb6fcd4bf1b8aec7cb6e1f9ac2e23f5de93d4f67382bd050e8c1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0281_1034_center_of_gravity_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_center_of_gravity_osma.py","sha256":"cf9161c9b08847606375dca448b8a292947eae60f27bf869871d5a2248647325"},{"path":"config.yaml","sha256":"2781523069e6aa8f11332f76c4b0c7aef3264ce61ff14f2dc9eb7e292a2f73e9"},{"path":"run.py","sha256":"8682442bb4d78762a838da79976a38e930b3c0eb042008d44ff1bb58fbd945a4"}],"relative_path":"mean_reversion/0281_1034_center_of_gravity_osma","sha256":"58c1b591aec1a27828ba060d03210473ecc214de782bd9272f5b518a8fda89a8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0282_1035_color_zerolag_trix","category":"mean_reversion","dependencies":[],"entry_hash":"6738b7dddaf084f6fc00bd57103d8519d9074af67a331b7874e3767764cc29e4","functional_test":{"relative_path":"mean_reversion/test_0282_1035_color_zerolag_trix.py","sha256":"61993f7c1b6f23b89caa1622468697b0150cdf2384efb0a6bb4036d16dcdd4f1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0282_1035_color_zerolag_trix","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_zerolag_trix.py","sha256":"5aa1ea81abaf26882672b6c4a04eaa513529f3f04f56cf36f8b1b1b9500f147f"},{"path":"config.yaml","sha256":"0ee032fbe4c662bb391c8ad0cafb2c6a7a1c921f694fe9c0a344870c255f8e6c"},{"path":"run.py","sha256":"4932a1b68cee022837a4ec5bf1107d461b3fd5c78cbbde2788c62abe94205574"}],"relative_path":"mean_reversion/0282_1035_color_zerolag_trix","sha256":"c1f35512452350590ca38c5ac1c28b148e6e47e950962070ce73bf73eeb0a8d2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0283_1036_color_zerolag_rvi","category":"mean_reversion","dependencies":[],"entry_hash":"6ee50fc8b42a28a68370f9cacfc9da950ebb272c0d71e39b01b88d92f32f89ef","functional_test":{"relative_path":"mean_reversion/test_0283_1036_color_zerolag_rvi.py","sha256":"39fa1dc7bd45ab66e587a12d71060dfea51c8456e5f554bc9a4e90ed6bd0c3ad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0283_1036_color_zerolag_rvi","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_zerolag_rvi.py","sha256":"6b84b8c5433d63a610f3f98d93711832369c6dc851c3a180bbe0e630a1a73a2c"},{"path":"config.yaml","sha256":"5643fbb021b3c3f936ac0a36ec09693b38dee563f0590c3d1be94e3a19e6e60e"},{"path":"run.py","sha256":"085dc0eea4f140cd333d3a95e14755eba76ba8a2ca1c8ac07b8c09ac2350736e"}],"relative_path":"mean_reversion/0283_1036_color_zerolag_rvi","sha256":"0f6adb94a4fad918976dba9d42e86ed631cb0cbdaa6ceb6a47029e9838ca638d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0284_1049_hlrsign","category":"mean_reversion","dependencies":[],"entry_hash":"3b9b4f7f10b8ad2b477248a04d38cddc226f6218920be4ea287880e3a469a00b","functional_test":{"relative_path":"mean_reversion/test_0284_1049_hlrsign.py","sha256":"0daffde2d01f4812eb74a39dc22d321a1312a579ba7329db1852f3a9ecbb33e8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0284_1049_hlrsign","source_available":false,"strategy_package":{"files":[{"path":"strategy_hlrsign.py","sha256":"539de8860eb634ebcbebf5a7ed520659b122c666415310af70f70cfe706bb27d"},{"path":"config.yaml","sha256":"52a745c5c1676aa2dad763e27a034be394c0795f87a1d8340e4ffec04891cb06"},{"path":"run.py","sha256":"cfd3e7cf7d66061a7e4869fc0c89a8dd9a08445e09a818bc2d334e4f19bf8446"}],"relative_path":"mean_reversion/0284_1049_hlrsign","sha256":"268afebec6fb5d575ec627135c395d2171c06ed57e165019114c5668c69a9170"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0285_1050_leading","category":"mean_reversion","dependencies":[],"entry_hash":"b25afecce3485d6763082dc8c093bc423d473bcc3d0b8c35ceb602dd486abc34","functional_test":{"relative_path":"mean_reversion/test_0285_1050_leading.py","sha256":"f606361e118e00c38e7ea61bb244518039f318a5669200bbebdb4444b573ba0d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0285_1050_leading","source_available":false,"strategy_package":{"files":[{"path":"strategy_leading.py","sha256":"a3006d900ec0d04abd83dbc8101bc798a7b506bf0511b6dfe5a0daf56c769119"},{"path":"config.yaml","sha256":"481b38796a7e50e51377de4319b3d03e0e3245869078a0509a8d56a7dddff331"},{"path":"run.py","sha256":"99656baa9bb40ac4070faf7b3e2808ba298770cfb0ce27e7c3d6a7f14e166a9e"}],"relative_path":"mean_reversion/0285_1050_leading","sha256":"11e6107e57923ab9affb08f3c1358db35566f87ed05932d11e89b4de9d5b4005"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0286_1065_tsi_demarker","category":"mean_reversion","dependencies":[],"entry_hash":"c2bc0f201ee48e6ba868646b9374407a80e6e5e1e96175a168ebf7a84936b977","functional_test":{"relative_path":"mean_reversion/test_0286_1065_tsi_demarker.py","sha256":"b9aecf2237653119f64622f743ead8fdc7f3de0a4ab6b6f8d183a17ab1211f84"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0286_1065_tsi_demarker","source_available":false,"strategy_package":{"files":[{"path":"strategy_tsi_demarker.py","sha256":"8f1096421323dfdb855a7f84836842c108877fc58c596113d1b7de899d86abc0"},{"path":"config.yaml","sha256":"09fd023720f1999c29a8323189b1e41bb70ccbdb973aabc71df00d10f293120d"},{"path":"run.py","sha256":"ef0c6428daeda04a8f188ffc5506b38405a8858336ddb7e580878ffd6ccfc78f"}],"relative_path":"mean_reversion/0286_1065_tsi_demarker","sha256":"46960bd5fac37aa99cea796e18e675300a8f063f26f050858b5625dd87edc6b3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0287_1068_tsi_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"83b63940c38f4b7346b6dec259ad1b3189ff99459baceecb5ed63462cfb6afaa","functional_test":{"relative_path":"mean_reversion/test_0287_1068_tsi_wpr.py","sha256":"cf9c8c1341adfb8d6d08d06978b5502f790b593563d479e641558e2bd2efc2fc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0287_1068_tsi_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_tsi_wpr.py","sha256":"fc97bdab919ec43d52b047e70b4bf80b0a5dadd65dcd1bb0e50298e3c88125ef"},{"path":"config.yaml","sha256":"5c8f3a596391f11b438d9a5b0bbc00fb8f7b3454c413f7abb719d131ef08dc5e"},{"path":"run.py","sha256":"085519769c433d820cc0775a834cb9e449f0e3f57a76701546d0c45ecbc4afea"}],"relative_path":"mean_reversion/0287_1068_tsi_wpr","sha256":"46a34cc4db638bac08ec668d0f38ba58ff5493c80cbdf341fca4d1728bf3c89f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0288_1070_blauhlm","category":"mean_reversion","dependencies":[],"entry_hash":"509924361907c6764a1e4d7a3a9729165e0c058ae7602ee145cadc4817ad0a6c","functional_test":{"relative_path":"mean_reversion/test_0288_1070_blauhlm.py","sha256":"08b833f6de9ad147f614bac3a793e3fc129cb99c767f953de78e6a2d6af0bc55"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0288_1070_blauhlm","source_available":false,"strategy_package":{"files":[{"path":"strategy_blauhlm.py","sha256":"1d8b0a72a0fa5f48cb27c72acdfcb5cec50ddb9f39b76ff92b3569e48d3dc4a1"},{"path":"config.yaml","sha256":"e0b6ee0f4851a354172b453d39b59e22c614943ba51bcfbb448b52c4c9ab9fe1"},{"path":"run.py","sha256":"4dcd62218086615de09e6b17a55b68d6742f9011d7079fc5fc0ccf2a47a035b0"}],"relative_path":"mean_reversion/0288_1070_blauhlm","sha256":"5a0841f049cb28ac379ed7b66890296c5fe39d75a542ed69cc12ecaafa019922"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0289_1072_cronex_rsi","category":"mean_reversion","dependencies":[],"entry_hash":"d05c79e9334799116031e5f04919cc0e5d4dd468a7a70d301d5cd2cd9b6ddd9a","functional_test":{"relative_path":"mean_reversion/test_0289_1072_cronex_rsi.py","sha256":"2e0aebb203ec42b4a657ebc54ba3d0f4f8d48ea28fc16d10da593e44963eeed6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0289_1072_cronex_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronex_rsi.py","sha256":"c16f41da9fceca39b216a70f26ff69b8cf668bf3514342c0fde0ef93a505c223"},{"path":"config.yaml","sha256":"cc8a0f7b748a56775dd76194b1988dc13733500749f7d09dfa47152630f42927"},{"path":"run.py","sha256":"20c2fc8573783566261685e713d532c43e088fcf120360d906c297353e3d181a"}],"relative_path":"mean_reversion/0289_1072_cronex_rsi","sha256":"2d7b6a1c86b96711fba9cbcc2188833894e4c22e4e52687d5de1bd22f053ef0b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0290_1073_cronex_mfi","category":"mean_reversion","dependencies":[],"entry_hash":"37b35b0a274b27ba31a87b1ab51f620bcb2f9c8e588fef7a50db35d412cfd822","functional_test":{"relative_path":"mean_reversion/test_0290_1073_cronex_mfi.py","sha256":"034cca1755132cfd6df1d146088e3f69acd1b9ab9103b9383b1bc166d5e985cc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0290_1073_cronex_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronex_mfi.py","sha256":"eaff98948b0486dda798239e8ca5c8e6fa7d82683874e0fd07eea029f217984f"},{"path":"config.yaml","sha256":"9dba707286e278048fac562931ec481d191fb917f801c41e2243cd96432968c0"},{"path":"run.py","sha256":"52c76b13369078a0894d65034a8d7c29fcfab9c7c24c5a8c0cd4f3669eede7f9"}],"relative_path":"mean_reversion/0290_1073_cronex_mfi","sha256":"c270e2975408486c06b62800df69b3cfb624ed9ef196504732081401c897a091"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0291_1074_blausm_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"b0635520afa02a66f01ad0f9cd187ce7543638cbc68c15f530eb4eef0b95bfe0","functional_test":{"relative_path":"mean_reversion/test_0291_1074_blausm_stochastic.py","sha256":"5a35b773d844e0264f088d8da6e41d86ddb62a1f15ebb38d7efa3f85e59d1be2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0291_1074_blausm_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_blausm_stochastic.py","sha256":"a777d75c481c94aad89dde402b4a335a09a586a8a89cf1140c434e2ed2b10d73"},{"path":"config.yaml","sha256":"b6ec3ac09cf3c9722929686de308070caf8c4150a86260792113f54f8b8396bd"},{"path":"run.py","sha256":"b5a400a17383082a68166f86507a0e68bb91ccfa7f57b1ebbc3f98d3a21af632"}],"relative_path":"mean_reversion/0291_1074_blausm_stochastic","sha256":"73979c51f6e6fa760f646419a18322f6d1efc6759a057cef4987b1c4e654658c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0292_1081_tsi_cci","category":"mean_reversion","dependencies":[],"entry_hash":"e31cf928a19b78a586a12482e587880b35a17e0425c9f66b3631105f6678c2a9","functional_test":{"relative_path":"mean_reversion/test_0292_1081_tsi_cci.py","sha256":"4ee6229265f873da9164e5ed2bbe59bcc7ca9d750613d4e02b345a7a98653334"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0292_1081_tsi_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_tsi_cci.py","sha256":"08b5003e8a3842648af704b249b4d57628fb7905583dae3dce37fe17de5109cf"},{"path":"config.yaml","sha256":"d2f2274bed321ba93ce19a73e01dd4ae06131eb09f71f4a0b578486ac467a812"},{"path":"run.py","sha256":"5cdcffd2712724f426e5b23686e424d00ddd5e3180d790405d9f1b5f4f3fd9aa"}],"relative_path":"mean_reversion/0292_1081_tsi_cci","sha256":"c4ec6b1f0e06af3660d86c53c84205c8fcda32beb0764538f612dc8e41bf725d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0293_1087_cronex_demarker","category":"mean_reversion","dependencies":[],"entry_hash":"5b28cd37359c5f42c5ede3134172f70b7c7ad08cdbb991a2ec168924a73bb2a3","functional_test":{"relative_path":"mean_reversion/test_0293_1087_cronex_demarker.py","sha256":"9716716513eb1db763333530945e3dc7635b4b56cb10ba9a48c1f70ccc1ac9c5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0293_1087_cronex_demarker","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronex_demarker.py","sha256":"25a9a7ffcba7ecf5631afcf54eeab33e3728e1de34827daa9903f8d56a8ea7f7"},{"path":"config.yaml","sha256":"3c374bc29da78e41552befd4f57eb4d1145a4684d92cdec85f3745be8284baae"},{"path":"run.py","sha256":"fee8803fe019ee2a7e7fcdff70a0994cea484a55560dec0d53b4775eab0a0eda"}],"relative_path":"mean_reversion/0293_1087_cronex_demarker","sha256":"2c1ffe22c3c53fad3063f9c4b4bc79d2fdb3f2975d83f5427c9a231dfee3d16e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0294_1090_dynamicrs_c","category":"mean_reversion","dependencies":[],"entry_hash":"f4796eca18e3ed3d2c74b525d20c0fa95ccf0a1d09b5c623e8787cfd95a4d270","functional_test":{"relative_path":"mean_reversion/test_0294_1090_dynamicrs_c.py","sha256":"58379da26763b434965d1469d38b879b33fe80bd7149fed19ebd34e88d816013"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0294_1090_dynamicrs_c","source_available":false,"strategy_package":{"files":[{"path":"strategy_dynamicrs_c.py","sha256":"fad630601d3b8c94f59c5fc2ed19fda63708c5a3052c6a2b064b67e91badc301"},{"path":"config.yaml","sha256":"21a95ad26870d177c403aa1f508f21db131b04f3f28780dd94daeec143ff5e09"},{"path":"run.py","sha256":"c206a1ef1edfc22c14c84850ea9a384b4b53b355d3c68a1e8e168f03c3ca7871"}],"relative_path":"mean_reversion/0294_1090_dynamicrs_c","sha256":"de6ace5ce116598729b84c478796f1da5543902f1f3cd8294af1a8d90968a95d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0295_1092_stochastic_cg_oscillator","category":"mean_reversion","dependencies":[],"entry_hash":"f797baba3b46fc0c03b11c608765f714fd93ba563db4934a3b4d6ee025775d3c","functional_test":{"relative_path":"mean_reversion/test_0295_1092_stochastic_cg_oscillator.py","sha256":"b372e2f30b0e4bf7c1d6ca8179f3612215b58b3466dae263a3a442cca6d7742b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0295_1092_stochastic_cg_oscillator","source_available":false,"strategy_package":{"files":[{"path":"strategy_stochastic_cg_oscillator.py","sha256":"daa099164fcc435e28c2aea483d4de165e92cd5e55028ac3a0cf402b349dee20"},{"path":"config.yaml","sha256":"212a78b5c372aee5eba907e1f77f1b1f798cf3fdaf0a9e1dd5291b3204032562"},{"path":"run.py","sha256":"6a46482b01f889f44868630a1ccce5b30549f069ad0217e296e0ad950a3b06f1"}],"relative_path":"mean_reversion/0295_1092_stochastic_cg_oscillator","sha256":"2c9d2e5b584c9d2ea1a2c97639810427d5668b6a57fb4868734a96be10b6f9be"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0296_1093_color_tsi_oscillator","category":"mean_reversion","dependencies":[],"entry_hash":"77d0d51bc3126c0ec89df7ade26e1bdbe28b80db48ce0e2e0254c30d83043204","functional_test":{"relative_path":"mean_reversion/test_0296_1093_color_tsi_oscillator.py","sha256":"274ef190861bf7d235e4fbd286dc631ffa4bf20b947f46c2b4d78f247731dd7f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0296_1093_color_tsi_oscillator","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_tsi_oscillator.py","sha256":"bc3f6c473fb18eed311f943ac77641f87d4dbc16ed3fa053f6c85357364f184c"},{"path":"config.yaml","sha256":"eecad58103a689524e7ce1f51f6e24a048ca51c78ae55f3da03f99f6f3087d26"},{"path":"run.py","sha256":"4e4fe54d2a9c8d45a12e2f7f7efc620b903aa7451b35f62831bccbd41b3b09fe"}],"relative_path":"mean_reversion/0296_1093_color_tsi_oscillator","sha256":"68598656a7d992bfd41f3f24f08ebc94cd235d7ecb3bb840515b6b48ce3d28c2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0297_1097_fisher_cg_oscillator","category":"mean_reversion","dependencies":[],"entry_hash":"297344dc81a8b40b8f5aab5b053de93fbe632264d31e2851af08051c8c25adc8","functional_test":{"relative_path":"mean_reversion/test_0297_1097_fisher_cg_oscillator.py","sha256":"3614f8dc8390b34ef30797a9c363e34ded1a9edd3dd90c7fa00f798d705861ce"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0297_1097_fisher_cg_oscillator","source_available":false,"strategy_package":{"files":[{"path":"strategy_fisher_cg_oscillator.py","sha256":"7554cec1feee2a7e62fda08becc72a666bbdb361d45e5ec58b37d6f58128b0d1"},{"path":"config.yaml","sha256":"dc0eceb2eafa6b1f9c94d787b6f2de5f10c966911b777c580400e814e41e0108"},{"path":"run.py","sha256":"a5671616660e4a8388a22e7e2b92bcd4bd543a3d0f2707c9cf1ccd6389396955"}],"relative_path":"mean_reversion/0297_1097_fisher_cg_oscillator","sha256":"8d615adc1c2d024f5701af30a5ba5cc988a1e67f8d4d89bfab0255d8676fd654"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0298_1098_color_jjrsx","category":"mean_reversion","dependencies":[],"entry_hash":"c43437d2099cf38c8d4dd0194b59ba766d5a078447c011370bf6c78650a7c6fc","functional_test":{"relative_path":"mean_reversion/test_0298_1098_color_jjrsx.py","sha256":"db6ad04390850c4c217130a89990703f9fc92f7416330b1ec18274896d04b43f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0298_1098_color_jjrsx","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_jjrsx.py","sha256":"9b084b91fe2c7a2e6bd2a54e7887f16e5b0c70578079793cfbf9bdbc5c8ca704"},{"path":"config.yaml","sha256":"d3118f64bfb4f17bd8b7e1c3e398de234b2aeaa7c12e798eae2b652851d7ab49"},{"path":"run.py","sha256":"22d5ca6237f18194db0c33152ed680fe82822e80c371ed8ca51e7c5e975175de"}],"relative_path":"mean_reversion/0298_1098_color_jjrsx","sha256":"71a769d053d92f080c194af325102088910f3f84007725d3c4a765a62bbb8571"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0299_1101_slow_stoch","category":"mean_reversion","dependencies":[],"entry_hash":"8880d779d7da6654c338b9e1f180134608e44d9682325d2f904cf563f365a3fb","functional_test":{"relative_path":"mean_reversion/test_0299_1101_slow_stoch.py","sha256":"8efa8a07c47457932bd1af3223fddf9e3eec3d1544ff1d027259d76294a6efd0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0299_1101_slow_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_slow_stoch.py","sha256":"091d22046b2d7044dc45fba5405697f35a0d2f5838d72be59ec6108742feb932"},{"path":"config.yaml","sha256":"5d56be9d471f3b4693d7c8a6b91f26bbfb88b1d554c2397bb9af83612f2b5947"},{"path":"run.py","sha256":"52cca47d6dbad370a0b97347702526c1a8123aa12b7a0e5062ec07e4c18d71e1"}],"relative_path":"mean_reversion/0299_1101_slow_stoch","sha256":"65853d346437c62313c1d7e2bf9815b3d4f63262dd1fabf5ba9aed86b5b405b5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0300_1105_rsioma_v2","category":"mean_reversion","dependencies":[],"entry_hash":"aae478501323181358203b2ba1b8a48e3be43a8028570da16428a500f86cfc7a","functional_test":{"relative_path":"mean_reversion/test_0300_1105_rsioma_v2.py","sha256":"83df67961530896e9b0f2cbaf7d752e260e28d35c018e29cb486451bb03105d8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0300_1105_rsioma_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsioma_v2.py","sha256":"75e7fefcafff5aef73f125b46c95dfa746f7840e2b932869a0256fe3b556f0d4"},{"path":"config.yaml","sha256":"2c010f387364151f96173dc4adbe54f5813f35590f0c3cd3657877ada48c6af3"},{"path":"run.py","sha256":"08e6cfb924eb12191e19c42103f7a5a476d7d82a91704fb6241d0c4dbfc2b9a6"}],"relative_path":"mean_reversion/0300_1105_rsioma_v2","sha256":"8b351cb0b1452fcff2b77e97ec6c7149d6147a8440d60118ff6145ea67a69ce8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0301_1108_blau_ergodic","category":"mean_reversion","dependencies":[],"entry_hash":"70d19d1f5662bd637aad6b865559010e052c8a0b037d7f9a8a947c12c2ec0d03","functional_test":{"relative_path":"mean_reversion/test_0301_1108_blau_ergodic.py","sha256":"3e50750186745f06fccc83c177699701350d11db2144650f5a4c66d4724badd6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0301_1108_blau_ergodic","source_available":false,"strategy_package":{"files":[{"path":"strategy_blau_ergodic.py","sha256":"f279fa7f77cd24593d3a3d81d3549808a0e8c2aacb689a23331b74eded615bb5"},{"path":"config.yaml","sha256":"cbe956eca20075802e7c1fcdf96203b605450e5fc953775cb5d12e47f6010753"},{"path":"run.py","sha256":"aca94aaa75b86fd15a540a03bde768ee8a9a1a3ab528c92e3714a52effbce7d7"}],"relative_path":"mean_reversion/0301_1108_blau_ergodic","sha256":"0be46c536e56d54218bf95591aadeb3e2f8e94f7f5970a845896dc5c6139eec6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0302_1111_blau_ts_stochastic","category":"mean_reversion","dependencies":[],"entry_hash":"092f518936a09c89f894d8fb5749ac9a4a8c0edbbc958acdbb2d095a17a5f3e2","functional_test":{"relative_path":"mean_reversion/test_0302_1111_blau_ts_stochastic.py","sha256":"2bbf4ef5430f805d7ef07002690ac74dc35aba6dd55e082301171d1c0d8feee2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0302_1111_blau_ts_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_blau_ts_stochastic.py","sha256":"1196e67fd2dfd852ff5a23d42258ff09f760aa6e7fdc177b0e24d94a2b56e246"},{"path":"config.yaml","sha256":"3ccee416aa9178ff09fbfa8f589c8d3245dfe2f7a979033840d8b9b98a3c0006"},{"path":"run.py","sha256":"d3c13d34c9e2fa46ca39cc133bbafe84850fde58eb02f73c50bf93c1c27b7192"}],"relative_path":"mean_reversion/0302_1111_blau_ts_stochastic","sha256":"9436917d7c21074ecbcb74a3685e2f60437d3c2e57e936069d3c84cca2d0d406"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0303_1112_blau_tstochi","category":"mean_reversion","dependencies":[],"entry_hash":"4e4777297260cdd28a762421efd092330a9c0c6d6642497ed154c56cf6115e45","functional_test":{"relative_path":"mean_reversion/test_0303_1112_blau_tstochi.py","sha256":"67890c95b0740f45156d4afe88b6aa896a22ae32acc3b44cdcfc911f9e50bb82"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0303_1112_blau_tstochi","source_available":false,"strategy_package":{"files":[{"path":"strategy_blau_tstochi.py","sha256":"b989bc1d652e321a0d9fd4278cf41fe51ccbf67f2f4e99b64e2936e52a01408e"},{"path":"config.yaml","sha256":"d14f24b759a8b48f9380a334abd3a25c0f936b80266fb8f42ad973f736bf5194"},{"path":"run.py","sha256":"cb59631a8476d7e6c40bb726a05a7af8dc2f764a6de7984e502a9ff47d5a7002"}],"relative_path":"mean_reversion/0303_1112_blau_tstochi","sha256":"168247a07073876f7aa260ede7a41d92897e66a65982f170581f5b971a4bcc19"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0304_1113_blau_ergodic_mdi","category":"mean_reversion","dependencies":[],"entry_hash":"e36603994756dbe2997938086a0ac097a1027aa496164eeb5ce37d8f0d6216bc","functional_test":{"relative_path":"mean_reversion/test_0304_1113_blau_ergodic_mdi.py","sha256":"77b10d4ba9cb3625bc26e57b29a0201fa2c1104771cd5c0df8ad32250dd3962e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0304_1113_blau_ergodic_mdi","source_available":false,"strategy_package":{"files":[{"path":"strategy_blau_ergodic_mdi.py","sha256":"fc8e6c4299d4c478e13e190a655f6ccea6b3be7fc41d332d010dccc220464055"},{"path":"config.yaml","sha256":"4a66b73623efc838ba3e31de012b31231a575843c3298133f7a3eb001fe46a70"},{"path":"run.py","sha256":"70bcafd98a789533947611ee1f5994a1dbb13eb2ba66884fa705b2b300b1e480"}],"relative_path":"mean_reversion/0304_1113_blau_ergodic_mdi","sha256":"a4a37653128cb38a4a27b009e76a078b6d4add40c1d118858469db836bebc66c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0305_1114_blau_csi","category":"mean_reversion","dependencies":[],"entry_hash":"d80e5691e9264229786af39b5de88dc63a702fc7d3b464e98b18f17799e8a1e1","functional_test":{"relative_path":"mean_reversion/test_0305_1114_blau_csi.py","sha256":"3bf1e34e37bedf89f0988886c282637d9014520bde426e2f1ddfcfb99c016774"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0305_1114_blau_csi","source_available":false,"strategy_package":{"files":[{"path":"strategy_blau_csi.py","sha256":"73d65e55d0b01d33c4f5896e78e39b9d1ae9a0387fa51e2896d94d902e74c51a"},{"path":"config.yaml","sha256":"f68d58ecc9d511ac41c24ae3204d7bbb77747f69c607ec10436c74101d8fdb5d"},{"path":"run.py","sha256":"e07071f34fd5d5a07d6e2817ea1480fb2b3798f4b4a2264e2454df7326f5df43"}],"relative_path":"mean_reversion/0305_1114_blau_csi","sha256":"052165dc975a1087745563b74ea62741d2343f397aa6ac2fb061ba26f8cf73d8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0306_1123_renko_line_break_vs_rsi_ea","category":"mean_reversion","dependencies":[],"entry_hash":"9d1769f94464ea876e57eed9b35b7e484f8792fc1cc48a22cd7afde466d97163","functional_test":{"relative_path":"mean_reversion/test_0306_1123_renko_line_break_vs_rsi_ea.py","sha256":"ce22c1d35c566769bceadaba36eef236b76147ec53239fb91405d03421cb05d4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0306_1123_renko_line_break_vs_rsi_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_renko_line_break_vs_rsi_ea.py","sha256":"e49eb7cc96a1447dab83a56d677eb5c49bb1d9227fdd60217a3ce2ea17afed34"},{"path":"config.yaml","sha256":"eb6c21d7bd7c2eb97bed1f7687b58c007726d74ca9b7522cc66627211a069084"},{"path":"run.py","sha256":"2fc8c91efa9eaa234f818913dd6fc0640ee5e5dc3fb5506e19c98ada854729b7"}],"relative_path":"mean_reversion/0306_1123_renko_line_break_vs_rsi_ea","sha256":"84c73523b875ea2ade87197d6369f722cfc37b4c426ffac579d85a1718f58e8e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0307_1148_combo_right","category":"mean_reversion","dependencies":[],"entry_hash":"80851d4f33f97c2dd2a3beba91e6c16dce0f446a0e61d22cf3c840cd73ab00bd","functional_test":{"relative_path":"mean_reversion/test_0307_1148_combo_right.py","sha256":"72eb1bf0a229257d6f4125a3bf8b468c6691ad056a5d6a836cbe5f272576babe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0307_1148_combo_right","source_available":false,"strategy_package":{"files":[{"path":"strategy_combo_right.py","sha256":"f324a509922e431f7561e4144658f14a83f2bdb9bcc1c2c162c686a9af99c594"},{"path":"config.yaml","sha256":"1324da4b9787785ecf60de9f859f550a79866201a3eb44c39eb81ecd9c91787e"},{"path":"run.py","sha256":"e99557fcae3ca37e2a5e522dfd75d429016e3ba5ff9aea39354af85436e34f3b"}],"relative_path":"mean_reversion/0307_1148_combo_right","sha256":"910b6baf65a9e1275d2b992436f9408b374b5e6d53da1d38cf7a0f035853b63c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0308_1158_divergence_trader","category":"mean_reversion","dependencies":[],"entry_hash":"cb3d68a9bc1ed79d8b5c839fabbe2b67d55354dbd4ed31904a36fb78c67242dd","functional_test":{"relative_path":"mean_reversion/test_0308_1158_divergence_trader.py","sha256":"96ee0a3e5421f36d8eaebe6f9a1998b7058afb4cae69e37482fce8072f1b5f0a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0308_1158_divergence_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_divergence_trader.py","sha256":"8c91632078e84507a43c82aa01eb6975b0c933f3d75b427ecdbbef4514340045"},{"path":"config.yaml","sha256":"9f8a5bd30f90d603e53cb3722bbcee3d7abbee50b70318313927ccb974b407ff"},{"path":"run.py","sha256":"88a3c33e0e9c11a5ab787ddff0a7668c77de43852c06a7f8fff32ec7cd27dd69"}],"relative_path":"mean_reversion/0308_1158_divergence_trader","sha256":"7798e95ecd2f36225accbade4f1b2e7499abd765540e6bcf635f84f0d34ec4ba"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0309_1215_super_woodies_cci","category":"mean_reversion","dependencies":[],"entry_hash":"48344106f7933f4204e8af079d210ccd1b907ae862238e1a7f0a49f50afdd61a","functional_test":{"relative_path":"mean_reversion/test_0309_1215_super_woodies_cci.py","sha256":"2d0540812df78ffdfeba112688f732c36fa8d8da159b698ecfcb0bda512bd685"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0309_1215_super_woodies_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_super_woodies_cci.py","sha256":"62826cbc836c09b2ab6a6e28630be7943cdc738169135bf0c003f030b7d2c394"},{"path":"config.yaml","sha256":"fc9342d017fdd8516f976c3c6f89a05797e65ae8d1b1d061f9b6bedabd8d55c0"},{"path":"run.py","sha256":"4b850d1f33545ab4e087f65c2475bc4e79bbca95b89e5d36d74b70b283c3f319"}],"relative_path":"mean_reversion/0309_1215_super_woodies_cci","sha256":"3876d581321d580680837bd3dfb9c4c250448755dec282bfcd6b685a1f6bf511"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0310_1227_dss_bressert","category":"mean_reversion","dependencies":[],"entry_hash":"b20126335f219454db2046cc1917588f1771371010b65722071abe092bfdda6b","functional_test":{"relative_path":"mean_reversion/test_0310_1227_dss_bressert.py","sha256":"751c9c4cd01a5843490d8ab6a5062d87bc9f8d39bf2c2473cf022c21c92daa28"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0310_1227_dss_bressert","source_available":false,"strategy_package":{"files":[{"path":"strategy_dss_bressert.py","sha256":"3a2b20b638e752d96ec32e824fc0dda67d3316dce5e606820a921c0db2a668ef"},{"path":"config.yaml","sha256":"b96d315afe0fd723294585b5cc098553b529a6e20a31ebc5d4cc5348e8edba2a"},{"path":"run.py","sha256":"0c3337d64f27b61a67511fc046db1079a3fd4c8209904016c8c6321901a7f001"}],"relative_path":"mean_reversion/0310_1227_dss_bressert","sha256":"6ae1a090659ad5ea26c35bd314ee22fa3b3504162a365f06220affbbd4c75c7d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0311_1239_cmo","category":"mean_reversion","dependencies":[],"entry_hash":"c93ac6508dd8dee8620884760d5eaee754d165f56b392f6cb420ba6ac351ccad","functional_test":{"relative_path":"mean_reversion/test_0311_1239_cmo.py","sha256":"4dca2276260ef471099bc8057e5c7afae4e6d624d43e16da2d3c9ade487fa9d0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0311_1239_cmo","source_available":false,"strategy_package":{"files":[{"path":"strategy_cmo.py","sha256":"fdc951504e9ad1f398e5cef79ce0df6d99081a949cb2130fb2b67f730f938931"},{"path":"config.yaml","sha256":"f1ef0cf10f3109279f57fc8bed6c1ea2162ca53a1e6c4090c68391b4a75f06b7"},{"path":"run.py","sha256":"cd02c656076bcfce64e82e5dd3c639d6eec769d48551b560a349303bbb40f2ae"}],"relative_path":"mean_reversion/0311_1239_cmo","sha256":"24e5235eec26498da26e3b693245a6f58204a60dd4b2f2921771cef73a340b43"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0312_1240_marsi_trigger","category":"mean_reversion","dependencies":[],"entry_hash":"8924e4a66bd729fd3b331fb89c8fb3b402e4f4a1ee75b9eb9c87cceab1973dbe","functional_test":{"relative_path":"mean_reversion/test_0312_1240_marsi_trigger.py","sha256":"cfd25a82515cdcb9f331f66fe447bcb1a0a9a785327df67e06947e6b800bd479"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0312_1240_marsi_trigger","source_available":false,"strategy_package":{"files":[{"path":"strategy_marsi_trigger.py","sha256":"93d62fe4cf013d211ddcbddd5496f7ef3ad379852a3b2af9f16f3e81495e628b"},{"path":"config.yaml","sha256":"19c0e42691b66735e226626d951b4af9617e26358416d164141755cf9eb72077"},{"path":"run.py","sha256":"1e9854679b9f746d17f06c5dc782f7d37685f5fc54ece0b0aa0b7abf568c4033"}],"relative_path":"mean_reversion/0312_1240_marsi_trigger","sha256":"fe869dc790af8ea8237888c5a58fd1315c8e6abf5f68f2d25ec1bf15032ea28e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0313_1250_extremum","category":"mean_reversion","dependencies":[],"entry_hash":"d0f88cb1aec3174c48a9bb5da1c384fa36370a7b6f5039339914ed2bcc1781cc","functional_test":{"relative_path":"mean_reversion/test_0313_1250_extremum.py","sha256":"1d51fd09f92f2cace056fd63efe9d3bd872b83ee6db09cf73b259e643748bc29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0313_1250_extremum","source_available":false,"strategy_package":{"files":[{"path":"strategy_extremum.py","sha256":"96bc13dbe7904a32b254adb7561afc32634fd9502530187cec218b3e721a4460"},{"path":"config.yaml","sha256":"e71d8cbd770ef6e4dbbe4015157fcf690b137c76c3118804395d44b4af357c67"},{"path":"run.py","sha256":"4a7a62b6d36ffc6c90b20b708b134a04734c7faa66a419dae4a1df2362df4298"}],"relative_path":"mean_reversion/0313_1250_extremum","sha256":"3dadd795741c431426172911b6076c9ff8610ceb013253cc642f68acce29461f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0314_1256_blaucmi","category":"mean_reversion","dependencies":[],"entry_hash":"962f12eae4a0772866dc18916a98f0a2c950b8e309ca28f09c06cbd7f7065765","functional_test":{"relative_path":"mean_reversion/test_0314_1256_blaucmi.py","sha256":"8bb8d3410f952d0bd74d4d4470ee957d5221821a8f356bd8ea21aa214df7424a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0314_1256_blaucmi","source_available":false,"strategy_package":{"files":[{"path":"strategy_blaucmi.py","sha256":"041fcc191b514f936cfc3b47809c6993ce99b0e387be45ad10cc183d9ad25e77"},{"path":"config.yaml","sha256":"7e2c2f23d777b318e1fb80e5488c766560d65aa78f09c90159eae7d1a851fc48"},{"path":"run.py","sha256":"1a869dc51c183238c66333d1f55e72b29b9142c2a0cb2a74a185d0fb3889cf65"}],"relative_path":"mean_reversion/0314_1256_blaucmi","sha256":"504a92a6b525402a9bc607000af1ae522d396abd3527553183ae2c2adb4ca1d8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0315_1261_qqecloud","category":"mean_reversion","dependencies":[],"entry_hash":"1ffbf02829596a5642104183bb5ddced4ae6bdc3e7328b6b23c072a9b91c1984","functional_test":{"relative_path":"mean_reversion/test_0315_1261_qqecloud.py","sha256":"2b5df0fa7fe83441e4b9fe2d191ee48678f3879e623508bbde426e783adcad7a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0315_1261_qqecloud","source_available":false,"strategy_package":{"files":[{"path":"strategy_qqecloud.py","sha256":"99de8aae23cfabce7425ed12001442b823e5281e772bdda47c7d3d318cb7b544"},{"path":"config.yaml","sha256":"10d66dfee0bbef6bb982696a9d695c1925d07dcb677449fbde790d0af3f1256b"},{"path":"run.py","sha256":"c54032fb3e7720c809eac5a9b7facf95ed9cecf199545400857953b71af36e5d"}],"relative_path":"mean_reversion/0315_1261_qqecloud","sha256":"059d88c0e315982e1918dcf536a9616d24e1899e783e11718e80ec99efdd279d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0316_1265_color_coppock","category":"mean_reversion","dependencies":[],"entry_hash":"9d19e6c8a8abb4a2d63aa68b8ecbb68c98fa6c873268ccbf80e40edd3570538f","functional_test":{"relative_path":"mean_reversion/test_0316_1265_color_coppock.py","sha256":"4e08d1d4d2cc2f833265bbd9d693ec2dcd6cbc8973cdfce401f0f99c503390d2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0316_1265_color_coppock","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_coppock.py","sha256":"025f4334a4863dbce1e7f970b34cea6cd6729d525a66eebe10e516333797f437"},{"path":"config.yaml","sha256":"2492bea26ab89af7d69c3ae3ecf1c9b2ee5572319db3e55c6ac0ce22a1893a6d"},{"path":"run.py","sha256":"06162a85d4bb47c889ed56cd3c72589edbfb0277c665c1aec37dd5a62ac23939"}],"relative_path":"mean_reversion/0316_1265_color_coppock","sha256":"fd5615c5a7a1977a76c42b9aaea8d65da266c2f76e6245a5daf5202fc70d0b8c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0317_1278_colorstepxccx","category":"mean_reversion","dependencies":[],"entry_hash":"259032c7ba6b85076316749a381ae178263150ad59749c2bcc8290238500b12b","functional_test":{"relative_path":"mean_reversion/test_0317_1278_colorstepxccx.py","sha256":"e413383a40626d0aa5bfee5ae6cef42e654957b3bf9da82fe919dd1d91b5e90d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0317_1278_colorstepxccx","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorstepxccx.py","sha256":"24935f492355b1cf47fa2c4bc90b416bfe5593f1b42a0d973964ef2d8e74e463"},{"path":"config.yaml","sha256":"be58a134035a3b01801ff84c96fa760129a65be33717a9fd8188877842a511cc"},{"path":"run.py","sha256":"92e9041e12c1e0a47bc07f755d89d2a054d84394c367d822caff1aafe7d7a471"}],"relative_path":"mean_reversion/0317_1278_colorstepxccx","sha256":"fa2bcc44d4b053cafed0b48f1fd566bc367058bda5a513180b01a57b8eae6082"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0318_1279_xrvi","category":"mean_reversion","dependencies":[],"entry_hash":"8c4fe7de67e03d9377b1ad88f187ac2ad776a13990dbd16597e460f7bab08a99","functional_test":{"relative_path":"mean_reversion/test_0318_1279_xrvi.py","sha256":"c77408eeda2e97db5bfd74af57d1f3ec71478a8f06b8b5fe19e254883246e7e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0318_1279_xrvi","source_available":false,"strategy_package":{"files":[{"path":"strategy_xrvi.py","sha256":"e5b283503902e294377d4c6f27d33308f2042cc4a5d5a9980ef5031e812c4709"},{"path":"config.yaml","sha256":"8358063eb3d34321d4266c17840f0d7408816bb7c32e978924f34d92286e8e4d"},{"path":"run.py","sha256":"90f11c903e8af0f0d4e5ee635f3c3f81bbf5a0505770ac3bab8b865a56eabb8d"}],"relative_path":"mean_reversion/0318_1279_xrvi","sha256":"aa9a3fb4a722bfb6b81d30f052e08e62ba02df66fcc82d4fb35fcdc4668214bc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0319_1286_ultra_wpr","category":"mean_reversion","dependencies":[],"entry_hash":"fbfa92a42259bc9e72af3f7794908452395d515d171c292d9b57b084089e1d2d","functional_test":{"relative_path":"mean_reversion/test_0319_1286_ultra_wpr.py","sha256":"295ba4347a3b988a0efd27eb9b1fc528ac85b75a2963ea647ce622346b7e0bdc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0319_1286_ultra_wpr","source_available":false,"strategy_package":{"files":[{"path":"strategy_ultra_wpr.py","sha256":"f93899af83dfd58b88f10dd2643d53aa580879cc0584d8adb28c780d231c505d"},{"path":"config.yaml","sha256":"f7fc57084cd21e959968189d691c0e8a02a04b39f1cd93a191b60fd00a815d11"},{"path":"run.py","sha256":"14f1e9b68b3fce2d12d5d0988d0df901d96336e69b5796f2f997644868b160bc"}],"relative_path":"mean_reversion/0319_1286_ultra_wpr","sha256":"d1a1f31673a5137a2f3eb824180da7739570c9007f8989c396d8dd585b3be48c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/0320_1296_center_of_gravity","category":"mean_reversion","dependencies":[],"entry_hash":"11f1b7484bb20f9179c5891f0c09e036a49d02d577aa3b04ac3f0864c17d53d6","functional_test":{"relative_path":"mean_reversion/test_0320_1296_center_of_gravity.py","sha256":"32e72f35714a5d6646552ca611020b9684140c71fdc65434aa171b3bd928b118"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0320_1296_center_of_gravity","source_available":false,"strategy_package":{"files":[{"path":"strategy_center_of_gravity.py","sha256":"606e0efc0f2ffbdeae72d40583193b36f8d93f8f050a4a4d796ad0a319d2697e"},{"path":"config.yaml","sha256":"a790ec653b4d4ad69ac7e7833e3a45e3d80b616ad3b29b0921a8aecb37a4ef2b"},{"path":"run.py","sha256":"32c3f251b7b961b9805942403cb680c832e1237db19e773693f9508279173b3e"}],"relative_path":"mean_reversion/0320_1296_center_of_gravity","sha256":"b466d165ef678b1e0515b153bd8cbedc20c5907b25f339a0de00645d45811772"}} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/112_macd_rsi_bb_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"3e9a4ffd7c5176e652fd53a5bd362450901130e77cda9f795b2664a5c522fd43","functional_test":{"relative_path":"mean_reversion/test_112_macd_rsi_bb_strategy.py","sha256":"08b09997d5f1b52cd9aa76570f09a914b3a18e587b725f765725d936242c7b62"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"112_macd_rsi_bb_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/26_boll_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"4ad80ae4b7e0c6948169a6b534bb35f403abcb198924a52353eac0e0e0e2ec59","functional_test":{"relative_path":"mean_reversion/test_26_boll_strategy.py","sha256":"3ce9e7a3272932c95f3584a7564d18fe26c925b06688ae8464cc3d4ee66ccb46"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"26_boll_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/27_boll_reverser_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"ed62a9ccf1fdb6c5a37d99464260effdcedfd2ab1412b6e9973a197954beb4ee","functional_test":{"relative_path":"mean_reversion/test_27_boll_reverser_strategy.py","sha256":"33b6917c20ac1295ca85640625e923ef6e736c9bac327ab32eb949556c8cf773"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"27_boll_reverser_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/28_boll_ema_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"9d5695efb88d8d39e788357e5b5b09a27264c5367a8849d64bda7ca2530ef89b","functional_test":{"relative_path":"mean_reversion/test_28_boll_ema_strategy.py","sha256":"78ecb4bbfbf68bb252aaea94257a2e2e4e100434fc04585b4a21daf812a4153a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"28_boll_ema_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/29_boll_kdj_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"b41ad7add76637319a7295b8a7056a901910e3c6ed1bd5ca8b6658056acae9d9","functional_test":{"relative_path":"mean_reversion/test_29_boll_kdj_strategy.py","sha256":"cca3f6afbf545144479e7238700bf01b7dd64c98654bca7ffa41b72bf7c47447"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"29_boll_kdj_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/31_bb_adx_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"bbaa7a326579bb20d25b97cdb518d08267e7c12a9b34d1468e1c23b2cded4b2c","functional_test":{"relative_path":"mean_reversion/test_31_bb_adx_strategy.py","sha256":"c0cac884429aafaceca182961acb9e10531e8729d1116b13aa56600b070746b0"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"31_bb_adx_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/63_pairs_trading_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"a374356bb395d6124cbd6daa67a2c744197d1cdcf513c8c96dda3092480ab94b","functional_test":{"relative_path":"mean_reversion/test_63_pairs_trading_strategy.py","sha256":"0d1f5bb0fa8343ff4b2b09195b1a596fc8b6b279f38e521cbb4e44e6f7d5db7b"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"63_pairs_trading_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/68_bollinger_bands_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"513677295fd7231ae013e521042e71b2d40941f7f04964b37440981e3d7d134b","functional_test":{"relative_path":"mean_reversion/test_68_bollinger_bands_strategy.py","sha256":"b72ef153d59d8c95a48edd920ff9653a7ed407182ec0f9e5c509f9c736fad7f7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"68_bollinger_bands_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/83_pair_trade_bollinger_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"3c06548cea62df5b7269a98200cb5fc0a143a94ba743896c4fb344daf53fb32b","functional_test":{"relative_path":"mean_reversion/test_83_pair_trade_bollinger_strategy.py","sha256":"9b7810b357a6ebfb00bcec7f849efb27bbce14b898e3523769de9f6ffa3b3b64"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"83_pair_trade_bollinger_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/94_mean_reversion_sma_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"6ad1dc0e732252cdcf06e55b10781470a492acc9a9d95444b0cc8124b0e1d8c7","functional_test":{"relative_path":"mean_reversion/test_94_mean_reversion_sma_strategy.py","sha256":"2de2951168b0afd683e959f9faaa6ea74da5c09ce7f98a1088fdc8af053e1e3c"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"94_mean_reversion_sma_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"mean_reversion/97_bb_rsi_strategy","category":"mean_reversion","dependencies":[],"entry_hash":"e7ec3fef8c29c24dad8907614ae6c77aba3e6b0a477d7a82134cd8a15f14e711","functional_test":{"relative_path":"mean_reversion/test_97_bb_rsi_strategy.py","sha256":"71ed9b50cfe5e963283ea6938b59ecf98d91d5f4a1e7d61bb4aec22f5cf4ef31"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"97_bb_rsi_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/110_buy_the_dip_strategy","category":"misc","dependencies":[],"entry_hash":"89e8da6642b67065f9b1efe02c253b4de1c2184c31858e223045c5094580572f","functional_test":{"relative_path":"misc/test_110_buy_the_dip_strategy.py","sha256":"c857af657b526b7a956e63628e5a17ff6985b1e031e30afca06e2d1d16a4f350"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"110_buy_the_dip_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/11_sky_garden_strategy","category":"misc","dependencies":[],"entry_hash":"e8b8ab2138da2522e1bb0c670963667d5a8ba3e13c712d10f2e114fb0367bf5b","functional_test":{"relative_path":"misc/test_11_sky_garden_strategy.py","sha256":"42a224c1e522936db751958f8c2cab8a4069239fc581295583019e669acabedf"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"11_sky_garden_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/16_cb_strategy","category":"misc","dependencies":[],"entry_hash":"46e76afc5333bf21c9c7b884bcd448d9427ce71d4ccfbfe1b53fa76f1cd1fa5c","functional_test":{"relative_path":"misc/test_16_cb_strategy.py","sha256":"1199867975bbf7d1f7aa1792ae70a9336331cae52670b9db205b1f102f116590"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"16_cb_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/17_cb_monday_strategy","category":"misc","dependencies":[],"entry_hash":"b3b7a635a7ee239ce537377a106605c15e75d898f51fec59e6320d33d8910e54","functional_test":{"relative_path":"misc/test_17_cb_monday_strategy.py","sha256":"5510813b89be708a587e25eee427e899bb63c87decf66e1f937cbaec2ad4ad5c"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"17_cb_monday_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/21_the_strategy","category":"misc","dependencies":[],"entry_hash":"14b4a66a5c37dc2cbb20110bcd4d7b1dade12d4d65bac48e126d9dad76c03020","functional_test":{"relative_path":"misc/test_21_the_strategy.py","sha256":"81582eba6e1ad701330e6733b9c29385d770dcd436019f712583b22393b8823d"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"21_the_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/32_stochastic_sr_strategy","category":"misc","dependencies":[],"entry_hash":"3747a3813c93cff594ce3c763bc3d58e0ef1b99ce5a37559b8ec46bc31674c88","functional_test":{"relative_path":"misc/test_32_stochastic_sr_strategy.py","sha256":"a60de76d0acf1e98a95bb27556dc0efe5977fe2a3b2adc0db6e0c0868fb8c7e7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"32_stochastic_sr_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/38_long_short_strategy","category":"misc","dependencies":[],"entry_hash":"e55f700a258ea28f2e8a94988c52034aeebc3343005f736ef1d2946aacdf956b","functional_test":{"relative_path":"misc/test_38_long_short_strategy.py","sha256":"e78370dc7a59ccfe0b21fb19454737c5999a6fec1a65c4287f56b0ef47d20b5e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"38_long_short_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/39_btfd_strategy","category":"misc","dependencies":[],"entry_hash":"b8cab9a6a3154aca722a3736cc1a1c183df36396afb0c099403e19f77817d306","functional_test":{"relative_path":"misc/test_39_btfd_strategy.py","sha256":"1ecda4e343cfced7aeabe0ed988dac309bb1d1baf596e572848c1050ee7fd99a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"39_btfd_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/40_cheat_on_open_strategy","category":"misc","dependencies":[],"entry_hash":"1b5b475fb2c7b0fcf262a88c56e39d4bfd175549dfa7bd8612d93ad19e7d2932","functional_test":{"relative_path":"misc/test_40_cheat_on_open_strategy.py","sha256":"100717468441e4cf2b5db858a2b418a8f4a7f5c6ddd5dc92d7b66145b171ab2a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"40_cheat_on_open_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/46_pinkfish_strategy","category":"misc","dependencies":[],"entry_hash":"ebf7b88b68811c8c8c9763e233d99b989eb11242280c4917f64c6fbc2b56e65a","functional_test":{"relative_path":"misc/test_46_pinkfish_strategy.py","sha256":"980532c1ba83d7aef278757c086c8c4eaf20385939630aa707758e32f14cc5e2"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"46_pinkfish_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/47_slippage_strategy","category":"misc","dependencies":[],"entry_hash":"467e5a3a819d569d798ce619eae776a620dcbcea2b1d8a97dadb542357f40151","functional_test":{"relative_path":"misc/test_47_slippage_strategy.py","sha256":"41a0838fc346ad0913fbb3a0e4052bce62169fe1fa908e8d81cadef70efc96c6"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"47_slippage_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/49_calmar_analyzer","category":"misc","dependencies":[],"entry_hash":"974b5b1ae90a6c59aabbb2c39b122d5a5d749a49510fa81820b918b0faa0afc7","functional_test":{"relative_path":"misc/test_49_calmar_analyzer.py","sha256":"ef24a8725a485c84ee045cf4ce2f44e9bcb37dc5bd66acc25118098c0abab42c"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"49_calmar_analyzer","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/50_vwr_analyzer","category":"misc","dependencies":[],"entry_hash":"9b01f58f805c503d97c3f09ae6ffc91fb16fd975d6a95007811806a278eccd74","functional_test":{"relative_path":"misc/test_50_vwr_analyzer.py","sha256":"c27dd48d14831382879b376fa62e037c4e6ccc25358b1dbe3c95d00b90ecfca4"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"50_vwr_analyzer","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/54_commission_schemes","category":"misc","dependencies":[],"entry_hash":"914b8a52123d031b6e40e0ee858f8d2cc9ae4fa4ac26586d0de82614e1424f84","functional_test":{"relative_path":"misc/test_54_commission_schemes.py","sha256":"bb622594cd4b540c7096355fb860c029cf7f65e786a3e5cf54c6bae4fe04b86e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"54_commission_schemes","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/55_psar_indicator","category":"misc","dependencies":[],"entry_hash":"b9be4894d188d6f42e17a580e852fd48c234136207e21d0beb3511c59796af11","functional_test":{"relative_path":"misc/test_55_psar_indicator.py","sha256":"85f12b45af0b495be7c05369ff7061e77873b34af8d3321a74507bc7244b797b"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"55_psar_indicator","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/56_sizer_test","category":"misc","dependencies":[],"entry_hash":"51234085cc43d485fb1f0b95b5e2a01cc97bb1927d6e961431aa9828eff99a8e","functional_test":{"relative_path":"misc/test_56_sizer_test.py","sha256":"33158a509d51040df86a419b6f8db152b1ec4266b6a8d0ece090f13232b81715"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"56_sizer_test","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/57_sharpe_timereturn","category":"misc","dependencies":[],"entry_hash":"9c7028a50f9c5ba38c35a04f47158f0b13ccf396443b1676f7199641ed2ce320","functional_test":{"relative_path":"misc/test_57_sharpe_timereturn.py","sha256":"41e08a777adb84c742625fddec7c95d64d26cb7bca8849af5804f975d28c885d"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"57_sharpe_timereturn","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/60_writer_test","category":"misc","dependencies":[],"entry_hash":"d25ad07f3ece0a1c2500818d1a783dacf465d00d249faa4b6c435d5d67c65272","functional_test":{"relative_path":"misc/test_60_writer_test.py","sha256":"3742dc344f80ad356c0f816e388f6a5e51cf371d4a5791b3d496b31abedc4660"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"60_writer_test","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/65_td_sequential_strategy","category":"misc","dependencies":[],"entry_hash":"0d977ec98c4ee52aa4b6741b650b3adfaaad0be75734d7f04b41c541868fc83b","functional_test":{"relative_path":"misc/test_65_td_sequential_strategy.py","sha256":"6dd13e241a2b35c6c1ddf02d14160458a7a5395bd63647200e851d4c9e4c30a7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"65_td_sequential_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/69_stochastic_cross_strategy","category":"misc","dependencies":[],"entry_hash":"f627ea5e5aa3ce7b1c278a5acd99c7bfdf04303370f41ff9deac0ac0703b54a1","functional_test":{"relative_path":"misc/test_69_stochastic_cross_strategy.py","sha256":"6e8cecb996261f89ed57b2967926db8564b27b42ffd881e2dd641beb7c14b0c9"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"69_stochastic_cross_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/71_double_sevens_strategy","category":"misc","dependencies":[],"entry_hash":"3d8f5d6a287c6c4413429ed851ec816c3247c1c2dd8fabb7598d7c75d4b5f892","functional_test":{"relative_path":"misc/test_71_double_sevens_strategy.py","sha256":"3f1eff9fcff9c452bb110eaad110fb97802378dc826269bde98d6d3de5120592"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"71_double_sevens_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/76_heikin_ashi_strategy","category":"misc","dependencies":[],"entry_hash":"ac0aa241e7da10e28103ab11d33a48cf55ac23b03eb88a4c18a0030cbd74011e","functional_test":{"relative_path":"misc/test_76_heikin_ashi_strategy.py","sha256":"62198d5e1246e862a2beae8d220d41807efa142f234107a4d1e73e83a51fbdb0"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"76_heikin_ashi_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/77_slope_strategy","category":"misc","dependencies":[],"entry_hash":"64cf7da2b5801bc41b4fcbb974c1da3a85d2894e606167b96082cc3307670578","functional_test":{"relative_path":"misc/test_77_slope_strategy.py","sha256":"f1cd66531a966cc3783bbce648a9a0aea82e4e20241fd57fd5f169204395ec2b"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"77_slope_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/79_buy_dip_strategy","category":"misc","dependencies":[],"entry_hash":"033ab02814b505eab9f242e248dd77488432336f83a85062411ca731da421f57","functional_test":{"relative_path":"misc/test_79_buy_dip_strategy.py","sha256":"8aa8b8949a26c66b8ea00032f702cc408ac555813e7f0aeeaad46cececa5abb7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"79_buy_dip_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/82_alligator_strategy","category":"misc","dependencies":[],"entry_hash":"18bb358df48f2a6f76019263c94cd1ee7ae7d2d6460d315838667efbacea5fc3","functional_test":{"relative_path":"misc/test_82_alligator_strategy.py","sha256":"46b6cc1827850d43dcf02cec2b02d2777b0ee812d2d8c41b3fda6ad5ec2485a7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"82_alligator_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/84_arjun_bhatia_futures_strategy","category":"misc","dependencies":[],"entry_hash":"c33707d26cf308c7422ad28f531bfc929986423b864bf66ae127cb49b96afa7f","functional_test":{"relative_path":"misc/test_84_arjun_bhatia_futures_strategy.py","sha256":"bdc797765bdf0de27c218cf70c2081ca09ab8a45fbc5091d7f8ce800eb86c411"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"84_arjun_bhatia_futures_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/85_up_down_candles_strategy","category":"misc","dependencies":[],"entry_hash":"93155c167a0fe69320c948b9f7d99ee66fbe9efeda77babbb34351111f423b1a","functional_test":{"relative_path":"misc/test_85_up_down_candles_strategy.py","sha256":"06ac64cfb4bedcf6dff9779eb13f1f2f4aca2f88b77d97a42b1c612d1594c51c"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"85_up_down_candles_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"misc/92_renko_ema_strategy","category":"misc","dependencies":[],"entry_hash":"5707bf12df62b0705d4917df16ae5a3cc32b891be5ed7322a939b0480baa8dbf","functional_test":{"relative_path":"misc/test_92_renko_ema_strategy.py","sha256":"5a2730d4361e1db09d6be4e1a82bb6ca79627d8585ec54e43a490625037c4e81"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"92_renko_ema_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0001_dual_momentum","category":"momentum","dependencies":[],"entry_hash":"46c571cf08e7140514ed05f167a7f3b546f9ed1c9ce0d69275128d48e7e845b4","functional_test":{"relative_path":"momentum/test_0001_dual_momentum.py","sha256":"84aa7a3c3dfdbfc0530b94193c02d7ae7368b4efb520e9198220b5ab084bf89f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_dual_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_dual_momentum.py","sha256":"c39e9c25de286b7d7026f210c3fe073926f44c73dbbd2f4125e9c1c950eb14bd"},{"path":"config.yaml","sha256":"ee019f1cfe57c01d635728cbfc0753086cea550ae95c3936579c0a7fff9cb7fd"},{"path":"run.py","sha256":"b55e07c3b0e6bea3c3c4b3d2ec03bac7bf1dac4f1b7670a6f403fb5317fa245c"}],"relative_path":"momentum/0001_dual_momentum","sha256":"92ce7b9c86985fc6eeaeddc10f062e7860c716f6b078e2f98de86acfde77528e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0002_gold_dual_momentum","category":"momentum","dependencies":[],"entry_hash":"36b73c1e36b4d4e940079bd432e2fccfe28023626d59baa0cefe47d665986d7a","functional_test":{"relative_path":"momentum/test_0002_gold_dual_momentum.py","sha256":"acad0a67f6d58b0f7b33f552264e275955dcd54b19bee609ebd402ccb2971e7e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_dual_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_dual_momentum.py","sha256":"938d0f4ee7f3c87eac6e0f156984d9b60905e4ae2a7e9a61a17ca6407caf79ac"},{"path":"config.yaml","sha256":"14ef6690d5f06a5e3631776e43e64798632849f8afc898d279e50e5b0787c9a1"},{"path":"run.py","sha256":"c693f89e7d171083e3247ec0620962c3902f02b80315c53028f844dca7f5133c"}],"relative_path":"momentum/0002_gold_dual_momentum","sha256":"adbab08ce99b545e21fc189784a926849b714409b743c2a41f5cc5c1c5c7d392"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0003_gold_overnight_momentum","category":"momentum","dependencies":[],"entry_hash":"831ef12d9c44f3d557295ee66959914e7c51c89ce840209eb13676fbf0c3b112","functional_test":{"relative_path":"momentum/test_0003_gold_overnight_momentum.py","sha256":"ab84fdee2605a215de90ea1c164df8b4ad2176ddaf847dd7d18084840249bd0a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_overnight_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_overnight_momentum.py","sha256":"1e4bbfb707a7013c55f79f23fde7afea62bde9357a538b88aed767ea801420e8"},{"path":"config.yaml","sha256":"89d057e5918200df2117dded6d0d9c26928106ad77af42ae65b6f5a627c4a1dd"},{"path":"run.py","sha256":"ee6b35cd8bf43f26851fbe0a7fc281cd9f3e3f85761372f8bf58726caf18b7e3"}],"relative_path":"momentum/0003_gold_overnight_momentum","sha256":"81046b1f1f3b252ac327b097d787e65d388b373a12a2506acf9c20198f41a975"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0004_gold_momentum_rotation","category":"momentum","dependencies":[],"entry_hash":"060661fce62c1cad53400111b3cf897271f43a5733d13425ef5b4a48063223e1","functional_test":{"relative_path":"momentum/test_0004_gold_momentum_rotation.py","sha256":"8c8d6211bf99c7d1c76dd5e7159b017af251ffff85e74470cdadbbf354472489"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_gold_momentum_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_momentum_rotation.py","sha256":"1341c64a228ae70302c1dcc24b9d42059241b5d32c96a8bbb1a50c34c422c016"},{"path":"config.yaml","sha256":"c78a0b6cf0e05a515e9edac6fff1b30375160a15ec123345ca4626ab151745dd"},{"path":"run.py","sha256":"303e773bc6b5a021470b021501360dfd989f193a9c456b87608fb96af4b8ceca"}],"relative_path":"momentum/0004_gold_momentum_rotation","sha256":"d6955cfcedec51365af6e6d0e8800ff7c596acc56dcb2048c4e06dd71d2bebc0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0005_gold_time_series_momentum","category":"momentum","dependencies":[],"entry_hash":"ef2cf1b926a9cb4acc167e6f54552a9468f4a547e51cdded7858e405989e6e8e","functional_test":{"relative_path":"momentum/test_0005_gold_time_series_momentum.py","sha256":"0a780e3bdee640c2e3543d3ed28b8adaf63198abbc406fdd7dddcf81ca554545"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_gold_time_series_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_time_series_momentum.py","sha256":"9fc6345bddc7a048dd96369b404322384175a39dc89319f1fce58388d9d8ae1b"},{"path":"config.yaml","sha256":"9a5f5ea65e3bfe73159ec3dedbadc49a09625ffd22ed0e0a41dc0d35ce44c056"},{"path":"run.py","sha256":"d66874bd7130172cee1529b3bd3bd33103f3d1e293c9037f6add4150acbc0c17"}],"relative_path":"momentum/0005_gold_time_series_momentum","sha256":"e1a5e81c76a7d941c4bcd6300d21c99cefef6e96b8aa0fe329e946664a5a3103"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0006_gold_commodity_momentum","category":"momentum","dependencies":[],"entry_hash":"cdff3b91ce881c52433b824b5e27bbb7ed6a23e18b7844a2b016fc0c60eef81d","functional_test":{"relative_path":"momentum/test_0006_gold_commodity_momentum.py","sha256":"53e770197203501542dfdfb6d13074ba62a6895c3874bb5d5fb6ea145d8e58df"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_gold_commodity_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_commodity_momentum.py","sha256":"b91f3a427c811fe6f514ffaaa951b47a1eec4a3dbcbbcc5c517f3a70c1e6686e"},{"path":"config.yaml","sha256":"1c1397be64aa571ec3502dbddbc138a651f05dbdb3ae0edf7e90354745c12b0c"},{"path":"run.py","sha256":"35fb789eaec97b237887e198228e2f52f688e210b6e671cdfa2f9e4b830170f4"}],"relative_path":"momentum/0006_gold_commodity_momentum","sha256":"40773088012bba1341c2c71d6d4f1e3e90117d06b037c4ecfcb2eb3a9bc02bbf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0007_gold_momentum_strategy","category":"momentum","dependencies":[],"entry_hash":"65f658bc42b8039aea95c5b89e97008d38d18e11f75d61dee7da16968b413b98","functional_test":{"relative_path":"momentum/test_0007_gold_momentum_strategy.py","sha256":"3bb4b586d43333c2fdac681c21fcac7b34f8155927555d8c770f902e2683a516"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_gold_momentum_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_momentum_strategy.py","sha256":"b186ee5bc36fa60214617de5176732af88d3aecfb56bfe73250c848e9e4a51ec"},{"path":"config.yaml","sha256":"399ecaa2c7664380f292e16f754dd48b44468cf852b74f45a741800641b0a789"},{"path":"run.py","sha256":"3f3a1c9212bde793a5e91da2b365907e609b44ba9896e4be8ed3193d03bd2187"}],"relative_path":"momentum/0007_gold_momentum_strategy","sha256":"050e37984f411cec75f8afb238f8449b4558bc0ce940cebce3619f36c22a556a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0008_gold_real_momentum","category":"momentum","dependencies":[],"entry_hash":"97bc344d26940939409b73c145bc9ebccb8b8972a4477cd0e5f6ecc3ffebb6ae","functional_test":{"relative_path":"momentum/test_0008_gold_real_momentum.py","sha256":"689c2dc568d8399b9605ad6a8ce4229f8f1747cfe8a27778749e29b32cd39c38"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_gold_real_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_real_momentum.py","sha256":"d444905558e5a8f89729a8a65de7f31d44b65b1d892c1f5a80a93d6d76d225c1"},{"path":"config.yaml","sha256":"8a4fa73b2b475e9723da8932a303edc58f4bd4477c2a39fe808c2708418f937d"},{"path":"run.py","sha256":"fa0f625b7a3500c25259df41df335b4a3b4dd86c780a9fce36af191e0e7628cb"}],"relative_path":"momentum/0008_gold_real_momentum","sha256":"aee25993294dff33f0fe21c785183425d8531d34b3c2662afb1e032b98b7d64d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0009_gold_momentum","category":"momentum","dependencies":[],"entry_hash":"6c452c8aac079a0762764eabb8bbb1bcdf2b4dfea48d50fd76b8a020accaa0f0","functional_test":{"relative_path":"momentum/test_0009_gold_momentum.py","sha256":"cc6186ca886e7308fca6fe0e540689920cd530e65755c359db92fefb5701d906"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_gold_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_momentum.py","sha256":"48a03b68cc1a2e704aba1cccc74106089e4bfffbb010802479b466be819c1ce6"},{"path":"config.yaml","sha256":"20ae8164798b07039f7044719a3d48f682472f204d1db3d20ee768baabf1d296"},{"path":"run.py","sha256":"100b93bf969bc79ba89aa198dbeec2e7b4309fa5900721c13adf3fe33e169510"}],"relative_path":"momentum/0009_gold_momentum","sha256":"876d22bb9bc0e442785d2fdd3ef48165b5b1dd6a0b9d65c2ff4a1e7e9878cbff"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0010_momentum_rotation_roc","category":"momentum","dependencies":[],"entry_hash":"dff2c795e0e4bcb4cf077e663b6ace92b24ce7f05a081b95550fe0d5a4528734","functional_test":{"relative_path":"momentum/test_0010_momentum_rotation_roc.py","sha256":"2fd0f7303c3a00385e945bb1c2ad00edbb703fa271b539f3f4c424279653540b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_momentum_rotation_roc","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum_rotation_roc.py","sha256":"a3037dee49f227475160aed58c65256ebc7e1744a63a4cfa02ccb45c83640dcd"},{"path":"config.yaml","sha256":"999dad505aa69f6dad2eaf29b1acef1d76b8895c6ff3980988f5b59b00d844f3"},{"path":"run.py","sha256":"38ddc260397c6fcc823ceee4b834534fd0e5d2524a77decc91f0c5ee50da648b"}],"relative_path":"momentum/0010_momentum_rotation_roc","sha256":"0bc35a3d74d0dd665aade444e6823a450d6484ccfc30504bd6bc3d2fc4beeb7c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0011_commodity_momentum","category":"momentum","dependencies":[],"entry_hash":"0482b04d9d8390ed403a6df5a3382d3ecd9d0356da6777c7b1ebc9d031065f86","functional_test":{"relative_path":"momentum/test_0011_commodity_momentum.py","sha256":"dd27cb0194a697ae37e5fe00618132a2fba3ff257aee3658ddef25b4d9cfe195"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_commodity_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_commodity_momentum.py","sha256":"f3e4bcead6d1b6e8026af434a2333cc91d79e8111ba5cafc4bdef15a6668099b"},{"path":"config.yaml","sha256":"8d15e3386b1b092bad4255481a03cf871b9c1122be63ccd35c3ec19ea60e137b"},{"path":"run.py","sha256":"344b4f6758fc629176183c9e8d6819e8b44db8d67b51b73549d1684ea1b7e63b"}],"relative_path":"momentum/0011_commodity_momentum","sha256":"c200c6cd510a15c6e70d7d139de607f95bb99876ac2561d27692c5010bb73958"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0012_gold_momentum_rotation","category":"momentum","dependencies":[],"entry_hash":"05fa2e2fe3be28fa7fb73318d7cd4ddf9f6d1351002c9ef972641f8a695a3e76","functional_test":{"relative_path":"momentum/test_0012_gold_momentum_rotation.py","sha256":"6172d1085ffed6db5719145a7803f9c54a8e7e9aa3cfc5ba54c7f136224aadb9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_gold_momentum_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_momentum_rotation.py","sha256":"b21f7eab4aacd94e7380ab10b6eefbfea1ba66a592403e5511eab0f0e6fb1a8b"},{"path":"config.yaml","sha256":"61520e81aceaff23b466606107cca9968d037aab7c4250863f1963a73f215e4e"},{"path":"run.py","sha256":"0cfb5157eeadeed6f6b942e5bac3e2e62484c4cebcd3b8af65af0f976e98df8e"}],"relative_path":"momentum/0012_gold_momentum_rotation","sha256":"d7251bca7d8fb1f64d2e67529e344862c02d37f01327e4483f7424f6c4da70d9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0013_gold_time_series_momentum","category":"momentum","dependencies":[],"entry_hash":"98e758a3d2e0ed5a204bf96be8554c2b2c6c79cb737acd33998faa1f0c30bc77","functional_test":{"relative_path":"momentum/test_0013_gold_time_series_momentum.py","sha256":"52cd35255a058aef7e03abeff759fdd30e8b6297fb816e9a016641a0c63e2b33"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_gold_time_series_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_time_series_momentum.py","sha256":"5aa8b65b14e2c638e4c753f5f3acf4891475bc7579c9d063cb60a45ac5009f30"},{"path":"config.yaml","sha256":"ec5638274b60adfbe99dec5ef1ee60f4e9c16d314ce9972fecd0c16a0c556523"},{"path":"run.py","sha256":"d8e9448a64aa2e076f6ed15ca64948eb8f15bc56cf51a66760d8fc38fc1c3353"}],"relative_path":"momentum/0013_gold_time_series_momentum","sha256":"a9928430409ae90ba2e48f0c4850eb9ef187cb9e446d8655e0141b17cdaa5419"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0014_52week_high_effect","category":"momentum","dependencies":[],"entry_hash":"dc07533762f44db686b91f884460b362be65eb38196fa078223b3422e88614f0","functional_test":{"relative_path":"momentum/test_0014_52week_high_effect.py","sha256":"710475deebb648cb55514b8dda5dfe93d2ab1de31b57ba2d49f8ec926ffd4bf8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_52week_high_effect","source_available":false,"strategy_package":{"files":[{"path":"strategy_52week_high_effect.py","sha256":"5b18800aa1a3d57484285a0ad82064a123fd797ef37c10bebf12df85c3fbab63"},{"path":"config.yaml","sha256":"3e41817298c3198470049abf49e746f9f491e8d2252eacdc0044db846bd5693c"},{"path":"run.py","sha256":"37978e1bb541f116d4061efd8aa082c64e0e712b73c2eb5a0d52b7251caea4c1"}],"relative_path":"momentum/0014_52week_high_effect","sha256":"989c8f276b929fd90320a979a8a5677daca2a210b1a8ac02538fc1c874bfe746"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0015_dual_momentum_strategy","category":"momentum","dependencies":[],"entry_hash":"7fb5a34ff3b31e117bf0a8308f4280e6bb76b837764a8c274e2c94b8b2845c87","functional_test":{"relative_path":"momentum/test_0015_dual_momentum_strategy.py","sha256":"15735b4592954f4fb584f971fa3856a2e5beaf36e66e5ba372329e5812e791dd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_dual_momentum_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_dual_momentum_strategy.py","sha256":"488ca7aa1ed505527bd89341d57b3c8bd4b66f77f3270e563f2c2ec26ae0a428"},{"path":"config.yaml","sha256":"26496318bbaa23f00798961abf140735cc9f250c649ba7066eeed3d106db4acb"},{"path":"run.py","sha256":"84f90bd0e90eb1969fb8c653b5b2083db586c5403c9fcacecf1bebb6763949a2"}],"relative_path":"momentum/0015_dual_momentum_strategy","sha256":"42f5b25d365cb3f20e141212ea4669a931b9c9d1dfae95a58532c410e4971e6b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0016_momentum_strategy_insights","category":"momentum","dependencies":[],"entry_hash":"1de7a3af25f78aaf1571cf91317f17570d4610add20f209f40af92ced910d772","functional_test":{"relative_path":"momentum/test_0016_momentum_strategy_insights.py","sha256":"b648f1c3a2db4d3328c89a036c2f50f3484c337a6b32f8f212f7496ccd51d3e7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_momentum_strategy_insights","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum_strategy_insights.py","sha256":"aedcc53a498eda28cac911452c6ff83f29e8d73381d8a2f58d520c84765fe1c2"},{"path":"config.yaml","sha256":"b039ed30bc62811179130f4004495709ee89f7d1b0b332a5a1101d8666bde6d2"},{"path":"run.py","sha256":"eeab606fba670a0a8f61a7cc5757c24e5a151ea6a4c44f7fb835fe34cec631ed"}],"relative_path":"momentum/0016_momentum_strategy_insights","sha256":"64bf0b5d1cea06a98f36e1cae8992d1158c70dcd889beef846e7be8d0686e3ef"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0017_alpha_momentum","category":"momentum","dependencies":[],"entry_hash":"8950f349d202e3e0e17456549428edbfc539f78ab09649066d2b7bb4a419b60f","functional_test":{"relative_path":"momentum/test_0017_alpha_momentum.py","sha256":"9dd33284bea835ae2f5362441b39f691d465b5abe464379315d8dc61b8f50b0e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_alpha_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_alpha_momentum.py","sha256":"b2842fb1af265344ec3ef7c284a6d6c5fac24da8ca620843ae65b63386ca7557"},{"path":"config.yaml","sha256":"ecff331a1a8dbaa71a806fd800939a8420401dfaa8f8554f0922e09feb751eb0"},{"path":"run.py","sha256":"f23a01bff780e2728dd34b68a9d285ad194ef480e48161ccd171dfaca6f78215"}],"relative_path":"momentum/0017_alpha_momentum","sha256":"2e141645735697a6c732bbe55d972177af76b22e9da67bc181ef06102ac39992"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0018_simple_momentum","category":"momentum","dependencies":[],"entry_hash":"4f01ac70a0a4feb19b5fbe856749a42bb1220e120f077aebdd0297b15f09c06e","functional_test":{"relative_path":"momentum/test_0018_simple_momentum.py","sha256":"e6504e10956c84b1f35b6d9a6768e00cba59ae181b7654d5a1c5ed228c0e43fa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_simple_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_momentum.py","sha256":"71b2e0cf47c30991b924baab65f13120634dfb9c27740c04251b875fc2408b25"},{"path":"config.yaml","sha256":"797640044a47187cd8f1024d5bc22c2645aef1a019be1d5ab4427afa7d357714"},{"path":"run.py","sha256":"1aa43187cd8fa786984e38a7d4714aeb1b43bba2eb92044fafdbf1554aca3c0e"}],"relative_path":"momentum/0018_simple_momentum","sha256":"01f196e32829eb7f5128d8ec12f0eb59910c4f950274a773b20b537cb953dec2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0019_pca_momentum_quantstrat","category":"momentum","dependencies":[],"entry_hash":"d0133071c3e09894a474ea262354f803b553a7969519d1ebde7c3fc69a9855c5","functional_test":{"relative_path":"momentum/test_0019_pca_momentum_quantstrat.py","sha256":"c8a6b2ea13941ecf9a836543db6586bc446681b435d46b52f541851de22beed8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_pca_momentum_quantstrat","source_available":false,"strategy_package":{"files":[{"path":"strategy_pca_momentum.py","sha256":"af8132f1021c28c8f503c734171ecf9cd38fc09ed8d0d213e9fce1ea3ad12696"},{"path":"config.yaml","sha256":"af5790770605c8c45c6494ad9e45c99b2be466a46da94a8c11a699440006b57b"},{"path":"run.py","sha256":"d3b9c1de4e32388e500b522a7a1a8a1c75a736a9e0388dd5f6db2fd51792b23b"}],"relative_path":"momentum/0019_pca_momentum_quantstrat","sha256":"f1b8091f8be6c1b6bdbfd1b49171bd234af20cfc908c8e39d3d1c89d7f39c00e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0020_momentum_basic","category":"momentum","dependencies":[],"entry_hash":"435d985b7af3b6b52c6e667771c409c3d31cd04417323332669dc44e725f7b12","functional_test":{"relative_path":"momentum/test_0020_momentum_basic.py","sha256":"34916b028f0a66305b94e0a659910ca05d0f13b4015405eaded939aaf48948a6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_momentum_basic","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum_basic.py","sha256":"603335bac14c17633732cdbfae4af28891e380a16a1426927d76ab50cb937ab5"},{"path":"config.yaml","sha256":"d0f7f89518e6d3607a572fcd25538465648e7865f991175dc6a83ed0844844ec"},{"path":"run.py","sha256":"a01ebfac6b8d8a13d8a11c7fdf9d56dabfcdb10b8b8a4d57e4827b8417a79f11"}],"relative_path":"momentum/0020_momentum_basic","sha256":"f7ffbef263b92f5ba0d11cbcf1afaf0b56dc41bb76289cd097123e30f06c40aa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0021_calendar_momentum","category":"momentum","dependencies":[],"entry_hash":"1287c9db468567a7eea5a79c252e97bc4ff2ea9ffa6eb29eab3e4d8ee443dc8d","functional_test":{"relative_path":"momentum/test_0021_calendar_momentum.py","sha256":"0526f6b0f783ca056bb2e04abad90b7daae3e81e67bb61f615c6a882b0a9783f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_calendar_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_calendar_momentum.py","sha256":"fd600d0b20010ee4f7f453c535d5c8298bf57a80b6942f6c0b33bfd81b5c1a53"},{"path":"config.yaml","sha256":"4cc3d38205fa3388f4660aa3675c3acf5da1b23951252ae9c257a0df21e0d752"},{"path":"run.py","sha256":"75e95975483bd16f34e24d370e75554d54b8b071221f290995e5d06c6bad9be0"}],"relative_path":"momentum/0021_calendar_momentum","sha256":"da847fd82ade47dafbb01f8058599d6c588cf81f4cf3b1ae4cc4b1aac73291ee"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0022_dual_momentum_vortex","category":"momentum","dependencies":[],"entry_hash":"38505c3f9a56de52691e7c75bc2eee36e8a9d5e60b10ff600f86037286fec739","functional_test":{"relative_path":"momentum/test_0022_dual_momentum_vortex.py","sha256":"bfd9ae6339d80081b238213260ca3358492a133fef9709d1134b184c5d9bd8e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_dual_momentum_vortex","source_available":false,"strategy_package":{"files":[{"path":"strategy_dual_momentum_vortex.py","sha256":"d7ac6c97611a94806b9f6b6b0fcf330380e4720dd67f6e7014124bce94adc5d0"},{"path":"config.yaml","sha256":"9de3ab6f8f44ad0fcd5adb08ec145103040886608da24714f157fa08b43d53f9"},{"path":"run.py","sha256":"9880f1beeabab31c613b5c48ab793b0bf9f7a3e80573297aa37e7003846eef57"}],"relative_path":"momentum/0022_dual_momentum_vortex","sha256":"76b6a6007dc023013c676d09b71181d802807361fb5276f5a2087dc4da5721b2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0023_lowvol_momentum_value_momentum","category":"momentum","dependencies":[],"entry_hash":"55166d18c6cc08e6b2751d0d0be5b0a06f49187de25452f4c3c6cbc996244479","functional_test":{"relative_path":"momentum/test_0023_lowvol_momentum_value_momentum.py","sha256":"ab6977dad280fdeb68a608fd90dfc472a0eaf0dd6b295df106e3bd4d72e2412e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_lowvol_momentum_value_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_lowvol_momentum_value_momentum.py","sha256":"c2a65552632b6868fdac5e0a4db838243193900d0ffc31fe94e4147ca16d7616"},{"path":"config.yaml","sha256":"d33ee0b3080f274c03de9577797490422716741fa4d5d24b895c453fe9b8a789"},{"path":"run.py","sha256":"4017374c1866526dac22b9804aa1b322f7ccc1a8a54bb9db0db93ab4c7df9f9f"}],"relative_path":"momentum/0023_lowvol_momentum_value_momentum","sha256":"6405c9c22037f7e1b514d5f0f8a433aa050b8db85f2c216ed3e2df21eba0bf85"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0024_online_momentum","category":"momentum","dependencies":[],"entry_hash":"c590bbb544125515e4478270c5efdc69f61bc666955db1d424f2b90f34a5654c","functional_test":{"relative_path":"momentum/test_0024_online_momentum.py","sha256":"4b07ffff45143ac5e5dcb58e8b9cc25b3650809a25e57e2228a79a1740d6b36d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_online_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_online_momentum.py","sha256":"777097df34e4eab454e147154ae2e7edae3458f45fc0cee9741870587f528a37"},{"path":"config.yaml","sha256":"72bbb6621c1af7732c28078cdc0564fa21dcb0b015f9401950f62e1caed1e904"},{"path":"run.py","sha256":"e5a40f7f204be60fd4cfeb9ff238cc693e9fa82914555bfe39ce389ffe708dec"}],"relative_path":"momentum/0024_online_momentum","sha256":"4e254836e68c1045f8ca3e4c677f3c07073c453b46e90a1af3c311c0f3b4a8dc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0025_esg_momentum","category":"momentum","dependencies":[],"entry_hash":"a345526b43aea2ac07ce3b88be84e2eb91abe8eb12282c12871b570e37f7bc11","functional_test":{"relative_path":"momentum/test_0025_esg_momentum.py","sha256":"1a9fa50da818a7be9739a367edf7d1381e4933d5d3664346060c98e0570c8d8f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_esg_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_esg_momentum.py","sha256":"f28bd294def1685b474bfa659a4808235d5718418930e6cc0875f62bb7862a09"},{"path":"config.yaml","sha256":"30fc1abd8f9e15176dd3a2d5851caef4eb60c12d0d1fed1a0c8b8a8ee212c3b7"},{"path":"run.py","sha256":"cd2515c187fee6b2178f3def78a674312c8d91276386708e648a12acb294e94b"}],"relative_path":"momentum/0025_esg_momentum","sha256":"fa662cecd816b791c36b890176e5ae60e9b1a61d00e906ddd2681021602fc0a3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0026_momentum_combination_strategy","category":"momentum","dependencies":[],"entry_hash":"c2031591f24243a5cb374b063779023e503011a5c979986f3bf78238a1bcd65d","functional_test":{"relative_path":"momentum/test_0026_momentum_combination_strategy.py","sha256":"68b2988f64c874e3d3f167385f94e6317fbb1ca5c899a6216c9c7ee7066ddb7b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_momentum_combination_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum_combination.py","sha256":"2353bca601efc23300f635c51197ce3d598405d697a07c222e9e3e079caae7d2"},{"path":"config.yaml","sha256":"cc5fbe53c78d5f6720409c7e7490065087ffcf198b28f4290dc105719c6ec18e"},{"path":"run.py","sha256":"69c286848c8e758280acbdc064d791d1974258b2561197c2eca976a72907aa06"}],"relative_path":"momentum/0026_momentum_combination_strategy","sha256":"f2730021bc771ade9c5de1f9c403d38d595adf4a61fe6a3ac7d664031a69aa1f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0027_momentum_strategy","category":"momentum","dependencies":[],"entry_hash":"27e6bee5be759b2f131a9840fe6aa62a57213724836a93a1e4ade68641e6d740","functional_test":{"relative_path":"momentum/test_0027_momentum_strategy.py","sha256":"ab1fd5c03d8cf89e424138b5b45e67337b2b12f8f2f4d9268c3ee3984598c0c5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_momentum_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum.py","sha256":"ccce65adb41e42768ffb4168e4d0c1f152fc8ebee0a4813be46d2a895f0594d1"},{"path":"config.yaml","sha256":"69c0e41b0cd3f1499a7e81922ee21e352e8d6d3f481d150a4f25681813d3667c"},{"path":"run.py","sha256":"a4b2f6745473be814ec22a35fabfc8b4d4498add069ed7bac9ce634c38c69c77"}],"relative_path":"momentum/0027_momentum_strategy","sha256":"6a5233ea4bb04ab99b818a4637da8ed04958dc0b291b9c62b7440bc83c3880db"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0028_0145_yesterday_today","category":"momentum","dependencies":[],"entry_hash":"031f94592bc42dd0a245c4ec90f41a4288942a98ef04465703ec02d782fedac7","functional_test":{"relative_path":"momentum/test_0028_0145_yesterday_today.py","sha256":"1a1f4475d7cf3c7db02135b2f85f742b7a16d9380320d44f284327e0fb130986"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_0145_yesterday_today","source_available":false,"strategy_package":{"files":[{"path":"strategy_yesterday_today.py","sha256":"66bf99caefd22b836d26a6c8c186107e5a6f4570031b4aa924d84664a5ec9afa"},{"path":"config.yaml","sha256":"6043fd5311f475c3b512f5fbd112a558f12546c94d9e513c7a0ce5fd1451e1b6"},{"path":"run.py","sha256":"8216902baacc7b0ec35dac4398421bffc7ccafdb40c47205123d135e4515a860"}],"relative_path":"momentum/0028_0145_yesterday_today","sha256":"c3f15749d35a5684a267ab35277d5ec4fb0658846b6234c64218ade3630b4ef7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0029_0416_momentum_m15","category":"momentum","dependencies":[],"entry_hash":"41b94271a116247bcd17d8d7f155e1c860e2fa149cba1ae4475608df8b4084b6","functional_test":{"relative_path":"momentum/test_0029_0416_momentum_m15.py","sha256":"5b55d8b76a69844028acb50b369474aad1ba2be2813b99ca50d806f29af24e44"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_0416_momentum_m15","source_available":false,"strategy_package":{"files":[{"path":"strategy_momentum_m15.py","sha256":"6339335f30024e8e2d3aac7d33048c35fb9bfa80763ccff412e00e6d8b3ff40c"},{"path":"config.yaml","sha256":"5566c965df358fcb26031fc990391633cbecbd35d5484d4303acefd7df97cb48"},{"path":"run.py","sha256":"2d46407f9a6b653938d35ab2e80934c48c56b35ce5e6e6ca690d75368b539e14"}],"relative_path":"momentum/0029_0416_momentum_m15","sha256":"a493c1f418cff8322d19a858045cfe08eef86e62d527946ae59470d4ee8a7ea5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0030_1029_color_zerolag_momentum_osma","category":"momentum","dependencies":[],"entry_hash":"f4a10616208c29a9e5f750b7390fb62d3282f61e15fa3986db7b10105772ccbf","functional_test":{"relative_path":"momentum/test_0030_1029_color_zerolag_momentum_osma.py","sha256":"5711a9c92451d3b9414aff5cd6a0627e1e6b8d8f366577224a83fbaf8efca931"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0030_1029_color_zerolag_momentum_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_zerolag_momentum_osma.py","sha256":"52ad80c2780cd02a065f5f6d13b7484a2e48f2da81f85d9354774089fc8170c0"},{"path":"config.yaml","sha256":"0cf94b51e900c426ca7715c9c044caa7db4415c57f90b8494bac3661061c2c44"},{"path":"run.py","sha256":"64029f842c37254c9ff1205d6c31abff46f5c67019917c3e34ff145039af6233"}],"relative_path":"momentum/0030_1029_color_zerolag_momentum_osma","sha256":"647b75d5854d8baa31967e28e80990424a1e917a838bf80ff141eb869f4b22b4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0031_1052_elder_impulse","category":"momentum","dependencies":[],"entry_hash":"9ef8484bc005697832f462e41cbdc3cc74c7146f1cb9b89476c9224779658db3","functional_test":{"relative_path":"momentum/test_0031_1052_elder_impulse.py","sha256":"942e278f445391ac95660bcace1056d2ecfdc75c18bfe47c84c7aa3a4539a4c9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0031_1052_elder_impulse","source_available":false,"strategy_package":{"files":[{"path":"strategy_elder_impulse.py","sha256":"1047ea17723e99b61071fab368636559df334d448b90f69c4cc4be5d377c3527"},{"path":"config.yaml","sha256":"af5d280d76d03522ab067683e9bf5700746acf5f2d3b8bac310c53785632ddf7"},{"path":"run.py","sha256":"a89d5b4e8d39d96d7589f6ab04b8ac453dc67444ee9ce5b751d79259917ab413"}],"relative_path":"momentum/0031_1052_elder_impulse","sha256":"0a8125105256f29622d5ac9b6f70959cf7d086b30848ec840dbfb4730b68bb51"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0032_1054_range_expansion_index","category":"momentum","dependencies":[],"entry_hash":"aa99e73891ea2e6154c3944cde178225cde9b697fb7873238ac6be81af7002fe","functional_test":{"relative_path":"momentum/test_0032_1054_range_expansion_index.py","sha256":"9723f0cbe8d2ffb5327db77446d850b4f827813703d005499e7b8b23e3e07221"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0032_1054_range_expansion_index","source_available":false,"strategy_package":{"files":[{"path":"strategy_range_expansion_index.py","sha256":"ce1989834390ef0ce3b4f51022ed3f088bec8c43618a12df0f949ab592df3c0e"},{"path":"config.yaml","sha256":"e7ec58e0a44995e88929293e13dfae18ba510438baf11d26625a3e9b2dc97259"},{"path":"run.py","sha256":"0f6c84fc5622e1add7170af0bc1eecfd6b60cd28a669b47bbf12189f522dd108"}],"relative_path":"momentum/0032_1054_range_expansion_index","sha256":"4ac299ba99187e4600662c3f43a3e4e10ba152d8bf35da2e7a7e01ac33cb6275"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0033_1228_anchored_momentum","category":"momentum","dependencies":[],"entry_hash":"12eba59d6990373236e9f5180f654140d5e04b83ac965433a65c7b3e8ab4d6dc","functional_test":{"relative_path":"momentum/test_0033_1228_anchored_momentum.py","sha256":"83ec63e789661bdc855252076216eeb456ad11513547ef04f0b4ba895c346e4d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0033_1228_anchored_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_anchored_momentum.py","sha256":"915dc7f44c244f44957f78456f01b8900a3d31685a353c0cb37e8e7025fd5f17"},{"path":"config.yaml","sha256":"ae7d0408b131bc894b8c1a5318ffb4496132d96da806cae28ce7fb1cf27d18f9"},{"path":"run.py","sha256":"643c89805e758ef4f6190bedc1f15e82008cfc598d88d09b07c237cbd3b9745d"}],"relative_path":"momentum/0033_1228_anchored_momentum","sha256":"79e573b7a9427016616a273986634d57b7b4a3423f374635852c76fba82ca588"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0034_1255_blaucmomentum","category":"momentum","dependencies":[],"entry_hash":"b6b2ec4d13cc2655d1d81b32df89e0e655ed1ee8ee00bf5b04a8d66206f29cf3","functional_test":{"relative_path":"momentum/test_0034_1255_blaucmomentum.py","sha256":"bce793aaec26a4727b556d36191ef49d9e7468f1278bbf4d6bfece46862090f5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0034_1255_blaucmomentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_blaucmomentum.py","sha256":"e7d86ce5374bb354fb1a95986540b904b991b9aec806b39db76e1b7ec652735f"},{"path":"config.yaml","sha256":"f5e797112f0bdfc1817d69829657fabf366a3357bcda2fe07cdfb656dbca38c1"},{"path":"run.py","sha256":"4c6e52e5180683d0fc9f8974af70765f00f80bd8a999d77744ff83e161a29143"}],"relative_path":"momentum/0034_1255_blaucmomentum","sha256":"0152be21d7ce36aa17e2522fa7e47741fcb52f9ff9e68463c1cd339944fbf3bb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/0035_1274_colormomentum_ama","category":"momentum","dependencies":[],"entry_hash":"64044cc3d1edfca8b2cff67d0227d6b533cdcf339cd57bf63f1950909a65f894","functional_test":{"relative_path":"momentum/test_0035_1274_colormomentum_ama.py","sha256":"b1cd62e2ed3b375210a152a1f20588dee76aa3c11ae668095444cc3154fed527"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0035_1274_colormomentum_ama","source_available":false,"strategy_package":{"files":[{"path":"strategy_colormomentum_ama.py","sha256":"3f293b51893a550d42767faa1338e186c2d945e9b17c0a94dd13f3a4dd8cb67f"},{"path":"config.yaml","sha256":"acb96704c8bbc8ec00816551c32d3ce4e0748d6bede21601cdaaf569031f5d57"},{"path":"run.py","sha256":"4952911404916c62749b96bc0bb5379e2b2f1c9a1be7977bfa82f518070cb321"}],"relative_path":"momentum/0035_1274_colormomentum_ama","sha256":"13e2ba12196d74cbb93a92b30a87d86c44eee53cd1b776c1bc573ee4c941f99c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/101_rsi_long_short_strategy","category":"momentum","dependencies":[],"entry_hash":"e132ea12744162b7bd57d35a12fa95678143ba5bb5289dff456de8cdd7ace809","functional_test":{"relative_path":"momentum/test_101_rsi_long_short_strategy.py","sha256":"1039a55d2f7ff3138a1dd790b84492a9722f21d8841574bd2a54ac726f2e7277"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"101_rsi_long_short_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/113_rsi_mtf_strategy","category":"momentum","dependencies":[],"entry_hash":"bc9cc2c9c1b648661d9cc6798ee267ea1775b915b743e8dc0b2c4fd6f6e4ac7f","functional_test":{"relative_path":"momentum/test_113_rsi_mtf_strategy.py","sha256":"40602938e6a75164645faff6d09165921f2d4f9584098e0c92e528c33db67849"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"113_rsi_mtf_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/19_index_future_momentum","category":"momentum","dependencies":[],"entry_hash":"6962e394b3416ca31840ffafc9e1b20d0ffbbe2bd8b28d34bedfc20fd5d28e47","functional_test":{"relative_path":"momentum/test_19_index_future_momentum.py","sha256":"5c736de79fde17fa4a7f94d03168249029b107d9bc845e673b11d6488c836604"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"19_index_future_momentum","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/64_atr_momentum_strategy","category":"momentum","dependencies":[],"entry_hash":"0fc4b22b182e913784c778e34e78060075c08807ef4464499c826408541aa763","functional_test":{"relative_path":"momentum/test_64_atr_momentum_strategy.py","sha256":"3368e1f305ed4cedb1fadea353cd636f2f26578d32e58a90cd91c57a34d9a028"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"64_atr_momentum_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/67_two_period_rsi_strategy","category":"momentum","dependencies":[],"entry_hash":"ee4cfbc16c711a95693318f959e2f5167f5a96aff48bf1c5663daaf50b3eefef","functional_test":{"relative_path":"momentum/test_67_two_period_rsi_strategy.py","sha256":"d306a63884b6db289cf3fe410b93dee7115efd31e300c037e11a63e1d40f0e16"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"67_two_period_rsi_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/73_simple_rsi_strategy","category":"momentum","dependencies":[],"entry_hash":"ccf5a58add6b5d9b7f075f9989ca5d3ef8429993efe5667748aa8ffed4c9f9f1","functional_test":{"relative_path":"momentum/test_73_simple_rsi_strategy.py","sha256":"837c55577e0f9e7aa3662f240f3fe67f65743b593287c06e454636274c50de92"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"73_simple_rsi_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/74_macd_gradient_strategy","category":"momentum","dependencies":[],"entry_hash":"34733a8c899a4a13eeceb6072c08fa426e57f6b9728d912e3a8c9a13a9ca8c67","functional_test":{"relative_path":"momentum/test_74_macd_gradient_strategy.py","sha256":"25a1c4db45918e9bda57e6e08305f18269d4b787b89c10c5c79731af48c1131d"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"74_macd_gradient_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/78_percent_rank_strategy","category":"momentum","dependencies":[],"entry_hash":"268aa362c254f13de9948d65ba5c5cbd64263028d3905978fa95fb28c4d28f7f","functional_test":{"relative_path":"momentum/test_78_percent_rank_strategy.py","sha256":"86a66790e55584f8d93691da43ace62b3701d79ab9816ae6e57bdcaccf334688"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"78_percent_rank_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/80_rsi_dip_buy_strategy","category":"momentum","dependencies":[],"entry_hash":"f6d8794fc0b208dbee1fad9fd97a7c05add60c831926c34fd4d7b5c9706832f6","functional_test":{"relative_path":"momentum/test_80_rsi_dip_buy_strategy.py","sha256":"14268af314ae426f6325b83c6354e0101eb42b8876e75efbdf5600a49f41d183"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"80_rsi_dip_buy_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"momentum/99_momentum_strategy","category":"momentum","dependencies":[],"entry_hash":"23cbfe56cdf3e486cdaea8ac5e358497cb82801b3818d374addccd20237630b7","functional_test":{"relative_path":"momentum/test_99_momentum_strategy.py","sha256":"29824da82ed5d41995a0e54bdfda45239b7539c166a2e7093c947524092b1695"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"99_momentum_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/102_williams_r_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"37e39419d22fb72ab4fb504a30cce5c8bdf167ad96e30a75bb14bb5b86d65c7d","functional_test":{"relative_path":"multi_indicator/test_102_williams_r_strategy.py","sha256":"70883a04e6cb690d394c0aeb941a91a598eb8b51b998b66d8ce751ad4603bbb7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"102_williams_r_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/103_stochastic_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"ebe0ad47968e24df007ce61e84dabf71c4b714ad1a68498d231662a8ab43703a","functional_test":{"relative_path":"multi_indicator/test_103_stochastic_strategy.py","sha256":"0c306de3e5c7aab516d5924e3f301fc9f8917fbdc5d3d41a925264283a90d818"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"103_stochastic_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/104_cci_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"c310e7aba8b0a47f41994f71b5fc1598b762446e28e1ee86eec3a8b414ae3aa4","functional_test":{"relative_path":"multi_indicator/test_104_cci_strategy.py","sha256":"041541886c0b905a606e66d9fcc9d6f02dc1a53cafc1524d30cc22352d13e427"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"104_cci_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/106_parabolic_sar_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"573aff1d617a5235ae0af6c972c5b355457c31b1cba22366163a727ac44893ee","functional_test":{"relative_path":"multi_indicator/test_106_parabolic_sar_strategy.py","sha256":"59876fa30877bf9ff1b72ce2a7fd9c63081e32db3cd9679ad390374c2289ef2e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"106_parabolic_sar_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/107_trix_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"5695cfbd0647c94cba3409f0417136aa5164cb38b83b10fa4e111d96464e34ff","functional_test":{"relative_path":"multi_indicator/test_107_trix_strategy.py","sha256":"e025462a541a65fb5ec536fc406bb4d89a3c57adcae605808a6d9028376eea61"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"107_trix_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/109_ultimate_oscillator_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"2e52d4a2255d9a46ef631f36c76dbb0e40c43017432da6730db2be5da608ee42","functional_test":{"relative_path":"multi_indicator/test_109_ultimate_oscillator_strategy.py","sha256":"7792de9adcfff34c74e29ad7142e29067fcff887cd0f10a20cf8034ce28ee73f"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"109_ultimate_oscillator_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/12_abberation_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"16634ac11e19d6e645fb9c301430fdfcae59a481f37215ee2264d11001937320","functional_test":{"relative_path":"multi_indicator/test_12_abberation_strategy.py","sha256":"a7570de194613a82be211b6ca7a8e07a995d70d38dc05db2e5778d85b917fcdd"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"12_abberation_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/25_abbration_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"de545d6bd2df1c5b4f6d713c26fe543b904e6d7a2544ee531768ed6d9c38ea29","functional_test":{"relative_path":"multi_indicator/test_25_abbration_strategy.py","sha256":"85b8c12f2492ee7cbcaea24681ddd894f642f075f1cf80cc0435d94043daf3b1"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"25_abbration_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator/95_udvd_strategy","category":"multi_indicator","dependencies":[],"entry_hash":"6f6b46e3c6b9c129d312b731abbaf68aa67bdf6ae2864241f96aa972bebf5dfb","functional_test":{"relative_path":"multi_indicator/test_95_udvd_strategy.py","sha256":"5adf5a38b67f5fe202d2f6ec938a5bf2d940e932aac3eca6fcbfb309649abc63"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"95_udvd_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0001_0092_kaufman_efficiency_ratio","category":"multi_indicator_system","dependencies":[],"entry_hash":"fb714e34afb63b5f2c02a680d470850ad9803aa4ad3de5d40e2cabd583f6a44b","functional_test":{"relative_path":"multi_indicator_system/test_0001_0092_kaufman_efficiency_ratio.py","sha256":"942c5d6a97a4e79ece044e7bffa90c105f44957771d54cd1aeffc74f3a5b6b36"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_0092_kaufman_efficiency_ratio","source_available":false,"strategy_package":{"files":[{"path":"strategy_kaufman.py","sha256":"8c4f0b86fa9d6c404526cf65ea05ad10655f7cceee8c2c20d73e8f4f7f3b4381"},{"path":"config.yaml","sha256":"cabb47688b48cb1a2e594f6dd9e272f8a1b02c2cea520cae589866e7666d7b11"},{"path":"run.py","sha256":"86dba893a62b6af82f245ea2f332043c32f130a7202878d34558cdc3850eca99"}],"relative_path":"multi_indicator_system/0001_0092_kaufman_efficiency_ratio","sha256":"b47d4c2c84509db85a535abe51e884f3e0535763bf8d83127bf4d495968ab11f"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0002_silvios_ea_best26","category":"multi_indicator_system","dependencies":[],"entry_hash":"b741c893c4f5bc6a429e02ddf3ebdb37dca4cd0af1f3fab1e68bf3f155290837","functional_test":{"relative_path":"multi_indicator_system/test_0002_silvios_ea_best26.py","sha256":"f54584c6c1f9a20fab7b0333e447e55d17ef1a1607d4bbcabd9ec6b19a22738a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_silvios_ea_best26","source_available":false,"strategy_package":{"files":[{"path":"strategy_silvios_ea_best26.py","sha256":"df82bc91451453e2e192e3ae2358282731193b07a2e29f8a2745dcab39e79ac5"},{"path":"config.yaml","sha256":"acea2308c6697c75e673ed626a37e5153c36d30e3e8448c6a7032f7374cf2331"},{"path":"run.py","sha256":"1baf47cc90c0b8dd4dd87a2b37a9150267c78dd5db0d92758adee4a22add8831"}],"relative_path":"multi_indicator_system/0002_silvios_ea_best26","sha256":"b9046a805a6d700d8c04e728c5bb64a6e1995f7bc15fda9baf0913fcd5ef749c"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0003_indices_tester","category":"multi_indicator_system","dependencies":[],"entry_hash":"5b3e45e038ed5442aba4b5d661b4faeccbb9d6ea090b909a4f5218418443b875","functional_test":{"relative_path":"multi_indicator_system/test_0003_indices_tester.py","sha256":"93c311f7543209725cee3949576d8f1da6565da18d46aa53ad762b032f8e8be0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_indices_tester","source_available":false,"strategy_package":{"files":[{"path":"strategy_indices_tester.py","sha256":"411bfd4aeca701f395f4e77ab27ea423cf49e3c23853f6bcb5591129f7749e5f"},{"path":"config.yaml","sha256":"099384d9fda30ef053f9e33009c90c24f2b39ac2be41251dd591c99ac99bbdd3"},{"path":"run.py","sha256":"390b92448eada034ef9531e2ca280040e3067f3cd6efa58ef258a520d275bbb1"}],"relative_path":"multi_indicator_system/0003_indices_tester","sha256":"e81dab685e71e51171b381cff21ac1af6796363f403127332c69f1d56d0a1f82"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0004_quant_probability_ea","category":"multi_indicator_system","dependencies":[],"entry_hash":"9ad6409f182fc457ae3551037391af2352d089fe27769d6d3ee86ed49a3edd94","functional_test":{"relative_path":"multi_indicator_system/test_0004_quant_probability_ea.py","sha256":"a023f3b03b01b68496a6cb5a6cbbd7c27e10562b32e7f90e9b2926aca12987c5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_quant_probability_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_quant_probability_ea.py","sha256":"5afbffbcd219cf40e7916e9a01fa52d214aaf188dfe0ba09467a82599620bb95"},{"path":"config.yaml","sha256":"4942f8a62297e09ebcd5e6ef263f86f7f2888cf6d3479ff051b3775bfec6ba16"},{"path":"run.py","sha256":"1ec127621910d2c8a8edd17c1dc129d0d505f54201479e397935aad2c905c1cd"}],"relative_path":"multi_indicator_system/0004_quant_probability_ea","sha256":"02cf96f05da43441b11d385e998be5e3027a588a12b9c21254a05f14c66ddd10"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0005_raymond_cloudy_day_for_ea","category":"multi_indicator_system","dependencies":[],"entry_hash":"7537c2a128dcfab3d0e558c107b032aa4e1d8493a25965a4ac48c6bd70e0fadf","functional_test":{"relative_path":"multi_indicator_system/test_0005_raymond_cloudy_day_for_ea.py","sha256":"85139848dc00c91330f3a4bb474ca61dedd395f156f1869b6c99ca9439b0b968"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_raymond_cloudy_day_for_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_raymond_cloudy_day.py","sha256":"b2f02d98513829169fcb7dfd6e05514c4985f9650b74179f24f6d9f7fe2bd2d9"},{"path":"config.yaml","sha256":"c66d136185b9acf5a55089e69fb9a062011ac249b39d4eaf04c3e21c40f7eb8e"},{"path":"run.py","sha256":"6927098621d8dfcea4923dc755600980bc17584f678a7dd1a1ffaedcbf603873"}],"relative_path":"multi_indicator_system/0005_raymond_cloudy_day_for_ea","sha256":"c4efafa37ac77441797af2dcf0ff744c1f562ed98637ea7b375a6997db7bf889"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0006_ict_concepts_ea","category":"multi_indicator_system","dependencies":[],"entry_hash":"2a91527b8900fab13da59d6fa33f913a8b6cd68ba5a3ae09e732e08f66c98cc2","functional_test":{"relative_path":"multi_indicator_system/test_0006_ict_concepts_ea.py","sha256":"27784002d440b05676caadd94b774d74e84f3dee807c54f439c793138f330808"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_ict_concepts_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_ict_concepts_ea.py","sha256":"8334532bf2779ef41bdec2d6f5a3ae8237362886f71b96abe0dd312ee3dbc72e"},{"path":"config.yaml","sha256":"0132bc67486f379dd29159b16b22f448f625c6c9655ba85479bf09f5dcea7208"},{"path":"run.py","sha256":"51dbb643859b759f80ba71f846c1bddb8c5979c2b9ab77e710b62dd3f65d438b"}],"relative_path":"multi_indicator_system/0006_ict_concepts_ea","sha256":"83a72aa231dc2cf90089fc25fb95167a8e9a6d0ccb31e1f2e2072dc4a555ea69"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0007_day_trading_pamxa","category":"multi_indicator_system","dependencies":[],"entry_hash":"fa381e572b66cc59d47f21be40122c4140701063342dea99cd5080250e498b77","functional_test":{"relative_path":"multi_indicator_system/test_0007_day_trading_pamxa.py","sha256":"35efa41a39c548155242419f312a5ce7333afe6b277ed6a6b725cc776180afbd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_day_trading_pamxa","source_available":false,"strategy_package":{"files":[{"path":"strategy_day_trading_pamxa.py","sha256":"9d9bf114aefd99c18f0c2b266ec05747d3df6d18d7506dedc2bfdcc62b08d025"},{"path":"config.yaml","sha256":"7ede6bd1d4e04ab079290b29bdda5c3becc7be8cb11fdab87141c8786b6255dd"},{"path":"run.py","sha256":"599c6de434ab8f1e56d5caf69ca5866821c65711583ca7e2a2c5edfeaea492b8"}],"relative_path":"multi_indicator_system/0007_day_trading_pamxa","sha256":"370a43caff72e6101656dbacaa293d939c9f0973a5890adacfba9257580007bb"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0008_three_indicators","category":"multi_indicator_system","dependencies":[],"entry_hash":"a879371c84ddc64399a578c1a4b1345d846bfd60536246eedf5634d4ecc531ef","functional_test":{"relative_path":"multi_indicator_system/test_0008_three_indicators.py","sha256":"b17b5b242bd3d4675731e3150d5149c5e1f8abde7024b4c344da38ba51c2a71c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_three_indicators","source_available":false,"strategy_package":{"files":[{"path":"strategy_three_indicators.py","sha256":"5541a2e66cb5eea6ea08a773d64149884b3a68fed4f4fe5d7bce23356034de5b"},{"path":"config.yaml","sha256":"d80c78d26b25cc00b824e9698fa6180f2c7010c1fc33209a0a13d904cc7bbfa7"},{"path":"run.py","sha256":"584007c1850bb2b4237b504a0466ad0884dca6d5308d98dae8aa460911d9d93d"}],"relative_path":"multi_indicator_system/0008_three_indicators","sha256":"5ddf7b63431c0b731b179042db52e6a3408e745552c030ca5e86c1db2ff3be7d"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0009_mamy_system","category":"multi_indicator_system","dependencies":[],"entry_hash":"1f15c1e0d7efbc7ece2e21fbaecd12e5ee65189cc6d66a6cab601c958dc92d2d","functional_test":{"relative_path":"multi_indicator_system/test_0009_mamy_system.py","sha256":"7ef8c8d62c1318ef0a2a423b7b3cca59a25d747c30eb6071353458003e11e7dd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_mamy_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_mamy_system.py","sha256":"b2e3b4989515268c6bb6ea15843031b3f0d0b3d9a41600c677aca9d042422d9c"},{"path":"config.yaml","sha256":"27915da82bc40fc86e34666c5f6dc8af7fee58d7ab63cdc06a20f329d18f3d7e"},{"path":"run.py","sha256":"3e7c4b4d2ba432ead1000f079caf5122f1a13e5f834bff81951d8a85001c34bb"}],"relative_path":"multi_indicator_system/0009_mamy_system","sha256":"5d5058f2cf0e2201aab2712cf23140acb213f6955479d2efb2406ad65e01771b"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0010_lego_ea","category":"multi_indicator_system","dependencies":[],"entry_hash":"2a4ad059dcb5925059b7eb1798d69b88ae2a1e5474eb8567157f2530ef665119","functional_test":{"relative_path":"multi_indicator_system/test_0010_lego_ea.py","sha256":"83ca27aa63d43140237b3474b8870ceec12d6ac1ccb03fe4e9ebb2f80b3796fd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_lego_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_lego_ea.py","sha256":"2d145caa97dcf523a734de4d86fec5824f8a13a91567fe8350d5afa67775df1b"},{"path":"config.yaml","sha256":"f17fb40b0d35f5a2b2907643f545710c516b399d2e041307118621a937bf0b81"},{"path":"run.py","sha256":"e82ef173f6cfc30052b77a68cef2a9d467e89fa24b34e906f74cc3df5f8ca991"}],"relative_path":"multi_indicator_system/0010_lego_ea","sha256":"e6504a1c06f9656abbe0ffbf63964b08d866a6d1af78b8ac2e7867ea1a44d4a6"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0011_mysystem","category":"multi_indicator_system","dependencies":[],"entry_hash":"b8f72bc97f4251fa4b8a7a36d29c9be88a1480dca87a87bae1aaceab245e992e","functional_test":{"relative_path":"multi_indicator_system/test_0011_mysystem.py","sha256":"298f9177e571076d484f4b1119a833084c087c1b680bb52b351e63faacf399a3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_mysystem","source_available":false,"strategy_package":{"files":[{"path":"strategy_mysystem.py","sha256":"b31ed2760544db7454f265447ed3e0984fe62365aeec32875f6fd9ba0de7df2a"},{"path":"config.yaml","sha256":"0f51d140ae113683291875dc8a3ec11d2be7821b71db3e6e1ca9ddd2ada62da1"},{"path":"run.py","sha256":"0e1fe7c19794f308882ff3b1ca3c50d5b82c54fe6d299f72acfd459f97d1754f"}],"relative_path":"multi_indicator_system/0011_mysystem","sha256":"18f7ae97985a3cdec234fb88c6f4711afff69d31bca943a14fa06b84765c7fba"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0012_arttrader_v1_5","category":"multi_indicator_system","dependencies":[],"entry_hash":"ee58ded71ead656e7810ecd20af8ca4771efe828e4f6b392e95257d7653db8c5","functional_test":{"relative_path":"multi_indicator_system/test_0012_arttrader_v1_5.py","sha256":"955018afdc590f1ac6b059784078e3ba9d127f3a59953d58f3b127c6b56f060b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_arttrader_v1_5","source_available":false,"strategy_package":{"files":[{"path":"strategy_arttrader_v1_5.py","sha256":"b5d7b5b6e34f199f9024caa3f73f692a761f554d375aadcb2a0a4ed522fb0368"},{"path":"config.yaml","sha256":"23f773cd4cf00c2823291214f1d0988ff5da802786e978e8ba95f44704431df8"},{"path":"run.py","sha256":"daebd61b943eb9faf25ad58f02b33c49b13483d24b63b359942930d091b900f3"}],"relative_path":"multi_indicator_system/0012_arttrader_v1_5","sha256":"1fa1c9c06d53adf4afca2e8b3257ca8e82da13d5af01f3b5de96f8508bf93493"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0013_invest_system_4_5","category":"multi_indicator_system","dependencies":[],"entry_hash":"3aa287dfb688bbb67a4ca103b438a0d4a843c07a297b14bbb588e8ca0e514a27","functional_test":{"relative_path":"multi_indicator_system/test_0013_invest_system_4_5.py","sha256":"0e9fe3ed99673eeb3653b156c210910193abe4477d7592e0c8c423a74846c3dc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_invest_system_4_5","source_available":false,"strategy_package":{"files":[{"path":"strategy_invest_system_4_5.py","sha256":"815b11fb0b21e607e60663e0c8cf31e3efd6de99c9eeab4f56853c8c8de5b71d"},{"path":"config.yaml","sha256":"14c2c140dbced2f342048b238e5333d8ebb35c2dfe9d1b5b6bbe2e002ed93360"},{"path":"run.py","sha256":"5b9eb006b77ad6698221faa7d8eed9561a7201553af33e1664951952846675f4"}],"relative_path":"multi_indicator_system/0013_invest_system_4_5","sha256":"5ce78c92d83a0919485e975cc705ff5a3824392e40cb5c84c6f1fc0f38900fbd"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0014_steve_cartwright_trader_camel_cci_macd","category":"multi_indicator_system","dependencies":[],"entry_hash":"33d2568b919213f7f513ecfaa6d4317da273aa03bd9a2d1effc25a1a3d47c419","functional_test":{"relative_path":"multi_indicator_system/test_0014_steve_cartwright_trader_camel_cci_macd.py","sha256":"e1671dcf29b843375058966ef0c546fe1d197683f03ddf1b44302715ddbbdf94"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_steve_cartwright_trader_camel_cci_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_steve_cartwright_trader_camel_cci_macd.py","sha256":"0d906633a455b0553d96166d7d72f7d8aacc2460e96d6e117dffcfbb1adad9a7"},{"path":"config.yaml","sha256":"e0b078ac3444b699f39f2199053d981497a13857845000d464fe2cca64e4ef29"},{"path":"run.py","sha256":"05a637de3a02c95fdefa015ff77f3808521a825af7e262d048eac86cedb29e50"}],"relative_path":"multi_indicator_system/0014_steve_cartwright_trader_camel_cci_macd","sha256":"d56bb68644beb966870adcb96bb49d0b4e7911b24258dda1607ddd9eca89b514"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0015_billy_trading_system","category":"multi_indicator_system","dependencies":[],"entry_hash":"18f5253f97385f80fa51ef8012a57ca75ee4250488c37296dd9547b1d0fbd85b","functional_test":{"relative_path":"multi_indicator_system/test_0015_billy_trading_system.py","sha256":"e21556466edb4119635708ca30ece1204bce21a5af791ccf004e1638eb342a75"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_billy_trading_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_billy_trading_system.py","sha256":"f709e9a9b637f7c35c130b3bd784a29aea3f176c526c417da4516a0c29550c2e"},{"path":"config.yaml","sha256":"757a19c99d22f8b866ebe906ee748ff5379f8974076fd93e381816eb91dfa8f2"},{"path":"run.py","sha256":"6156e85cb34aa04e761527227a683b27d2d1be8ce25c685ef44d8d492ae05b35"}],"relative_path":"multi_indicator_system/0015_billy_trading_system","sha256":"510de44a427250617c971332bb4f719c581bd6b5c860667d0e7909628ff4dbd9"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0016_macd_stochastic","category":"multi_indicator_system","dependencies":[],"entry_hash":"ead9ea5d7fa03b9802dd68dc08e98fad696c1126c69f723813ad2b9245c92829","functional_test":{"relative_path":"multi_indicator_system/test_0016_macd_stochastic.py","sha256":"e17c2db2f809d9160ff24e215b6f6b64f98a095a594b38f5e0ca421fce13aeba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_macd_stochastic","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_stochastic.py","sha256":"9f156ffb35c05df4f8ec7c4c19c31548d9fdb7619ee20055e2499941680c20ca"},{"path":"config.yaml","sha256":"9e9180140e0d909de751312d7bc908d76cdc172ba451769ca0cd0e9c960a854b"},{"path":"run.py","sha256":"f8715d2daa0e7db04e711fad757b4b1d2320b4e63028b2cde902ba962ff0640b"}],"relative_path":"multi_indicator_system/0016_macd_stochastic","sha256":"dfd015382bed8ba313d7fb16a100b893fa8937393455b495829715937d40a80f"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0017_harvester","category":"multi_indicator_system","dependencies":[],"entry_hash":"63820163f2222442e9e7ef6f1b3ff5f5793dd2b792281d79fc552baa9f38b967","functional_test":{"relative_path":"multi_indicator_system/test_0017_harvester.py","sha256":"d59e14e5bdbb6e5a2b71be59e5fe6f6add7bcbdb82efc532fb398e68bd5a20ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_harvester","source_available":false,"strategy_package":{"files":[{"path":"strategy_harvester.py","sha256":"163dbeb814aafeea8f798f6cbaad75b70733205890c15a07992033eed2b14a33"},{"path":"config.yaml","sha256":"155f1692c7a3665d2802b58de8ffe793d383f913e6887dc0d2cc79003ff80299"},{"path":"run.py","sha256":"449c1dce625237fa245e5973ba63388bcd43aae0d25b1f85203a059f0a12f67f"}],"relative_path":"multi_indicator_system/0017_harvester","sha256":"9b0b9c82a5e26924e237de3b6f90985efcdd323c3270e4ab026c44d43d407b46"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0018_expert_rsi_stochastic_ma","category":"multi_indicator_system","dependencies":[],"entry_hash":"951f9d0c9ebb362aab3926abac6c2a192e7332559f45d52840475e2670274a88","functional_test":{"relative_path":"multi_indicator_system/test_0018_expert_rsi_stochastic_ma.py","sha256":"8a745bbceb09353e7e09140a9a109e61bfa7604985837f92733629cb5b21a44c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_expert_rsi_stochastic_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_expert_rsi_stochastic_ma.py","sha256":"910087daa4a72af69e86432120b6b873d7c7b635c3ce934a5a05456a6b6672c1"},{"path":"config.yaml","sha256":"2185ad8a4e22394db45281ad1dba6609465a72cae9d8ca33a17575211862563a"},{"path":"run.py","sha256":"3d4a70acf638aababdbe9c8e390f557368c58107051c22592d8d1c112ea4fcf1"}],"relative_path":"multi_indicator_system/0018_expert_rsi_stochastic_ma","sha256":"9acebe21c1df4673c7b339e276f1cf53136e3382fc5c2b8e055088c95e89a75f"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0019_statistics","category":"multi_indicator_system","dependencies":[],"entry_hash":"dd04ecef0e45676bffa3ff7f33a1b4009ed4fded21160c791189a797744bd41a","functional_test":{"relative_path":"multi_indicator_system/test_0019_statistics.py","sha256":"8a58ac0383536e571f526facaf70564136af39053d6f96ad067a6a42c91df8ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_statistics","source_available":false,"strategy_package":{"files":[{"path":"strategy_statistics.py","sha256":"0228080b196b54f483b62f8146e4d631de4d6e66df49f882fbcecc346fd4aa16"},{"path":"config.yaml","sha256":"305b123e61389c7ff8c835cef7281ff0596044fa0904e9039cfd7fcba3887d88"},{"path":"run.py","sha256":"676b8e4560504d2d7881c51409860dda038c38de63455359404df06d19ee33c8"}],"relative_path":"multi_indicator_system/0019_statistics","sha256":"4c4ac4e90464c99101c97fd494265348a67fb543626a236ea36353ebb77b6d95"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0020_mql5_wizard_macd_parabolic_sar","category":"multi_indicator_system","dependencies":[],"entry_hash":"9568d4f8eaf113d3fe0cfabeb717b2b777dc39a1c53d655614e84a73f2b8ce12","functional_test":{"relative_path":"multi_indicator_system/test_0020_mql5_wizard_macd_parabolic_sar.py","sha256":"6ec3495c7758643dd71d10c1faa60efef27901abcb258a00ad98608a2c8d2794"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_mql5_wizard_macd_parabolic_sar","source_available":false,"strategy_package":{"files":[{"path":"strategy_mql5_wizard_macd_parabolic_sar.py","sha256":"cf7878f0507cff4bd5c90f1d1e6241a0c0a7ef9f2734a0df322d4bdd769b0632"},{"path":"config.yaml","sha256":"c7b753fae2a11d6bb35c08475dbc8e8003257733700f672a2d99e027f0e603c1"},{"path":"run.py","sha256":"d9c3636ff37980f3555c4c8054b43639aff8aaa98abb76deac4c5b277d632b35"}],"relative_path":"multi_indicator_system/0020_mql5_wizard_macd_parabolic_sar","sha256":"e3d1607a6e622136e2c2ec6ba29088194d29afcb5fdef287ee4a5e33d679dcd3"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0021_macdcci","category":"multi_indicator_system","dependencies":[],"entry_hash":"760b291d48171e15b70d3e28a7ece5a827fb620e8cf3ce29383760f7c2fb4c0f","functional_test":{"relative_path":"multi_indicator_system/test_0021_macdcci.py","sha256":"448fda9759b78b581ccccf5409a7fbc9a31044da7fab28e4a237ba8b3be7f83f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_macdcci","source_available":false,"strategy_package":{"files":[{"path":"strategy_macdcci.py","sha256":"43b35b6b1b5920336ccbc3f7904f0c71e475a9f7ac5c47bbe1f78ba57fbc81d5"},{"path":"config.yaml","sha256":"64632e6325cbbbba81708243a3b83069ee7d88464a90e1cab5ad54c350e68cd2"},{"path":"run.py","sha256":"90237558d43af5ff9364181ef9e2ee482b465b7aa5315be5b7ca045ceeb537eb"}],"relative_path":"multi_indicator_system/0021_macdcci","sha256":"c91502dfb340ee515aee564d31883654eb0a8d7edcb410322a6e9af403b139a0"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0022_universum_3_0","category":"multi_indicator_system","dependencies":[],"entry_hash":"751b7f70a112e956961f058c4313fd5e4c85ed11ec26ea0acd1f3339ed468806","functional_test":{"relative_path":"multi_indicator_system/test_0022_universum_3_0.py","sha256":"3dd3a825d631f2c57d34ac0de6fc582abc8111ec6a2d4a0eb825cbd936a30f88"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_universum_3_0","source_available":false,"strategy_package":{"files":[{"path":"strategy_universum_3_0.py","sha256":"a5b25731ce719386204df43c3e05302ad6c3782a6a309339dc911822e9d719d3"},{"path":"config.yaml","sha256":"347d40411bfb869009c2a5f2006a0160cec5ef318478b7ed793e7fa8c21daf3b"},{"path":"run.py","sha256":"f6ddfbc4653f658e80df6473f0e947be30842e628bde27b37ae8dcb11de4d3f6"}],"relative_path":"multi_indicator_system/0022_universum_3_0","sha256":"855b5d9219eb967cb0e1d94998dfb0176ec72037f989d4266d69a609e86d5b31"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0023_mtc_combo","category":"multi_indicator_system","dependencies":[],"entry_hash":"13f81302ecc0959abae2f6b67d956c35a1d0cfa9d57582ff4a2549bcd63aebfc","functional_test":{"relative_path":"multi_indicator_system/test_0023_mtc_combo.py","sha256":"3847c802349185820944d4797a1072b07b4b86497d15cbac57b7d353bc9f3d65"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_mtc_combo","source_available":false,"strategy_package":{"files":[{"path":"strategy_mtc_combo.py","sha256":"9a73d63a71eab6a895f6dac1f4de680adabca18d8a6b557311ce6549a2c95ad5"},{"path":"config.yaml","sha256":"537fe1c12ac20f9c55e6599f6eacf2ae635e9d2eb2914eca449cf3409efdadcd"},{"path":"run.py","sha256":"bbf95fe79c9f346e991104e88e7df25379adf35e3d414a8918f0b9a71027a4e8"}],"relative_path":"multi_indicator_system/0023_mtc_combo","sha256":"e45627186c9b9f41df1836fdd69450387ec735ace17e96687cec38a9c8e6018b"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0024_robotpower_m5_meta4v12","category":"multi_indicator_system","dependencies":[],"entry_hash":"728375c302c7ec053071f4f83276328d6c1f1aba42ee1a237d1ef3c7e8c38cef","functional_test":{"relative_path":"multi_indicator_system/test_0024_robotpower_m5_meta4v12.py","sha256":"61e30f8509cfd1c1c441a25a4487e6e51087f86b33116fd9acd584cbbb0779af"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_robotpower_m5_meta4v12","source_available":false,"strategy_package":{"files":[{"path":"strategy_robotpower_m5_meta4v12.py","sha256":"998daed2c05e6d27c73778c320b94b25d7cd47d45ab146733ba4d6d8169e1a3b"},{"path":"config.yaml","sha256":"b880fb878a15b0930b76e2d425601587eaa2342f69144d0acf869a98c3302cb7"},{"path":"run.py","sha256":"98470d6cec3b3a6e7881df300bfedf9832fbf37c322d7a15f2dd0924aafb4167"}],"relative_path":"multi_indicator_system/0024_robotpower_m5_meta4v12","sha256":"1cc7e4623af7ba11d8c3937b62ad15dc29d3e68a17a05e8f07aca7a0f8853088"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0025_day_trading","category":"multi_indicator_system","dependencies":[],"entry_hash":"150618f5a3d3d37030a7a5b48dcadd429265475b4c6c0372e7305ba2c3924fec","functional_test":{"relative_path":"multi_indicator_system/test_0025_day_trading.py","sha256":"b39bc745af57a48e10bca6cef83db7187866c9b68908761eb2e1f375d63bd671"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_day_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_day_trading.py","sha256":"142aff9ed900f3bd4b66168bba267ce482ec122a197b521bc61a490601d47d46"},{"path":"config.yaml","sha256":"de8541313e060e8f0e6a5efbab88eb36a77797705e43113340f957e405f12040"},{"path":"run.py","sha256":"5a2ff4efe220f2515eabb2057b491f53d90ce467415087a986691af16bed9a30"}],"relative_path":"multi_indicator_system/0025_day_trading","sha256":"6d777a017e3e4dfeca44b7d1920538f54a29bbfb3a0062e26291c9a744f140c7"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0026_well_martin","category":"multi_indicator_system","dependencies":[],"entry_hash":"19f7f4abf0ec543d5c026f68a2fe839010f2d1cb7342fbf2ba0eb520e2f362db","functional_test":{"relative_path":"multi_indicator_system/test_0026_well_martin.py","sha256":"ea3649f74dcaef0d7d9248da18760b78355ea0400cfd287b2691c1849146923f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_well_martin","source_available":false,"strategy_package":{"files":[{"path":"strategy_well_martin.py","sha256":"c5d81ec214863e9a280e8c61cb8a5fc4351eca162a1ca2cbfa90e01b6b85a0e6"},{"path":"config.yaml","sha256":"d242b38d0c98317959045329c63a587a4aef38c14cbb7ed8d6c4bc69a02dac2a"},{"path":"run.py","sha256":"956ed626780b7c8be42be10a644ec9bed4cee7d0c46f21420b481c33366a5e64"}],"relative_path":"multi_indicator_system/0026_well_martin","sha256":"6048d1e445b3e5219408d8d0f2f59af7f3a987c7707533818f6ace652af8f419"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0027_sar_adx_sma","category":"multi_indicator_system","dependencies":[],"entry_hash":"53692fc6f6982ca531991ce2cfa2a8d669d9f08a14807db8882b27917740beba","functional_test":{"relative_path":"multi_indicator_system/test_0027_sar_adx_sma.py","sha256":"c3813d08cad3f06557dde25de31147aeffe0e6027e8e6dc4663d6753fbc5a055"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_sar_adx_sma","source_available":false,"strategy_package":{"files":[{"path":"strategy_sar_adx_sma.py","sha256":"0837909a1a3cf08f41b4c9f83cd2afe1fa0594907b755ee8099c1d3468fa0df4"},{"path":"config.yaml","sha256":"1be09b8db48f9fbe7042c1eff45ae590f1713f40e132db880bd2e0dd8d5cb998"},{"path":"run.py","sha256":"a076de70ac6f7337f06390a271081710761fe243a3050ec51f74da56862aa8ba"}],"relative_path":"multi_indicator_system/0027_sar_adx_sma","sha256":"81a152f0555a14cc637f4323f1779b53bd2592e6bdf3143f6ae429b00287c6ba"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0028_perceptron","category":"multi_indicator_system","dependencies":[],"entry_hash":"7050e59d180be67a1f40b125809363778cfdb624b7518f281664eefe991ff1a8","functional_test":{"relative_path":"multi_indicator_system/test_0028_perceptron.py","sha256":"e64ba41f2e2f69839ffad13802d82b56f73e4c83aeea2a17c6bfa19c4d71d960"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_perceptron","source_available":false,"strategy_package":{"files":[{"path":"strategy_perceptron.py","sha256":"23f9e0e20d8c2c869c82912e1567f8c457f4f2b293f4477c2e22f79f37e18a1c"},{"path":"config.yaml","sha256":"ddad274d0a30ef2d19859489e3dac5c5e6fc69516bdc85a62c8a63661c2140ea"},{"path":"run.py","sha256":"c37553c8d1f3563901730c369eae0e451b17efac4eb2977813def0f9bb05ef52"}],"relative_path":"multi_indicator_system/0028_perceptron","sha256":"7f3c1d8673989e7784f7ff5a7bac3733c0c5853b25b1439fddbddc21c670ecfd"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"multi_indicator_system/0029_binary_wave","category":"multi_indicator_system","dependencies":[],"entry_hash":"7f3a0e6994082632ba258cf293eb7c94bf7a872f06c10c564b96160a9f9f013b","functional_test":{"relative_path":"multi_indicator_system/test_0029_binary_wave.py","sha256":"74f3a7c2c6b2dafb2e0b583e5a3782afdceb8813757950302bf9c88c2faf149e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_binary_wave","source_available":false,"strategy_package":{"files":[{"path":"strategy_binary_wave.py","sha256":"ad5f2d89c2545e260fe5ff02ff8dd29c0294c13d31550b7e88d19f9615c28439"},{"path":"config.yaml","sha256":"1463116f499851b6abcd9d524fa376ab215eabac002f90554a5976e6ec5b4b6c"},{"path":"run.py","sha256":"13968255f8ddb41740efc92e3303e2c3d4b14c39383a3fe20030b5593443f052"}],"relative_path":"multi_indicator_system/0029_binary_wave","sha256":"a6b7ee436d395e36384aec3555971475100f9d1fbb6015ce421e21752a3a4a5f"}} +{"archetypes":["order_risk"],"canonical_id":"options/0001_options_expiration_week_strategy","category":"options","dependencies":[],"entry_hash":"39fb96aaef2d664596425c48f71e52c6513363b1cef75b9c7dabb978a9b297a3","functional_test":{"relative_path":"options/test_0001_options_expiration_week_strategy.py","sha256":"214ce99f469f45124ef97ede2648bf05b45680539157b58baf1c2402abd87167"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_options_expiration_week_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_options_expiration_week_strategy.py","sha256":"73f1d7081f39ba1fa58f0c9f39d94cced3d69862c91ca086952228bb0f77151d"},{"path":"config.yaml","sha256":"ea0b09da991cf02a36b29fd08624df300b0d199b9249504074f0f0cfe9950a3f"},{"path":"run.py","sha256":"166fe0d2b271fc9d7fc316e1ea0bd89e11909d64c333acccec4302f46e716872"}],"relative_path":"options/0001_options_expiration_week_strategy","sha256":"2827b2d6e46592f13b8511a678b6b17b1e76779abeca94db3141b0c192e4cd47"}} +{"archetypes":["order_risk"],"canonical_id":"options/0002_options_expiration_week","category":"options","dependencies":[],"entry_hash":"d715cfa9e3b1576cb1fc6649cbcbd330256a0337fcb7593eb5ce987ba798ad95","functional_test":{"relative_path":"options/test_0002_options_expiration_week.py","sha256":"460135266be124821e21ce7ea9a48e0c56f012fb38f901231a553a921210c3bc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_options_expiration_week","source_available":false,"strategy_package":{"files":[{"path":"strategy_options_expiration_week.py","sha256":"df671598a953a970e03c9ee8e92b27fb9fe7b345731db0dc31b93a47e1048246"},{"path":"config.yaml","sha256":"7753bee0f85f379662724bbe31201a1fcbc9ef6ce50dd26525e6d52ed8f35ff5"},{"path":"run.py","sha256":"71b91c5fb6d969c8b6dad49735decfb18c4b2356b28384fb73bfe01380fbe7d6"}],"relative_path":"options/0002_options_expiration_week","sha256":"bc9d4ff7a8043100fb1f72f6c645e633253dd774ba46daaa9dd0772e75934cc7"}} +{"archetypes":["order_risk"],"canonical_id":"options/0003_low_volatility_options","category":"options","dependencies":[],"entry_hash":"a564db16680d60310584c0c5e6e660339f2ba40654ef4eeabf6f37f8dc5fae40","functional_test":{"relative_path":"options/test_0003_low_volatility_options.py","sha256":"177d737a49802b45c3750e5c4f00534989064f41d480fb4782944e5f6fe04e81"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_low_volatility_options","source_available":false,"strategy_package":{"files":[{"path":"strategy_low_volatility_options.py","sha256":"9b87da33b9a0e71b19c71df16084391f03191bec95905c030d908ac97922bab7"},{"path":"config.yaml","sha256":"051ca7ae3f177cdfcde64b7721e61e72c0409175ecbdea9a702cf85493963acc"},{"path":"run.py","sha256":"de89e2995f95f2ecd85e29afe04d942c6eab46ca23604248ddafb794eb1683fd"}],"relative_path":"options/0003_low_volatility_options","sha256":"025ba5655df56e24a386c3ce1249639842ea3acf2831e66ff8f418088a0fcfe4"}} +{"archetypes":["order_risk"],"canonical_id":"options/0004_options_valuation","category":"options","dependencies":[],"entry_hash":"e439b4d2bd288283b9272702979c82947538384284c18f2a5d4c47dc50e07cd1","functional_test":{"relative_path":"options/test_0004_options_valuation.py","sha256":"9c87cb060c4473389c7efdcee4454f0a12c1472caa62be8883f17a5d37171f9e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_options_valuation","source_available":false,"strategy_package":{"files":[{"path":"strategy_options_valuation.py","sha256":"ecc54354a6c595cfbe484d129e348969f774d75f4230100d369d3bb338bf3067"},{"path":"config.yaml","sha256":"b3e30fa2efe928c162e3b5f966f6a91f0fc1d3a1567f46d6d72dc369ab088747"},{"path":"run.py","sha256":"028f14a7ebbd5ef0763bfa31f57194868487bf571d5da77dcd1e39fbd2e5f122"}],"relative_path":"options/0004_options_valuation","sha256":"555372d6d467c80d0e1e0cd722fc2a29694460fddfd9dec2880197631d22d775"}} +{"archetypes":["order_risk"],"canonical_id":"options/0005_gld_put_write_strategy","category":"options","dependencies":[],"entry_hash":"86509509bbf34bff5570d8e5f4ca369319bdb32bc678ea0a25d4135226fe8a15","functional_test":{"relative_path":"options/test_0005_gld_put_write_strategy.py","sha256":"75fe3779e797be8dc54f12bb53cca886b57d4c779c8f4bfb1e88217e9e37b32d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_gld_put_write_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_gld_put_write.py","sha256":"c6a9c8a62e133669896792999b49ebadc612be4ec1a1ffed0f7dfadfd8cfe314"},{"path":"config.yaml","sha256":"782ed108b30033e95c44960610594aa3f17457272cab42cc6167746574ec694f"},{"path":"run.py","sha256":"09e857b6b1e8e673365f2158335bdda0e7776ebc2258d5f2d2dab9e641fc092d"}],"relative_path":"options/0005_gld_put_write_strategy","sha256":"d5a5be03a2d944c64117948a868155d5ad0ec71e15db0f08167f34b2ed51a805"}} +{"archetypes":["order_risk"],"canonical_id":"order_types/05_stop_order_strategy","category":"order_types","dependencies":[],"entry_hash":"f4eba9563d737ad15e176f89bde8ad8063640e8c87fdafd82752a037b52b973b","functional_test":{"relative_path":"order_types/test_05_stop_order_strategy.py","sha256":"48d6568f13fcf41e22908cc4b033bd4f2e8c96a42568d76ae48a4c7857a712e6"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"05_stop_order_strategy","source_available":false,"strategy_package":null} +{"archetypes":["order_risk"],"canonical_id":"order_types/37_bracket_order_strategy","category":"order_types","dependencies":[],"entry_hash":"528554ee16b192076f4a75f2ed7a56c727163a239109de71dd8177fbf3b63e76","functional_test":{"relative_path":"order_types/test_37_bracket_order_strategy.py","sha256":"6cf30736e1b985607ed37bcb41aeb23bafd32e04df37d01b6e4f145dfc45a174"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"37_bracket_order_strategy","source_available":false,"strategy_package":null} +{"archetypes":["order_risk"],"canonical_id":"order_types/41_oco_order_strategy","category":"order_types","dependencies":[],"entry_hash":"1fd93ba39ca176bd871b332caa7c4a32df3849b4f4768514f1775221c637544e","functional_test":{"relative_path":"order_types/test_41_oco_order_strategy.py","sha256":"b3e6c3b359e529349ebccf10ebbae80dcdb06fe77ce5d1bb37bbcd374fab28a4"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"41_oco_order_strategy","source_available":false,"strategy_package":null} +{"archetypes":["order_risk"],"canonical_id":"order_types/42_stoptrail_strategy","category":"order_types","dependencies":[],"entry_hash":"e0cc148a2af735fe3e4c9a9289065fc1d36060ff18298fde84456c2b439de374","functional_test":{"relative_path":"order_types/test_42_stoptrail_strategy.py","sha256":"db4663b96534b7b392df6e4245e3a20a8c33ae1312b7a0c9188660fd2bc6d800"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"42_stoptrail_strategy","source_available":false,"strategy_package":null} +{"archetypes":["order_risk"],"canonical_id":"order_types/43_order_target_strategy","category":"order_types","dependencies":[],"entry_hash":"76c655463d2ab16152e14392c84f213ea5f22d6027f872648689d6d00d8bcb76","functional_test":{"relative_path":"order_types/test_43_order_target_strategy.py","sha256":"41a8eb547d9990d39d58b671f74db76fac493720cd4929f915d3cff95bd866d2"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"43_order_target_strategy","source_available":false,"strategy_package":null} +{"archetypes":["order_risk"],"canonical_id":"order_types/61_order_close","category":"order_types","dependencies":[],"entry_hash":"c4513257dc406099b5964aaac6bade1c833ff63ba60eaccab1ad46c1a19b1cf2","functional_test":{"relative_path":"order_types/test_61_order_close.py","sha256":"6fd56b15c439e164d02b2d5af81206801332b5d6b024eb075dee6e5acbdd062e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"61_order_close","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0001_gap_n_go_fade_from_50_day_low","category":"others","dependencies":[],"entry_hash":"7dce6bdfba0b95fae0a139ef9618a850a056793f430ed5a1c7c0e7e45ac660da","functional_test":{"relative_path":"others/test_0001_gap_n_go_fade_from_50_day_low.py","sha256":"5baa736fcb83d976d1b87f95cc3986a94bef39917086fc9ae8defcfad2ad561c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0001_gap_n_go_fade_from_50_day_low","source_available":false,"strategy_package":{"files":[{"path":"strategy_gap_n_go_fade.py","sha256":"ad193bda6530fe322123a6a6138faba87423a79ae23076326b663aa370b2b939"},{"path":"config.yaml","sha256":"2483d73636e9bbbe4ffed0f472299a77e3cb5738036dac14718a3a3629582c2e"},{"path":"run.py","sha256":"9c7c2f13720c4228f0b7de5e5078db9389687b18ee46079662ffac0fe2b0d102"}],"relative_path":"others/0001_gap_n_go_fade_from_50_day_low","sha256":"40a36cebd740313b514d30e2ec2c5ef0fd4792b4aa1fce2d8a8bfe79f7510209"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0002_monday_drop_bounce","category":"others","dependencies":[],"entry_hash":"bb2a6c3760145796bbc1a9b6e8b2c2a96171fcdd667e99c0ca5d1c36a8130f79","functional_test":{"relative_path":"others/test_0002_monday_drop_bounce.py","sha256":"a60b99303c6bb7f5e64dc5b9dc3e1fe7e6124f90df924d86c8cdc443539a35a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0002_monday_drop_bounce","source_available":false,"strategy_package":{"files":[{"path":"strategy_monday_drop_bounce.py","sha256":"bb9b608568ff233f4e798195b96f02e6d6a5e1d13a88550153c74a70735a8fcb"},{"path":"config.yaml","sha256":"08ddfe955a7e414c7872dbed9c5cae1b59aaf1c0b59ca0a44274a23821a52f22"},{"path":"run.py","sha256":"e314fc0e56f5872a2ad9a9cab129236e2d40262efc120962101c6cef5a6f26e0"}],"relative_path":"others/0002_monday_drop_bounce","sha256":"3088206d41f334a482453a74f31c40a73b7ace052c9b461890839623a81f1d38"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0003_52_week_high_effect","category":"others","dependencies":[],"entry_hash":"b3d5e99647b13da91649d5661721c2f7b7a5c5798fd7ae82fb8180e58f33413c","functional_test":{"relative_path":"others/test_0003_52_week_high_effect.py","sha256":"3b326548197f06d460cdb18fb4acce9ba80b7018614709f6cfc7cf132a16f028"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0003_52_week_high_effect","source_available":false,"strategy_package":{"files":[{"path":"strategy_52_week_high_effect.py","sha256":"78a7c59c853523b67656717d9e42292d8cbc69c32c384d8730c6e4edcaadb8a2"},{"path":"config.yaml","sha256":"6cb93414f6223577612f1b560cd86e5ecd03d4e1a3a0e1af43dea0a59263c061"},{"path":"run.py","sha256":"760600b803a3526ddb676c573beadc319f1aa559d72820cde297a79c2882b220"}],"relative_path":"others/0003_52_week_high_effect","sha256":"a839f5b9edfbb5d6f8d8574df58f8f2d20ce2be2cb824eb646c3ae701dfd21da"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0004_multi_timeframe_trading","category":"others","dependencies":[],"entry_hash":"dfca97206989edbff9864e7b8fffec0178c62288092e0820ec574b10db273fea","functional_test":{"relative_path":"others/test_0004_multi_timeframe_trading.py","sha256":"c4c53af2161b9db45d1cea9703e7942743b823bcd12a603caa8cf213d02d00f0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0004_multi_timeframe_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_multi_timeframe_trading.py","sha256":"e282ce2d1dcdf8396de919b6d57a304b6b8eaae373102f3d8cb1266b0541268b"},{"path":"config.yaml","sha256":"b6bc5ecefefc737cd252046183c5f2cab0330e3cfde32de94d590ecd47246ece"},{"path":"run.py","sha256":"167e01177932d8e46dc31898bdad51e911ee0032848261a19c36c55fd8f561d0"}],"relative_path":"others/0004_multi_timeframe_trading","sha256":"e36a90ed78615b58f8be1392abeaceac627dce82d5ded30ff2d2fc46d895a37e"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0005_gold_aca","category":"others","dependencies":[],"entry_hash":"1e501916cac7335499a9f64724299a73b6fbd0754a67eedc704e6ad1bf0ba40c","functional_test":{"relative_path":"others/test_0005_gold_aca.py","sha256":"eb41a09e429e7d21fee13e37ff7dfb87661ca43e94a9a638ba887c72c00dd91d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0005_gold_aca","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_aca.py","sha256":"145e17c1b85f5d6f3bf5440f02db881bfe4aaaf279c1220fd7da233005c5eea7"},{"path":"config.yaml","sha256":"392128a10e966c6c99f334b1f69e8fc8a82e5b32ac21c571250098e3d62b724e"},{"path":"run.py","sha256":"0146349bd4ba16b0eaba0aa3c0ad664903d83b1ae5a5406af928421d58960485"}],"relative_path":"others/0005_gold_aca","sha256":"a2bf307f14db5c24078836059aeaa12ada82579cafa28f0904eb00b5ba54220c"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0006_mixture_model_bottom_prediction","category":"others","dependencies":[],"entry_hash":"a031d832864ab7fe4b9b4f70709e09718be7fd949d0a451fb64feaa35bd20184","functional_test":{"relative_path":"others/test_0006_mixture_model_bottom_prediction.py","sha256":"997523f9eef1694c1394c0b85373bbc978c9c66235299b09345b5ea029b23fa8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0006_mixture_model_bottom_prediction","source_available":false,"strategy_package":{"files":[{"path":"strategy_mixture_model_bottom.py","sha256":"bfdd8e1adf2c852abcdb00619b7aec2e2be8be2529f8e5308a091f646d8f63d5"},{"path":"config.yaml","sha256":"a9ea3f401c27a56bbd8269f9478a5f6b1cdc1a7f4784f0d389ea7bc8b3d8060b"},{"path":"run.py","sha256":"eef677dd591a36e4c76561683a4cc5419c7f84215377bf781e437eb29aa8b368"}],"relative_path":"others/0006_mixture_model_bottom_prediction","sha256":"dada3137a8406e530aaed8526e05a4988d5c3b738a39ed6064617ce42b0b9ffc"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0007_sgv_market_correlation","category":"others","dependencies":[],"entry_hash":"a0728404fa03a4d6469dbc1637f988dcb6edb62922bb532a2d1c981aa4e7f8e1","functional_test":{"relative_path":"others/test_0007_sgv_market_correlation.py","sha256":"fe572f87b4aaeba960f17673830eac7bce25a8b0f28e0c712bb5238ce7e3e72d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0007_sgv_market_correlation","source_available":false,"strategy_package":{"files":[{"path":"strategy_sgv_market_correlation.py","sha256":"852ab6f6806d938abd0b9e2b00012d5aadff43d7ddab32930e24d9abf2d2dccd"},{"path":"config.yaml","sha256":"2824266894d74b79fe87256e844a83778332c3d2bcb64fe3330c45f1ea5c6fd0"},{"path":"run.py","sha256":"1aabb8289ecac11cb56c59c0b6c05a81ae9e036a5bf2a087e80ea1ab1b553d68"}],"relative_path":"others/0007_sgv_market_correlation","sha256":"f692d3c485cc9c5ea12107aa9c01e69a7cbbdfaa825cd0213bbefa9f70b3d666"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0008_market_timing_indicator_comparison","category":"others","dependencies":[],"entry_hash":"e927bd266c0c4edebd3bb0901c4b509afd6d68107ba5a25c6a5395fde765ba83","functional_test":{"relative_path":"others/test_0008_market_timing_indicator_comparison.py","sha256":"0de0e9b0fd85c3a4e4529f9b0643243bb5cf8c84e58740d0524df6e62e2634f7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0008_market_timing_indicator_comparison","source_available":false,"strategy_package":{"files":[{"path":"strategy_market_timing_indicator_comparison.py","sha256":"d0d1e3d2ed5556b79f18ec0124688eed742e1a683cff39cb39ec56cf367e0bc0"},{"path":"config.yaml","sha256":"bfbc57c49add4760dca609e308eb2446aecfa32c504df1dc591a88b71800f780"},{"path":"run.py","sha256":"95570033a645cd96479fa2fd5e3fa27d68ce94102839777151569062a6080586"}],"relative_path":"others/0008_market_timing_indicator_comparison","sha256":"9e39cf3855b7e32926f87d8d58e982e68d7efc8d98aabf79ffed599645c9a371"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0009_strategy_decay_stop","category":"others","dependencies":[],"entry_hash":"4c9853712cea4efa7dfe569ae8f59b5c46a3b851c37f6785d8554ba61eae9e98","functional_test":{"relative_path":"others/test_0009_strategy_decay_stop.py","sha256":"fc693a1eddd3f00c8659c9c3d3de71c47ba83f7c99bb515cabfcc6f8f696a985"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0009_strategy_decay_stop","source_available":false,"strategy_package":{"files":[{"path":"strategy_decay_stop.py","sha256":"977f612bf08c33b05781848295b1dd8beefb20eb2da8e9d429c640527cb4e311"},{"path":"config.yaml","sha256":"509653fcd50d9d89faad57e96c48f5880c94be53abe240db7d6006ecdd13c8b9"},{"path":"run.py","sha256":"5bfbea77a11ed5cb63a4e948367e1364a5f22b69fcd2888ff9a8627d31f0ae64"}],"relative_path":"others/0009_strategy_decay_stop","sha256":"ca1baa46e2db5c4ff30ea737e41bea4f4ea6734ef3bde682e246a647a05d648e"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0010_intraday_momentum","category":"others","dependencies":[],"entry_hash":"590d4252511ab3fd70282104b29d52f82ffc119cd307020a82e8cd6282650a98","functional_test":{"relative_path":"others/test_0010_intraday_momentum.py","sha256":"5eeb2ee3d999aada625488112f593330de27d8052c3628b48baddd28645d98e7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0010_intraday_momentum","source_available":false,"strategy_package":{"files":[{"path":"strategy_intraday_momentum.py","sha256":"82bf0e41d99a89fea6e7d3fb8c5c8465ec7d5d61197bf10d0912478b6c05d841"},{"path":"config.yaml","sha256":"fab065b9c805e604b36e1ba5d726083f1f33fc8f5b9407d3d6a1fe0659b082bb"},{"path":"run.py","sha256":"e782f0c6c9e918859b7576ed8a04bb87028477759befef86f1fcb433799f32dc"}],"relative_path":"others/0010_intraday_momentum","sha256":"ce08ef9f884ea3db9b042ecdd242bc34a335e98d8a0365f54b6923f15b45271d"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0011_simple_hedging_time_exit","category":"others","dependencies":[],"entry_hash":"6b6265ae070506d573e837c8595cb55584a0e5ec653e42425a08c377cb35db59","functional_test":{"relative_path":"others/test_0011_simple_hedging_time_exit.py","sha256":"91b54601f61e605e484e2771e1058f47e4e4c2e6bfd5bd46ecd75550b97ccee6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0011_simple_hedging_time_exit","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_hedging_time_exit.py","sha256":"db4d3ea4af44a2b2c75f4b6c3ba788c262f8908a5645582e1acd5f05c148433c"},{"path":"config.yaml","sha256":"168fe7b6aefea8f80b5ba5453c7bf08fa2af41c5eef0185a9b4522f2bfb94b80"},{"path":"run.py","sha256":"39d1b365684d0a420c4c23977b5d58b7abffd66fd306a062fdda6215d0c09f16"}],"relative_path":"others/0011_simple_hedging_time_exit","sha256":"f6160a63caeb062d318df7d815775a5f4d513295a7b11e958e34c92cfafce937"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0012_cbi_bullish_signal","category":"others","dependencies":[],"entry_hash":"367697ef66ae1e40721fb84f437956f66266f4efe5d28ee069c23c498e5f9fed","functional_test":{"relative_path":"others/test_0012_cbi_bullish_signal.py","sha256":"bf45e1d896c2af1a645d04eeed205cb74ba89ad9f0496bee486d0521f6ed270f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0012_cbi_bullish_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_cbi_bullish_signal.py","sha256":"7c44a0d2be7d351838f5a4bde91d6cc85bad853ce7328089fcf60c0c658fa198"},{"path":"config.yaml","sha256":"1a5130166a0b30a21ee6c22921820b5001e070ed67cebb81bc1a4e22a400a562"},{"path":"run.py","sha256":"90614b277070e0036cdc350c04b8862b65610ad96ae370f965a3ab4d90e47b81"}],"relative_path":"others/0012_cbi_bullish_signal","sha256":"b7c2e7921e7a06e45b4fca4cf74866d45549be4c0883aa5ae9557d558bfd7222"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0013_dividend_aristocrats","category":"others","dependencies":[],"entry_hash":"6914a1dde92bf0bde6a9b34fd94deb2e687cda3ab793ce59375a2cadde258e6d","functional_test":{"relative_path":"others/test_0013_dividend_aristocrats.py","sha256":"b41109136003355eb9d3106a5dff4728e7b2f5fbcc8e128880b98f7bd5add259"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0013_dividend_aristocrats","source_available":false,"strategy_package":{"files":[{"path":"strategy_0249.py","sha256":"4ab964e02a18e5c76e73e91ff4ae7c71acbd6db9f5277cb405af7e17c8c729cf"},{"path":"config.yaml","sha256":"1c29c2a74c5df2b95c88d44206b495a56d250b31c94f76f1287fdd818e2463c3"},{"path":"run.py","sha256":"3f3fee7be9a4049ed519a82d207cb1c4a1f1a6179d8d0f97e30503ea3c6dc64a"}],"relative_path":"others/0013_dividend_aristocrats","sha256":"49bc44faf888585979fd3df77722e94871cc0aef3620a7e966330138a2144bf9"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0014_friday_bounce","category":"others","dependencies":[],"entry_hash":"be06075c3ffd43f30e307e557acbe4413433eedadf69407ade94b352377b332d","functional_test":{"relative_path":"others/test_0014_friday_bounce.py","sha256":"4b660c049f64a653fac13a6d8c74fb6a889a81c135c253e81a39c98cc6e2bd46"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0014_friday_bounce","source_available":false,"strategy_package":{"files":[{"path":"strategy_0251.py","sha256":"ee365d3d9227ebc52fa534270ad08ca57b7f9f9ea5d569693b6f1c2fc13747a8"},{"path":"config.yaml","sha256":"8374d0493cf04604a64c737202d4e7a2ae2f9781dc644c99efef16ca3b88ad5e"},{"path":"run.py","sha256":"f7b103df11d1b623ca51c3abfad2bf0499911bb98c997c0c690de52dfb9c953a"}],"relative_path":"others/0014_friday_bounce","sha256":"a43938c8fadd605d5694c24bbeb8152ff1cc7061f22688d4900a83001f6c2b32"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0015_breadth_divergence","category":"others","dependencies":[],"entry_hash":"47a1f5b81be4c799d05a1b43f8b68b418f41ab7cba02d0b34835b39006f81d6b","functional_test":{"relative_path":"others/test_0015_breadth_divergence.py","sha256":"765d18f8066d6ddb37c7eb76f2a884072310fc61aef63b5507bcdb85bfe26ee0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0015_breadth_divergence","source_available":false,"strategy_package":{"files":[{"path":"strategy_0255.py","sha256":"b3286559feb6338eb3a012ea36a99090b3cc9cb3faa2e1b57915a03d36364dbf"},{"path":"config.yaml","sha256":"f3855f150af2243c37e1e1c6161f5022871cd59c3bb6bcbad58acc36fdfb770c"},{"path":"run.py","sha256":"cc3835b5bc3e928d5fc3cfd963f9af7dd35e151a9f2f553d1b500763ea034270"}],"relative_path":"others/0015_breadth_divergence","sha256":"bba3d88b58261c1e945d2267ba255b766e85690882dff4c099c5d843267e4c65"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0016_january_opex_weak","category":"others","dependencies":[],"entry_hash":"c8ca028c2ab39df849bde8ad7fdd3dbed259450f1d00f10bf7fbebbca3219999","functional_test":{"relative_path":"others/test_0016_january_opex_weak.py","sha256":"4f5b5ecf524d1e9a4a7e8629a4fbdde709c2f9effe5d72d72be1628e539d9501"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0016_january_opex_weak","source_available":false,"strategy_package":{"files":[{"path":"strategy_0262.py","sha256":"d2425409eb18832fbc49c82b7edcd79a39483e0f0d0bfecbb707f02d5e6c5c38"},{"path":"config.yaml","sha256":"dbe05fba2ab8bad7802eff39dca221d29d4bc58b4be01b68e13e2f3171504c5b"},{"path":"run.py","sha256":"c7cf1352f72157498a8f265a76d55e381d4d4e005520f56f94145431dcec87f2"}],"relative_path":"others/0016_january_opex_weak","sha256":"82271e37e71cda02e665978982b0c4b506f6bc5b13a10e4a7812bd34db1c5a5c"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0017_omega_ratio","category":"others","dependencies":[],"entry_hash":"5d3a296b11894609b17a8569fe049c3be8a8ada47cae98c3621978258915b233","functional_test":{"relative_path":"others/test_0017_omega_ratio.py","sha256":"8e03f7a7289299b8c19150abd6bf8a0156c77802d0670d301a5e5a885f154461"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0017_omega_ratio","source_available":false,"strategy_package":{"files":[{"path":"strategy_omega_ratio.py","sha256":"ebc14b2cb8804023e0dc324a12a93e24b52e617a38cd27c00eeae0fc47533838"},{"path":"config.yaml","sha256":"e98179c92125eb5e9d33d0cf4917537abbda69951eab7c5fa55aeeb29f8533e6"},{"path":"run.py","sha256":"523d9ad59e927ca47640e0021dc9a98c8bf84a003dfb6299f9fdec255d812c99"}],"relative_path":"others/0017_omega_ratio","sha256":"f976ce2b483d48f8059fc1678e5af18ef132edc56b863c2db82b7a9074771324"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0018_zweig_breadth_thrust","category":"others","dependencies":[],"entry_hash":"43271185001bd97a9d60de2d3d92053149fa4448254e7fa47e75b243627b49c9","functional_test":{"relative_path":"others/test_0018_zweig_breadth_thrust.py","sha256":"71d282d05f2c7f822f107900ae4326ec2a32a6ed9627460f6743fc46de127a60"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0018_zweig_breadth_thrust","source_available":false,"strategy_package":{"files":[{"path":"strategy_zweig_breadth_thrust.py","sha256":"2f7c0e0c22ee2d5c0c7a7a7fcc6327d1383f9377ff5eba7811c3eb68eabc9b5a"},{"path":"config.yaml","sha256":"6ed4af428a56ccbf68e3d524d82180c96512cd543df9d09d3320e6e7faea3e93"},{"path":"run.py","sha256":"6b26d7e3096bd77c62300c25c85a851a433ff8e49db26098dc859e9f8821ed1c"}],"relative_path":"others/0018_zweig_breadth_thrust","sha256":"24ca33fcabd947b4e01c37fa5f8ea7907741c79db63e75a99fd8e248b793fd4a"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0019_pattern_detection","category":"others","dependencies":[],"entry_hash":"c97416a3da1e63a8a99c846412d821e91b2bafc2ac0b4de69cb1ad06c7378db9","functional_test":{"relative_path":"others/test_0019_pattern_detection.py","sha256":"7d322f75c61235749f98369fd30d1f78b058ebeaa6eb3361cb22d3dcb3454bf4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0019_pattern_detection","source_available":false,"strategy_package":{"files":[{"path":"strategy_pattern_detection.py","sha256":"4dbe52876df4ed48fdf4efdf565fd9484839b26ee3b7ad11a0540437e81b8468"},{"path":"config.yaml","sha256":"eb8935ac75a45b9ad8240b873cc7c684c992009563f1742cef6e73d37f9c3f13"},{"path":"run.py","sha256":"8f33d03bf2d94f26e6125a0cbf2aefcb6f0a3437d5f695cb0e1c5adad077e583"}],"relative_path":"others/0019_pattern_detection","sha256":"21619ef816482392a93f938a100dca9f01a0c9c342ec9b52661e144392edaae8"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0020_fifty_fifty","category":"others","dependencies":[],"entry_hash":"863dcad18c18df151b7e2126fe0c56f65e3acdd0b1a124a72b9f8bc719cad092","functional_test":{"relative_path":"others/test_0020_fifty_fifty.py","sha256":"5ac7ca742d05f05ab2f080bdd5e3153bb37f04b5b66b2d711b2ba71a20929ea7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0020_fifty_fifty","source_available":false,"strategy_package":{"files":[{"path":"strategy_fifty_fifty.py","sha256":"e0b8cd52a78cbded97c05390f14c846c6f5665fbd4a2b09c60b7f536456ce024"},{"path":"config.yaml","sha256":"db53a6ef13e7db26e5fd23ba401e3c7f98205bbeb761a5451d5d39e71d55d3f5"},{"path":"run.py","sha256":"f631c2d4c71ec8f540208b5ec4d6da3c637268d83918babd80a6509f872f1ca9"}],"relative_path":"others/0020_fifty_fifty","sha256":"b796874c56e0876e32ae34b0cc34b56e162092f7a3dbe590594d309fa6fff699"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0021_end_of_quarter","category":"others","dependencies":[],"entry_hash":"5b9aba8ddeecf22081bb2d6ceed4b8914474910e7975663e898767743301c074","functional_test":{"relative_path":"others/test_0021_end_of_quarter.py","sha256":"029956baad131c73fecb1154d6c4208da91a4f3ed8cbca6ee19a7787a7c91bb2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0021_end_of_quarter","source_available":false,"strategy_package":{"files":[{"path":"strategy_end_of_quarter.py","sha256":"bdb9bcae36e975d8b289d20ded06be6a01a34183d5421b728c797755bced70dd"},{"path":"config.yaml","sha256":"5a3290a13c3fd6f546083cc6bbd8b913b0f8f8b4bdd4b3745c836b69d52657c7"},{"path":"run.py","sha256":"6df110efe630e6d0b0fedaa3c4fbd873a309d4f2195140dad3ba72e7663ad84a"}],"relative_path":"others/0021_end_of_quarter","sha256":"0971870d275e5d6126ce3ed19ee690e8d27cc424fd316be9e657320f9b349352"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0022_top_wobble","category":"others","dependencies":[],"entry_hash":"7f1ef79c07e8307bdb5c4e4313cf35ba91ebf2e106a5bcbfe53caff1be9b9886","functional_test":{"relative_path":"others/test_0022_top_wobble.py","sha256":"266f183cc7b7e21b879da65e4f20ee488979677cc03752b5866669414478e082"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0022_top_wobble","source_available":false,"strategy_package":{"files":[{"path":"strategy_top_wobble.py","sha256":"f84e639ca96092d348ce02ef0e9ac5b460de7ea3f534b921efda026f84d72329"},{"path":"config.yaml","sha256":"fc5099143c0c7ff8d3a849bfc47ce24f941ce51f44ffa3bb5d2f0f4820cfdb64"},{"path":"run.py","sha256":"01094cf957de3edf2c809bfcfa5d3c321fd4b8f83c6a1d76d6d00a599aab5e1a"}],"relative_path":"others/0022_top_wobble","sha256":"0b2d89a164a527caa546e4beda2f21ed239323b7e2d5e4a3f2e6b348a38a11d8"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0023_modified_hikkake","category":"others","dependencies":[],"entry_hash":"c1b4982e024827ec0c0b2ca179b4e7a5e561cdc577846cd97ca800a1ba320bad","functional_test":{"relative_path":"others/test_0023_modified_hikkake.py","sha256":"591520803228ea0523aa861ccea1d611db13b112fbd7a1b9e6e303ef106a9dd2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0023_modified_hikkake","source_available":false,"strategy_package":{"files":[{"path":"strategy_modified_hikkake.py","sha256":"4b1e196f7dad0928fb3f96607ed401359cc4789fb26e2f667faf4d2a4195ae70"},{"path":"config.yaml","sha256":"213ff1c20c2cbebe1eccd00db535f0127301df369b329ca032b2d2be6edcdb43"},{"path":"run.py","sha256":"9b0435c018d9c4d790bd11e8860891af0997041456b18f25e5394d4e4bc0c4cb"}],"relative_path":"others/0023_modified_hikkake","sha256":"2267d8f5c319953e1da8b83048e22e88022a3ee4e8c1b2077925ab8d696551a8"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0024_rut_spx_divergence","category":"others","dependencies":[],"entry_hash":"0082c58b6b1b109e3a6afefa4c75a87c6ca4c0d526a5d5798c1d2a1cf7bfdae1","functional_test":{"relative_path":"others/test_0024_rut_spx_divergence.py","sha256":"76009dcbd83434fec25038965d136700639d3e21fc76ef59c05d41c8a1f9c2ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0024_rut_spx_divergence","source_available":false,"strategy_package":{"files":[{"path":"strategy_rut_spx_divergence.py","sha256":"1bea4a2b97bfb078d3d4b6747d53748954f5b87c4b49ced911a1e70ee2b90cf7"},{"path":"config.yaml","sha256":"97d20f2b204117f91498f143b1b58955c633ec10fd7e507f62c604293214541c"},{"path":"run.py","sha256":"8b0c04af3d63e7c3d0f6ceb4db06dbb68102920e460a15bf88bc2b01c87b0d24"}],"relative_path":"others/0024_rut_spx_divergence","sha256":"aedde940f6573a7139f5e15c580c3d5ebbb6160e5f678ef40940e26cf80c6d06"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0025_memorial_week","category":"others","dependencies":[],"entry_hash":"787258326632608ea12a2d5472d557f29c11f4bd02a1c189bad470b72e7d1fea","functional_test":{"relative_path":"others/test_0025_memorial_week.py","sha256":"56f1de05c96856117f785775a841ebbb08f235c0ae4009ff45a3ec3527f2db81"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0025_memorial_week","source_available":false,"strategy_package":{"files":[{"path":"strategy_memorial_week.py","sha256":"1678a4b4440640200ba0d3e57d1fc117034ab31190711bdfdb319f275e287453"},{"path":"config.yaml","sha256":"f8944eaebe58ac92328173b451a30ec16f0cbf6b606e201cd0011d4823c94283"},{"path":"run.py","sha256":"8d91464b705f6565151aee12024e8ac48e24d0eac25fca122f4fdf62c33b7881"}],"relative_path":"others/0025_memorial_week","sha256":"fabcb311c0063d2e24a1de571cf1abbc31c0869540f0513e011dfcbb4a7adb18"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0026_day_of_month_timing","category":"others","dependencies":[],"entry_hash":"49791c47b26ea0258d7f30608f0f160c1da5d73ef34b88bd8cd9d6fbb60e1a35","functional_test":{"relative_path":"others/test_0026_day_of_month_timing.py","sha256":"cb4191b66e38a96ffa11f1a1c3b2ca198fb6234beceacc3d26a52c9c50a932ae"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0026_day_of_month_timing","source_available":false,"strategy_package":{"files":[{"path":"strategy_day_of_month_timing.py","sha256":"f879d360c1ba7e26340d58299bd52df1262272dd259fe01dc2dcd81c7346fddf"},{"path":"config.yaml","sha256":"35592f29a7e3f6e7d3d3f35a6c6d5fa18d54d76e5287a3ecd1db32120034dd4a"},{"path":"run.py","sha256":"5da1c436d97e29a32159860b76773c51baae4a5ec5686a82dfbf24d6f28676fb"}],"relative_path":"others/0026_day_of_month_timing","sha256":"04a22cf1bfa4ba78a8e6fdcd59154ad3faa3268984e5a040f2938f6557ecc6a6"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0027_swing_trading","category":"others","dependencies":[],"entry_hash":"c8ec505ca4ae773cec61cdf3ed4d87d7e9054f7468f2c4374d2b0bbbf2a294d5","functional_test":{"relative_path":"others/test_0027_swing_trading.py","sha256":"1fbd0fd616b1536cbce9d9ff538e7d7846e7d24b53fbf40e597b9775bc72db85"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0027_swing_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_swing_trading.py","sha256":"6222f0fef41a72b5202ac5c657abad09ee2c418be8d612d73dce0ecadffa33ea"},{"path":"config.yaml","sha256":"ab80bfbd48af57e9bc8a5f54a1e6170098e58d31ef812e6f285ed10664e554fa"},{"path":"run.py","sha256":"b8f2617dc4c1ce4be673929d175210edd12d8a0b47e71142017808c311cd1576"}],"relative_path":"others/0027_swing_trading","sha256":"edcae7799a96a734b3eb1c0b8a759053bcff1730cda6eb47f9e678bec2d75c09"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0028_wide_range_pattern","category":"others","dependencies":[],"entry_hash":"29ad135d0aa26f39152164abbbaab43a889324f26ca33a7ffadb9e88d2036218","functional_test":{"relative_path":"others/test_0028_wide_range_pattern.py","sha256":"d88578d635e0e6d009119ebe86f2b97a38deb8ab79c64cab9ff1812d00157a92"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0028_wide_range_pattern","source_available":false,"strategy_package":{"files":[{"path":"strategy_wide_range_pattern.py","sha256":"9998201096e52452c3a0827dea951fbd6b4091b0c7fcc82f31e21d3fb3638293"},{"path":"config.yaml","sha256":"19988b7bdda1751b428c6476c9184d94a897c099ba8dd8c6eb70795b0f43dd40"},{"path":"run.py","sha256":"abc5d32d8a34e1e48e9e2d6a0b1dddaca80978a49f075da5506ad185f88f8ab1"}],"relative_path":"others/0028_wide_range_pattern","sha256":"73f5c4b4e55c434d8772996769dc9a3cad378025b1f7f9657fbfd985e573dba9"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0029_sentiment_analysis","category":"others","dependencies":[],"entry_hash":"02e18e3e94d38931d313efe4cf6fabb617d939c0042350c5292f8a317d3450d0","functional_test":{"relative_path":"others/test_0029_sentiment_analysis.py","sha256":"b2fca38087959d25f6f8db1ff83dc16de5a6bef1a8cb004bc7f5e4287018cc37"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0029_sentiment_analysis","source_available":false,"strategy_package":{"files":[{"path":"strategy_sentiment_analysis.py","sha256":"97b8aa5d2879b770125d57b9fa911506cc8f2b541cb1311ef6b9db021ea3675c"},{"path":"config.yaml","sha256":"3a0894c4fd4b82e05a2a7c320c72e786d7a5b9cbea65f89a94549e5bbfd9b168"},{"path":"run.py","sha256":"7551ac5c95ba2c61787e4c49b834519a0b7130c9c49fe9ba2a4d1db009dab8bd"}],"relative_path":"others/0029_sentiment_analysis","sha256":"e20bb9f3632e3c5ce2b69739eb074490a489391a29c50c56ab34ae0cf28377bb"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0030_unfilled_gap","category":"others","dependencies":[],"entry_hash":"7683d28a22ee5e2b6d4b4bdbdd91d6f6a8536cb36b998f3ade0aa8c0b19a6944","functional_test":{"relative_path":"others/test_0030_unfilled_gap.py","sha256":"f661ae96c70c166ac11cee412b03ee43ecb30dc2efb13af172f5754426dd7e07"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0030_unfilled_gap","source_available":false,"strategy_package":{"files":[{"path":"strategy_unfilled_gap.py","sha256":"87532cb8ca95c2ff18337e9ec52c595ff3399e406b7e18f7724a87244f569660"},{"path":"config.yaml","sha256":"8187c4c70d67396679db6b249d2ab62cfddac8d171adda86bf02604dbc01b157"},{"path":"run.py","sha256":"98a1526951ac99e7256bc1d53e3a085c6fe48c9b0c05eb66565ede5fb12b0e79"}],"relative_path":"others/0030_unfilled_gap","sha256":"c8572f1c0c6690854eb6e5c955a4fd5d5bc18a7ae9ba3676e8593614dad1eb4d"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0031_end_of_month_treasury","category":"others","dependencies":[],"entry_hash":"4be98df3d34f4f0b478a5c0d9cf59fe4a449713db9e6d7758aee2e99e31088f4","functional_test":{"relative_path":"others/test_0031_end_of_month_treasury.py","sha256":"1ac3ba355b00e16fa81066f19161b509179e28bd197d8a1e49c4aeeabb9689f3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0031_end_of_month_treasury","source_available":false,"strategy_package":{"files":[{"path":"strategy_end_of_month_treasury.py","sha256":"c33f3b0941ec70c85002490172b17e4819b7e975c38259804748c22ff27e28ca"},{"path":"config.yaml","sha256":"d702f6a2957e2462eefdcb18edca4331282c381cd0af3101f5eea753d64fbd5b"},{"path":"run.py","sha256":"70ce27eefa15f39ae7ab8f4b13c4876e03b4196799a6bcfeea05a7145251dc28"}],"relative_path":"others/0031_end_of_month_treasury","sha256":"438be040c20864e9e2005c7bda6532f1a3a794808264c573f416c08fdacf6d1b"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0032_indicator_period_optimization","category":"others","dependencies":[],"entry_hash":"5221d49d1bc7654720a46ecfcbf4b3cfa4690f63919e2eaff73851ba2e10f091","functional_test":{"relative_path":"others/test_0032_indicator_period_optimization.py","sha256":"2c4f9d3df255fedc5d21027195310aabef357cfa9ac31f88e627d0ebb3242189"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0032_indicator_period_optimization","source_available":false,"strategy_package":{"files":[{"path":"strategy_indicator_period_optimization.py","sha256":"4c2c53fb2d173df66a9fe556e9234f0d93db54d4013871a9b0514f4df6119bd9"},{"path":"config.yaml","sha256":"c250233221ea23474df4e30bbca9c3a6578828555137cd1347bd8555df36ca96"},{"path":"run.py","sha256":"623fc1f8ac192efee74b1bd7e36cb7edcad2d9c7207e71174d20d3e468dea718"}],"relative_path":"others/0032_indicator_period_optimization","sha256":"8ea0c783a8b4bd87085cadbfe5f2951dfee2a55d4c4d0c93d0ee58e20a86dca7"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0033_distressed_stocks","category":"others","dependencies":[],"entry_hash":"40870f2043dc5529266ee05d04ba21733bf698be48e35460199011b250b615b5","functional_test":{"relative_path":"others/test_0033_distressed_stocks.py","sha256":"07eaed4c97c5d5d9e300a7e7ab58cb833a5438dfdbaa428d5338dccbbf0bb233"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0033_distressed_stocks","source_available":false,"strategy_package":{"files":[{"path":"strategy_distressed_stocks.py","sha256":"a94a9823d99c162300183cef21020d6ff921dba568f6bd6156516eb83180f7c5"},{"path":"config.yaml","sha256":"2fbb49ff47d44776933f300b8d484cff6f4dbd376e8d29b8f0027d086b576077"},{"path":"run.py","sha256":"baa29e4dbce68d2b6dec728e0d3968e7ac2756ee8c5186a3512ec67916dd7521"}],"relative_path":"others/0033_distressed_stocks","sha256":"5bf5d28bb58429f60184c7462027290811ec987eba1a41266a8a6c14d7325901"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0034_skew_kurtosis","category":"others","dependencies":[],"entry_hash":"8f1d5c457d0414db155043bb8ea5fc5bc8ad787b700321e95a9e67d59717df0a","functional_test":{"relative_path":"others/test_0034_skew_kurtosis.py","sha256":"4550d2d16c5ce14a36d94430a81b39af4fa2df89ffe4e6c6292f5635ae89b72b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0034_skew_kurtosis","source_available":false,"strategy_package":{"files":[{"path":"strategy_skew_kurtosis.py","sha256":"53727d6ee8f4dba70834ebf903b92a61921a8e132178072fedfe2cea3286504c"},{"path":"config.yaml","sha256":"019d61388bd7c99b4a2d730fed69c31c89c62fc66515f15560c5c396a6cf3fd7"},{"path":"run.py","sha256":"0ab87a2e6fc1950a90a9826c3a1a34390a8b1bade6978f7f8a08fb7bea4b927d"}],"relative_path":"others/0034_skew_kurtosis","sha256":"f5c76174d866e38c53076f8112e32ee21dca4accfa3c3f4705b01a197cefe756"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0035_consecutive_down_rebound","category":"others","dependencies":[],"entry_hash":"b2ec4e647364578e19dac18db38125c2340005c74cccf492c774ee0cca0419f6","functional_test":{"relative_path":"others/test_0035_consecutive_down_rebound.py","sha256":"ba49b77a7e9e0d1886f799e2e23f42d7c8eae420e5306d09672678568ff72f7b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0035_consecutive_down_rebound","source_available":false,"strategy_package":{"files":[{"path":"strategy_consecutive_down_rebound.py","sha256":"3dfa89ef5f85127b7a4bafc127b635bd09f8801142c5f4170b73b19dfc459f9b"},{"path":"config.yaml","sha256":"47ba908524c05a7d1c309ccd917be37efc4e76a82901dfefb28cf34479f8531f"},{"path":"run.py","sha256":"3db6a0ae8f232785eab3d86ccbc7a244076a289f259bc0c0a55463232ff7d411"}],"relative_path":"others/0035_consecutive_down_rebound","sha256":"b3214896e621746b2990db030d3ef700eef19d07a76706ef0f10ee9e541b3eb5"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0036_gap_down_in_uptrend","category":"others","dependencies":[],"entry_hash":"1dbb82e1bc6416ba5cb260fd8916879ca6d595e6f610220190dca162ce73ee8c","functional_test":{"relative_path":"others/test_0036_gap_down_in_uptrend.py","sha256":"c28abda07d684e38eba5e2a3c0fd6d540a238b0dcd2ad458ee28d283fa39b90d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0036_gap_down_in_uptrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_gap_down_in_uptrend.py","sha256":"56fcf2fda162454f105daebc81042b0350a720f73a8477cc3335de8f3b09277a"},{"path":"config.yaml","sha256":"88b66428ce3382dabb5c5000361eb78ede5d01f61df91937ca6c062d0e3ba843"},{"path":"run.py","sha256":"d13b948dc08aca8ff1ffa561d5ac1ba89def2f1f79ac6bb789966ab98976aa99"}],"relative_path":"others/0036_gap_down_in_uptrend","sha256":"db170129494cdc734d593cbcaf81edefb7fe1f2effe16b2a16e13365b3410391"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0037_overnight_intraday","category":"others","dependencies":[],"entry_hash":"bee2bbe3f783d549e43067124041e16d9492ad2d6115c9e9a052c3a7401cf77b","functional_test":{"relative_path":"others/test_0037_overnight_intraday.py","sha256":"6693cd7d60d4809f2b3a5ac6f4b3575b04183852ca1c5876941719a1b0d91b07"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0037_overnight_intraday","source_available":false,"strategy_package":{"files":[{"path":"strategy_overnight_intraday.py","sha256":"4320fec8937e2443c9c24d3187071e0dbb2f552802f6292e6c41a5ee79225423"},{"path":"config.yaml","sha256":"85c7c245aa77c6255a21e8ab928a1fb537155a8fd81f81cebdaf9e3e239d2ef9"},{"path":"run.py","sha256":"a16e2836ae495fa31ae2a3c3cef8395249b3000fc9e94229fb5e32742e57bea0"}],"relative_path":"others/0037_overnight_intraday","sha256":"f978a1cfaa9da68625f409a89b7689095e6503cb9caa4c365f55502f56725977"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0038_big_up_month","category":"others","dependencies":[],"entry_hash":"8f91e193e931d42095d3ecd7bed78a846b6e7d90ffcbb90b970f135f8c0a468a","functional_test":{"relative_path":"others/test_0038_big_up_month.py","sha256":"b75f5cda55f499b7e4418ff3a00079e956f819d39b72b3b18cbc7450e1fe467e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0038_big_up_month","source_available":false,"strategy_package":{"files":[{"path":"strategy_big_up_month.py","sha256":"5324da933275c283fec26ee4231bdcb862d444e219bd07b704318a22fcb33d87"},{"path":"config.yaml","sha256":"f1111929d8a6597e8c13e43ddc6930f7c7527160de3feabe691ea4ec14877442"},{"path":"run.py","sha256":"6f7b8c4b43c8b2f2089c32c8341900dd49939802d6c598b62a59985848cdd4a7"}],"relative_path":"others/0038_big_up_month","sha256":"cc92602b67737b7fcc7eba6192d35d19f5458e170fca9f13bc51638abfe3ad9b"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0039_exit_rules_testing","category":"others","dependencies":[],"entry_hash":"9b5f9b4e3c1b546c869ea6641f09d27d7c954c82af9606eaa8745140df84c88b","functional_test":{"relative_path":"others/test_0039_exit_rules_testing.py","sha256":"f3bd30304d05b5e63b0f824d4c6aabb029496715587ca36bd2370cf1e00afd64"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0039_exit_rules_testing","source_available":false,"strategy_package":{"files":[{"path":"strategy_exit_rules_testing.py","sha256":"4364ce3367995b2d1435ece36dee6649322ba807449eba2077914e016e6a218f"},{"path":"config.yaml","sha256":"77c1889ac609b8df872428127a7158b3554176973f9a637446344e46fe156b61"},{"path":"run.py","sha256":"e935565c34d730084db054ba12a8cc036ec480c00d44cfff026cb497cd9574a5"}],"relative_path":"others/0039_exit_rules_testing","sha256":"0444d7749889ba8103227e126d18f812e3ae0f17b44de37f800dc629f8cd067d"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0040_gap_down","category":"others","dependencies":[],"entry_hash":"eaf3d380327cf6bc4c34a0e045de566976c7779dcb2410f21ed85624f54b3881","functional_test":{"relative_path":"others/test_0040_gap_down.py","sha256":"4994875b0d514f17c6f269c0459f9589816291b957b256d939d2eed7d4dd9c94"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0040_gap_down","source_available":false,"strategy_package":{"files":[{"path":"strategy_gap_down.py","sha256":"28b45a77458ee9e8e0433d4600ef5a0eee2cd87f5736ceca8858592a596b6690"},{"path":"config.yaml","sha256":"cf363c5261edeef4d4f59a5b20797c7d838825b8dea184c836af6d1aa7791552"},{"path":"run.py","sha256":"f17e8c959b5531a9beb77df0d0efb6783ea70d610ab08592d1229bb7efd9819b"}],"relative_path":"others/0040_gap_down","sha256":"e11aff002e4ed4a6a13d7f5048704a70ef341fc138c6601d265f1077eaf64b5a"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0041_market_neutral","category":"others","dependencies":[],"entry_hash":"f9aa7045b6462d9bc10eed88aed68ac6e65323db7a721d3d9d6328a95c8cd915","functional_test":{"relative_path":"others/test_0041_market_neutral.py","sha256":"ffbbdc46a3ebcea67554120ad7e2682559befe0b1136f01658c19c60a2fec396"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0041_market_neutral","source_available":false,"strategy_package":{"files":[{"path":"strategy_market_neutral.py","sha256":"3f37d650f0ae61385b4bb07523f38e75d70b000570b115622e40e6cd44fcd089"},{"path":"config.yaml","sha256":"6b84f53420a3c20597263f7502bb75fd223c8b28529adabf8c0ebf60caa9f8cc"},{"path":"run.py","sha256":"f4bb069af43a6a68c7af6d14f04e4295b90df718503505d420db93c115d6c382"}],"relative_path":"others/0041_market_neutral","sha256":"b046266b0f534b46d39e8c270c0bd5492d361320311ba2427bffb1214c5b1128"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0042_probability_cones","category":"others","dependencies":[],"entry_hash":"9c5918da0a328f5a8f669a396402c61621f2d51978145fcf60df4893e7944059","functional_test":{"relative_path":"others/test_0042_probability_cones.py","sha256":"a58cf802b0735509d0c9ea2bd6866a1d660d92b5854df2ad7177cabda65eb83e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0042_probability_cones","source_available":false,"strategy_package":{"files":[{"path":"strategy_probability_cones.py","sha256":"28e4e0f559fa730b6f32e78b4179f3ce12ac0de4b10f8a5f6aa2810a9661d703"},{"path":"config.yaml","sha256":"00947d1febbcbd6e84e9f50409686d2a36b821b0531199b09b7e4540f38bd928"},{"path":"run.py","sha256":"b1f0d498d56915e6ec15c38d48b53dc08502010a66b216c26c9c0fb7f7d961b9"}],"relative_path":"others/0042_probability_cones","sha256":"42b12d718c0b588d6f4b67e5154979bcd7797b678e72cc82402cd38058945185"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0043_dead_cat_bounce","category":"others","dependencies":[],"entry_hash":"93d131d03979966ba763b9b349726729937c14aa66588b89bc3325969579617a","functional_test":{"relative_path":"others/test_0043_dead_cat_bounce.py","sha256":"ac2ddced1769bf6f026c8710d9684e8839bb34852bb90399429e1203cac349d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0043_dead_cat_bounce","source_available":false,"strategy_package":{"files":[{"path":"strategy_dead_cat_bounce.py","sha256":"e6e9190e4c8227217b6b73e442d01c9d0e088982761a3672a0547a5fd4b982f4"},{"path":"config.yaml","sha256":"275807f4fe2ab4b7ef51e1f4600acb8558186f5230e467f100a33c61c63d0503"},{"path":"run.py","sha256":"d03c04378deec572ec5a7f9b7536f95251b3073951af673b25bb0a8afb54e1d1"}],"relative_path":"others/0043_dead_cat_bounce","sha256":"c20a88bdb5bd146f2e0cefd9f1c535afab204aecdc40146dd210b1530ef0779b"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0044_cheap_stocks_factor","category":"others","dependencies":[],"entry_hash":"5fca2d7240620b8f081f8f4d00ad25229baf663a15dcbbe21b9b1ef1ab7a7e97","functional_test":{"relative_path":"others/test_0044_cheap_stocks_factor.py","sha256":"97bc29d803ed510d9bb85989ca9200d1694bef27e7cf8cc1400b89a971368cc9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0044_cheap_stocks_factor","source_available":false,"strategy_package":{"files":[{"path":"strategy_cheap_stocks_factor.py","sha256":"794243768ce1c47e82ec26c471673ac2b0ed16b4709d1df4a489ac0aca595806"},{"path":"config.yaml","sha256":"584a7e8eef30f23a3ead21280686d452d8da322177619b384bae34a640299348"},{"path":"run.py","sha256":"d76f8290ec42d6e6e48c0315f00e1b00fb547d86040528e042ed477d5e4fc562"}],"relative_path":"others/0044_cheap_stocks_factor","sha256":"11e90d678ac62625c78162519d073881c813b28a9e54cc0e07f241c6d09560a6"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0045_overnight_sentiment","category":"others","dependencies":[],"entry_hash":"6a9942b27694e024886d6995fb384642cb4b24bd324db604f64e82d784e40bc2","functional_test":{"relative_path":"others/test_0045_overnight_sentiment.py","sha256":"12b7c053a2e97b7ca4743bccfe6c114a53ee9262914282d4ff9c24a19b7f5d0a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0045_overnight_sentiment","source_available":false,"strategy_package":{"files":[{"path":"strategy_overnight_sentiment.py","sha256":"b30d3361a2ddf7ad7c96c43a993b4be9fb117e119fbda005ac76e9f5e365bdf0"},{"path":"config.yaml","sha256":"61a266a9042f7e254e8ca6be07a4de730d514bcaa5db67137173758280868b45"},{"path":"run.py","sha256":"43f2973916fdc58c5a610e4cc4892d9458526e70363f901b46a619017308b859"}],"relative_path":"others/0045_overnight_sentiment","sha256":"18807e8941c5ac2d03cc950adbf7ceb167a821723eb22dc3e3c985269a44f5f2"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0046_markowitz_optimization","category":"others","dependencies":[],"entry_hash":"8c518ba002fccd90ffa8f88dca2bb917b45579038a025220ba07cb17612d1b52","functional_test":{"relative_path":"others/test_0046_markowitz_optimization.py","sha256":"6bfb645aa9a8ebec8865da5381c04f7330b863ed8b72fc9b7af5ef903838e7d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0046_markowitz_optimization","source_available":false,"strategy_package":{"files":[{"path":"strategy_markowitz_optimization.py","sha256":"db10dac6104ca9fa1086bd889cb27cc1ef69c32fc8d92294e22fcc96e36ee72e"},{"path":"config.yaml","sha256":"5d1f261ce18bff57f6b8dc4122034b5b1af2ca0aa3ba064450643af8a19dda61"},{"path":"run.py","sha256":"ffaf36fe9f8f9d10790c5333c952238a79d8c490b242d75315053d3d85a20161"}],"relative_path":"others/0046_markowitz_optimization","sha256":"ee3e0e9af613c29a66a2ed662c13cf2fdb9c1f7d3ff53af62481d2950fd4ecc7"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0047_global_growth_cycle","category":"others","dependencies":[],"entry_hash":"3433a9677cb79ebf7ebc85a2f618e4b5e360d054a780ca19c7bc74ef8a0b7abc","functional_test":{"relative_path":"others/test_0047_global_growth_cycle.py","sha256":"bb1fc373c9a4462169d6a4bed2c077a69c8c45eda939a50bcfcfdc06c92ed98d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0047_global_growth_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_global_growth_cycle.py","sha256":"e167db51f5a3534b467255c43b7a535a176e1ef5879fbcf5cb276732c762cf55"},{"path":"config.yaml","sha256":"f6f2fa63847ea04b57d6c63eaae00a6fbbec66b656f8f4a9a40e15e330d2cc3f"},{"path":"run.py","sha256":"b4c2e4806a13762d27dbf6d5d9b0d23b675911eb2c3f4f395f38d34ff5f47f94"}],"relative_path":"others/0047_global_growth_cycle","sha256":"cf0d1248e4305d4cb0bad05fd1e308ec427db7849ed5153df0d0aa68063d4d71"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0048_long_short_equity_strategy","category":"others","dependencies":[],"entry_hash":"93070bc9393cc78b34444e7f095d2c27a0aa0f736425ff3dd6807e07d148b93a","functional_test":{"relative_path":"others/test_0048_long_short_equity_strategy.py","sha256":"90417ea2da075d85e60999b746430ac584c634f13aa7a7cb9e46e6fbbaa51c68"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0048_long_short_equity_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_long_short_equity.py","sha256":"702243784a56f0ae194e7010cce8f31251b9f8d937ab7a61994fde474b53ff67"},{"path":"config.yaml","sha256":"663eb11b0fa3ac17350b04f6a9cd4a5a52162ecca8ccf9cffc508136fb8e05bd"},{"path":"run.py","sha256":"955670abee6df2f84c94a7e00de34eead4ad0007c47d18571d0e19f58b2ace98"}],"relative_path":"others/0048_long_short_equity_strategy","sha256":"df5d20035ee803f59dae0850d0448dfffb51a7afe47cccde262bc7be678fcfc8"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0049_january_effect_strategy","category":"others","dependencies":[],"entry_hash":"b7401fa4b66b9c45839e70a7afe114ab69abf8622fac04c6da9417ade8510e2f","functional_test":{"relative_path":"others/test_0049_january_effect_strategy.py","sha256":"c0e9854160b567b3ae66063cc352965a2ae8d5aff10c498f48ed896d4f524280"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0049_january_effect_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_january_effect.py","sha256":"9378a661f56913ffa34a524d84c238cd333882e44a0df50200c362e57da96f98"},{"path":"config.yaml","sha256":"3a9d8b99b92afb9dd612569460bcae05e09ce4fbcd11e1148f83ec980f1e2eff"},{"path":"run.py","sha256":"90e6808b547483edce1139a7f58bad87b992140e5331b938234e2190853ab594"}],"relative_path":"others/0049_january_effect_strategy","sha256":"f742375b4c02a394fe843a675c8002530cc913a4e5a928d7b5382a30cbc7cbad"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0050_ulcer_performance_index_strategy","category":"others","dependencies":[],"entry_hash":"c52402b6c5b68107f3ec1267a1ec9ed6603e008dec2dbb0a6368710ed06d4627","functional_test":{"relative_path":"others/test_0050_ulcer_performance_index_strategy.py","sha256":"bdf62e3d575a0edbc183e3c63ec94c0e1126ad5f712a053c887222e09e2b0f2f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0050_ulcer_performance_index_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_ulcer_performance_index.py","sha256":"8c7a9fc25790cc52b746d579de8892646ee1b5b61815d2ae98c71c9315af4079"},{"path":"config.yaml","sha256":"7f7f97aacef967a608047d38322ae2279b94bcb42ad4a14505542ac79465f9dd"},{"path":"run.py","sha256":"95d7ac5276e9cf67e5c93caa22debfd3097d9d995fee48774102dc73bfeaf4fa"}],"relative_path":"others/0050_ulcer_performance_index_strategy","sha256":"3c884ede8c30b3bca5598bca4307ddb3b764c4c013d288781ae77ae098e20cc0"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0051_short_term_overbought_downtrend_strategy","category":"others","dependencies":[],"entry_hash":"419f1a711eb38d82c7b19a5304c9fd2783da5536c95cc97eef6d6040018dc573","functional_test":{"relative_path":"others/test_0051_short_term_overbought_downtrend_strategy.py","sha256":"ea839b9d1f440214a9c83c91d2007ebd89b457419102fa041b6aeda9890441b8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0051_short_term_overbought_downtrend_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_short_term_overbought_downtrend.py","sha256":"bed0f83ef2e532cefc1cd9b37052703e9555085f0283d4e6d4bbc1a94ef4a1e4"},{"path":"config.yaml","sha256":"25df7920c7001f6f4d6e4523872ca3142b1551ac959a13852896d29f187e75da"},{"path":"run.py","sha256":"ae4e42778a5c96fa0422de016831c773fb69f4bce37ff3ae27b717453a69bc3a"}],"relative_path":"others/0051_short_term_overbought_downtrend_strategy","sha256":"8e7afdaf7b3c1c63edc082dfd9e7eeda7522cd577cb378a54a36a5f714758eba"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0052_kelly_optimal_f_strategy","category":"others","dependencies":[],"entry_hash":"ff19c27a3caac88fe891521278ae9767fb659032e253c7b9e2e99e49cb00c7a3","functional_test":{"relative_path":"others/test_0052_kelly_optimal_f_strategy.py","sha256":"1748575f87c7565698bcddc410ca83cdaaa851a5423267e151059b9f52855246"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0052_kelly_optimal_f_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_kelly_optimal_f.py","sha256":"90e03e2c4b343848f149b0952a141e83157a019f5e1424aefadeb7e6ddfb20c5"},{"path":"config.yaml","sha256":"1356fcc09706b388e9f8d37d5f7872ff8027a241dee2579ae5ba1ee9f32d7485"},{"path":"run.py","sha256":"d41111ac8af954c2713958ccfbc88f226ec1386335075590e60c25db0ba65685"}],"relative_path":"others/0052_kelly_optimal_f_strategy","sha256":"b83c6e778d7614d5a0b90d6f5044656c7e293ff97cbd5a6d98ffb84035e9ce62"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0053_high_inflation_factor_strategy","category":"others","dependencies":[],"entry_hash":"2246c6e71b3aa521cdf685457ef495983a29d31739d847e4e0f0860a4fdd0e38","functional_test":{"relative_path":"others/test_0053_high_inflation_factor_strategy.py","sha256":"84193495e973e605f401471dedc3b5c40a5ba07bcb54a499b1ced55ca028647b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0053_high_inflation_factor_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_high_inflation_factor.py","sha256":"fbca63e32da1e03e39f8df22a1b69bca4ed1265d8188385ba8099168235458f9"},{"path":"config.yaml","sha256":"30b8ff449aee8f0c7dec946e5d6963a6a2d1a06ed5125caa39d8a198c90894ab"},{"path":"run.py","sha256":"4a92761dcf015c0a021286f1c0b19fc4e91741c6544d2477a14eb51f26a3070b"}],"relative_path":"others/0053_high_inflation_factor_strategy","sha256":"da806b30ab5cd27a998c5cee8a34509287329618b745d531972d09d34909c8a9"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0054_lrema_strategy","category":"others","dependencies":[],"entry_hash":"f703c6438d160ec9750a3ff2723d448355e82342baa500f431acc197e5670115","functional_test":{"relative_path":"others/test_0054_lrema_strategy.py","sha256":"5a63b23c1d03680be1c633cdc04d194ec9dd048ba831590026b081a041683701"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0054_lrema_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_lrema.py","sha256":"763ef44b2e1337590572099e73b52d4fd9d69ef86dfd366a3d8d19312ed98060"},{"path":"config.yaml","sha256":"17a6bcee210db24515df0a0a36c3c96a8c22c5e25836f31c1d979b03c1af8813"},{"path":"run.py","sha256":"3be0c2278be41cd143aaa052ca32583ef41d94c8eb77f703ddc29147e0a32fc5"}],"relative_path":"others/0054_lrema_strategy","sha256":"429c4fc85e04b8dc6e8a9924bbae5f8301e5bd0087a8a2e1d3286384490340a2"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0055_som_investment_strategy","category":"others","dependencies":[],"entry_hash":"d699534e0a7b9e5dc19126d2521be44b2f261022c50e7fb81a9c01d25d4887ce","functional_test":{"relative_path":"others/test_0055_som_investment_strategy.py","sha256":"e89ba437716bd120f57f73a7729837c7c52f4a130d29ab930d8cccc64e192297"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0055_som_investment_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_som_investment.py","sha256":"1551733a535e6776da94e72ed8f6913c04a9f116c9b9b4bef9617103a760887e"},{"path":"config.yaml","sha256":"9626e517cd4899231402941a8bb217adc9b4994f5ee1cd4590d3c2b4b29f2fa7"},{"path":"run.py","sha256":"4489ee85c18cefe8c011936837c06d39e0d3f361ac31986b04862b6e8e1419ee"}],"relative_path":"others/0055_som_investment_strategy","sha256":"d437a931a50ecd52c603f1999f5c4deb31febd3fad844d83d4cfc54dd8066331"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0056_hurst_exponent_strategy","category":"others","dependencies":[],"entry_hash":"86e68048239b04a7dca70fedf16e101fadd16b8e3c52e819ffd4e9600fa15d8c","functional_test":{"relative_path":"others/test_0056_hurst_exponent_strategy.py","sha256":"28e7d0a98de8424857b3c997a3f429611f62d172f68b2c01905a633d002f611a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0056_hurst_exponent_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_hurst_exponent.py","sha256":"e314dfd5559a8c9c3b48a58716eb84ce7b697fddb26648f944552bf82d9db78f"},{"path":"config.yaml","sha256":"c38db57aaee5d684c9e9f1f15581b99fd219efd6652b5c992850275fe395bee3"},{"path":"run.py","sha256":"570270e6626bc1bb6f8cde016384b4590ea7ff52aa0a4c3aab2c463fcf801d58"}],"relative_path":"others/0056_hurst_exponent_strategy","sha256":"3ebc7ab0dc2aebd2900ce5f6746b67dcba7f2a2528cb12abe4d409821b876d21"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0057_market_cycles_out_sample_strategy","category":"others","dependencies":[],"entry_hash":"f5d829a24519005ba9c8762d3da34ea4a3c489ec4a4ca9e9bac3de13f9637592","functional_test":{"relative_path":"others/test_0057_market_cycles_out_sample_strategy.py","sha256":"a16a1f2008e375da8da54ec04000f7b1e30174dd09fdfb0fa9808868869388cf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0057_market_cycles_out_sample_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_market_cycles_out_sample.py","sha256":"d2b568a63dbbfb7c17d7e2ca6d5e5e924b26fbef9b585daea3e0fe8bf291b5db"},{"path":"config.yaml","sha256":"bc54af19a9c6fb032b8311e4c62d3adcc02f4c99bc4645e5e9af32eaff98387a"},{"path":"run.py","sha256":"15b3fd6f96604cfcace3ba06811316c32f000b139fab7efed43e9be1ea96e2fc"}],"relative_path":"others/0057_market_cycles_out_sample_strategy","sha256":"6d8d1c9b95251ecfe6f1b4e80dfdcb717e3fc6cd8b077564a511bc4d7a7cea92"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0058_factor_market_cycles_strategy","category":"others","dependencies":[],"entry_hash":"8b86a6abbe8756c4c259573d7f1aa92d512a5438797fc5a645c924a65b48a55d","functional_test":{"relative_path":"others/test_0058_factor_market_cycles_strategy.py","sha256":"4b8b09e91721adb43cfdf64bcd2f36d33dc1ee7a57c82d9e93ce31aa9d05c03c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0058_factor_market_cycles_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_factor_market_cycles.py","sha256":"d0edf31ca615d130ea9a143e9ca17df7b75d0d5a55de237cef7efba8dad34659"},{"path":"config.yaml","sha256":"7f785d3b17e8229f010499ba2e61f0ead88b461ef8748493c4310df88258224c"},{"path":"run.py","sha256":"75ad6f92fa7335fcf70ca0537bb1fe93cd69dd172779625974d2f1b402379061"}],"relative_path":"others/0058_factor_market_cycles_strategy","sha256":"d8872b5e433050c405eb19227f79f2cd2207469179c5cc5cc2d5fb0080bda7f8"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0059_avoid_bear_markets_strategy","category":"others","dependencies":[],"entry_hash":"acf56264f07e8045dd420ef666826039c5e5e3823544772b71763f9949fcb626","functional_test":{"relative_path":"others/test_0059_avoid_bear_markets_strategy.py","sha256":"5bd9fab223690bd158b0cf819f613b9cf34b15d2adebeb4b120825f03857b260"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0059_avoid_bear_markets_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_avoid_bear_markets.py","sha256":"9d10a9fa5da90764314cfc5b0defc732195fe63dee7710f3506fa97548610b68"},{"path":"config.yaml","sha256":"6bdb0d928b338f61bb92b608eeaf76c00ab686d3e3d6eb9e0f1a708ed7ab82bc"},{"path":"run.py","sha256":"b9d2dfcafb68837747920624148fa46a7697e0e11b5d9e15b09eb6f711293cc5"}],"relative_path":"others/0059_avoid_bear_markets_strategy","sha256":"df4d8966f60239ff99d8d8dc4e954073c20526779705573624383f4435002a24"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0060_turbulence_index_strategy","category":"others","dependencies":[],"entry_hash":"14ac8894fa7640de3afc289e6c6758a6fcca672a58ac9522b80edbd08f3339b3","functional_test":{"relative_path":"others/test_0060_turbulence_index_strategy.py","sha256":"7e39f14100af5cb981d468dcf98636eef3b9531829f99d06aff8277cea7cedfb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0060_turbulence_index_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_turbulence_index.py","sha256":"8e8cc9f3b8e6a5e3e6bfc09cbc05370de7ebf59a8c65e08f224a211683be584c"},{"path":"config.yaml","sha256":"0eff2a0794df7eef60f32f0d6b3f8840616a964e8f30ff72816838dd9e37efce"},{"path":"run.py","sha256":"19bb8c425dbd3e0757e9503744b12d7648369cefc8fe325ae19625bda7ffc64a"}],"relative_path":"others/0060_turbulence_index_strategy","sha256":"0660f2bbeafcadb91de1e1b183106885f2d7620ac5f977fd3d980aede2223004"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0061_latent_trading_factors_strategy","category":"others","dependencies":[],"entry_hash":"46d6a8dfe8e9b2a60f34deb138e331a437a40d995184546df2eebaa0901cdf4a","functional_test":{"relative_path":"others/test_0061_latent_trading_factors_strategy.py","sha256":"7dbf0a048c0091d4968255c3dda8febeb248c9b4b7d562adbeff25427f2ad896"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0061_latent_trading_factors_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_latent_trading_factors.py","sha256":"43ee7248ee28fc38bab5e2c0c70232935048ae4e5697a30421a6ffeef29ff576"},{"path":"config.yaml","sha256":"49cbbad5d01486d67115922912b79c441ef91ebc45267b0976b6641a30514109"},{"path":"run.py","sha256":"a0c16eecdfb20f40cc4ab0b9343bf1a08ff2b0e60c9cbd53ec6fbea85824cab8"}],"relative_path":"others/0061_latent_trading_factors_strategy","sha256":"53c48287889f5d15d630a5a11ad7d8658ff5c7dde551bef957dea10b3961acde"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0062_signal_quality_strategy","category":"others","dependencies":[],"entry_hash":"db730afbdd319a04962f3a1e1446c19ca6c537100e469531fc5384275c356336","functional_test":{"relative_path":"others/test_0062_signal_quality_strategy.py","sha256":"4890030d42012e6cc13a915c8d26ffbb9447bc433f88cca3c21332a1b948044f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0062_signal_quality_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_signal_quality.py","sha256":"0fcdc688933018c10296a3cba4ce951828b729567ff63776d96dd7afa25930c6"},{"path":"config.yaml","sha256":"de04dc99ba77c066bb0d33aa757078c76dd948b31323b989b1249ca29c902060"},{"path":"run.py","sha256":"b192a1c440ac7eae13a93378c6e47d157f4f125bc93f6a62e29509db2629ec44"}],"relative_path":"others/0062_signal_quality_strategy","sha256":"878ac7fac7609527553b6045b86c4e65442c66fe61ce9373e28ab2176ae7b887"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0063_treasury_return_predictability_strategy","category":"others","dependencies":[],"entry_hash":"467dd5f7dddac585f7bb1a61795719afc14bc788b17961c3657ef70c1de985f7","functional_test":{"relative_path":"others/test_0063_treasury_return_predictability_strategy.py","sha256":"bff14ef77c4d1ea8187181c4ecc2cf674383896925fe773ced1fe3a5d3cb78de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0063_treasury_return_predictability_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_treasury_return_predictability.py","sha256":"e9a82fadd537a2149f1c072c7d83f32da361a54212ecb2db1554b39de5099eeb"},{"path":"config.yaml","sha256":"f2f5ad1273d52381038465b4bd00d241089f4cd44f8a37962972c18cd14f2544"},{"path":"run.py","sha256":"d3128b6906f5f834da08b2d4d92a96b740e99023f4682156c33b7f6f2f4dc2c5"}],"relative_path":"others/0063_treasury_return_predictability_strategy","sha256":"10b7078147b9c72703e1185eadee15a906b09a50d10bfb9b80ae7d8255f393b4"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0064_country_valuation_strategy","category":"others","dependencies":[],"entry_hash":"57ef7a7090c497bdb1c4aa8acf3091693b1e3a39ec0d9c9a9ffea8e9bc3e7e76","functional_test":{"relative_path":"others/test_0064_country_valuation_strategy.py","sha256":"4183b371b168c52b7a501ba0118c88a88eb11e6199351941e98aaea512de72b0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0064_country_valuation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_country_valuation.py","sha256":"06cbfd2ef1bca3a79050b12613dd944044e642a81f6d5a18213b9af4bb00e0d8"},{"path":"config.yaml","sha256":"ab5bdcb3af09ef29a878651bf02168a4f571a2860ff5de4e5ede9c5c46593276"},{"path":"run.py","sha256":"8c2e2ddb3c17f7eb15db25e019966a5e5f88887f7b6d12f56fbc9727b65299b9"}],"relative_path":"others/0064_country_valuation_strategy","sha256":"362074b406ceae035d4cda7acf90a351abdd3f15f39015e65463655e1a64dd62"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0065_military_expenditure_strategy","category":"others","dependencies":[],"entry_hash":"30caa2f942a2f5d694bb4cdc8245f4145428e62853e87eb4ece33cb1edca65fe","functional_test":{"relative_path":"others/test_0065_military_expenditure_strategy.py","sha256":"de4cf1e7d8a55aa45903c1948c1d20552df1937dbae1429af028d1c73b4565f1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0065_military_expenditure_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_military_expenditure.py","sha256":"07fd0ec265cf879fa0e4d6974ede793a40f23f32679089178096e0dcdf342a45"},{"path":"config.yaml","sha256":"eb0fadb6e341d636785d35d6403a1f011000efb9414f8062e6f11cbc27dbfc40"},{"path":"run.py","sha256":"94ee7250d7152e667756d552b9a20cbe01fa84461f738a258326b769d97037ac"}],"relative_path":"others/0065_military_expenditure_strategy","sha256":"29ad3495865cde2121a07c3c31ff79bd33782d42a0e77d19b6ec0fb9659d788d"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0066_macro_data_strategy","category":"others","dependencies":[],"entry_hash":"dfd256d0aec4385c49349a62e294ab1732aa95a380649cdabd2d3479df1efd21","functional_test":{"relative_path":"others/test_0066_macro_data_strategy.py","sha256":"520abce08e9d3251b4068c8aade9f2cd5aba9240980a67fdcb9523e9ff170156"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0066_macro_data_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_macro_data.py","sha256":"56d4cce6d64a3bc14264724f5d78aba5420a34f586ee6aea5db0f7a2d65e14d8"},{"path":"config.yaml","sha256":"c34da6858497a313945d33082bc573a407d86e1f612f46cb751a81c36dd62109"},{"path":"run.py","sha256":"417197dbf3362e40cc0ab082060f7c3c45f73ee079ebc83281ae817e34129a63"}],"relative_path":"others/0066_macro_data_strategy","sha256":"53b56ca9203acc56b69cc3924c71e0107679e3e88f1e3d16522b0cd40a699166"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0067_correlation_break_hold_strategy","category":"others","dependencies":[],"entry_hash":"627237638c35a8cbf0b04db508633c59d810e862fa84eecf5126b5027f8b2803","functional_test":{"relative_path":"others/test_0067_correlation_break_hold_strategy.py","sha256":"c1dd46a9a8efd0465c70e045bf98a6846fffd8728ceb12cafa01bcd8b0cebb36"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0067_correlation_break_hold_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_correlation_break_hold.py","sha256":"5ba9ffcf8959d2675733e89a25789e4b043c58f1860435ed290ec8f48854e643"},{"path":"config.yaml","sha256":"1824b77009f32488a39dbbcb192eda2708ca1f5424e79854813c92a2a3172066"},{"path":"run.py","sha256":"7e9a41e3108354fe34dc7bff08d3e6bb6ed9cfa8cac25ac4e0f95b730f77e827"}],"relative_path":"others/0067_correlation_break_hold_strategy","sha256":"c63c74402dc8ab57ad582a197978fad9c6c83e6265a370b32d3932f8011cef18"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0068_first_day_month_strategy","category":"others","dependencies":[],"entry_hash":"8124e478e65b53db3216d7fb965ecc681df81411ae76356f8c8f42232c2b43ac","functional_test":{"relative_path":"others/test_0068_first_day_month_strategy.py","sha256":"1280a108e951d8df0d22ff64dba571b18147964fbe90fa8ff80c9a2c324c6a39"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0068_first_day_month_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_first_day_month.py","sha256":"c7a40772b890130aa1602b0cd1aea2bb808759d5be5925593bd8c9f77a85533a"},{"path":"config.yaml","sha256":"9de13ad6d35c9963548c169eff6afda5999e5fd5697a551cb25e491456730ea3"},{"path":"run.py","sha256":"50679bafbec45de8b8cdcc91e85b7082e8af1f03be48ea339418158209e676b0"}],"relative_path":"others/0068_first_day_month_strategy","sha256":"73f2ef5372a6f4bb531164c463841e021f7869da722ba89e79cf17d4a105b189"}} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"others/0069_leveraged_etf_strategy","category":"others","dependencies":[],"entry_hash":"a03f58731104280649a7ae542071b456ce4b5f5ee4996cc45160d665102c0f09","functional_test":{"relative_path":"others/test_0069_leveraged_etf_strategy.py","sha256":"a906e38bdf3ee030109265d0a0f42d2dcf040353722b7b696cc49e88b31edd26"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"0069_leveraged_etf_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_leveraged_etf.py","sha256":"abac3fe9b9a67f64576bc3629f3644c1c126f87014040b08e7541be8152e9990"},{"path":"config.yaml","sha256":"45ff1e2b380bd3920e1a192ff112a98a2c95e3999b892df4e953887a8de852cc"},{"path":"run.py","sha256":"292e7de95f91bfbca8ff9a4cf878d731793c52c1df42b63fef4005a7082b0a04"}],"relative_path":"others/0069_leveraged_etf_strategy","sha256":"3f6865353878f9af4923049f75337cfc55dac3ddd750de03eff702b7518a27a6"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0001_gold_kalman_filter_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"23fc634fd77da9f461bc4dc34d30be44de2c48f71bf343c4b5f640b575d4fa7a","functional_test":{"relative_path":"pairs_trading/test_0001_gold_kalman_filter_pairs_trading.py","sha256":"809e6ca02a002c3312577ca2675769fc29f123ceb7b8102151023bc6fe77f961"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_gold_kalman_filter_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_kalman_filter_pairs_trading.py","sha256":"0e8961767ce4620862b7fa58e832f238bf381ae5d65e2d81e5ec3807e6eb249b"},{"path":"config.yaml","sha256":"b6c562abd6c806d0d7ab1de6dac4d0da7a41692b864bda57fb2feedd16700a83"},{"path":"run.py","sha256":"76f12b7b90edd8bc415b209e0061b5cd8333dc1066e0f3a24a6e44b9b983adaa"}],"relative_path":"pairs_trading/0001_gold_kalman_filter_pairs_trading","sha256":"a5ce3acfdc5c5b80c570ba29d80d086ae105fcf132357068e68d10c16124ba62"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0002_gold_silver_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"7f7d407e3ad17a458311cb168bf558cabe2b74400d2eb2449875d9954d8c21a9","functional_test":{"relative_path":"pairs_trading/test_0002_gold_silver_pairs_trading.py","sha256":"c77221d6a3865a51d0c85fa1cf4874ff23975db408208b136331820fd2242bba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_silver_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_silver_pairs_trading.py","sha256":"391b9127810be7fed49c164eddcd720aedd93ddcfab2ba603b36fb214873d259"},{"path":"config.yaml","sha256":"cab38ad37371d5fa570e150225d44272c7ba838e1d60d12b8893b0f2c761acad"},{"path":"run.py","sha256":"93af38539fdb9dc297202573ecfa9af3009f8ff73fe674f5ceeab82758f59957"}],"relative_path":"pairs_trading/0002_gold_silver_pairs_trading","sha256":"d6c7fb17e907e8cca29e929edf389fc456d4f8e1c6b517b0377ce2cece9bec9a"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0003_gold_cointegration_spread","category":"pairs_trading","dependencies":[],"entry_hash":"c9b7448b166f33456e225d5cf59629f6185bde4c456b4bc5d5ef2784c360adfd","functional_test":{"relative_path":"pairs_trading/test_0003_gold_cointegration_spread.py","sha256":"ddbdfef51a44046f6dddc15e958ed732edf732586364ae4755f72de76f2a0af5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_gold_cointegration_spread","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_cointegration_spread.py","sha256":"3ed245a203a72a18f4dcf7c945af3a6cdcf002dab4126f2393d109c500cf4d7c"},{"path":"config.yaml","sha256":"7addda76002dcdcbea4620597b75187c1dbdc0ecfe3fc47bc3874de86ab7f1a3"},{"path":"run.py","sha256":"0f54e98ea3721d4b3f4747aa656a063fd20a7fc595c229ffdb18d5fc1845e3d7"}],"relative_path":"pairs_trading/0003_gold_cointegration_spread","sha256":"8cd1fecd9c41f931c78d69ca9433f642249896578c20bfe5e335bcf4c56bbe83"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0004_gold_multi_pair_trading","category":"pairs_trading","dependencies":[],"entry_hash":"4d76c90476a494edb3d4aa31499ab8de6b126892d5a6a1e12d6a6b7b073f3c43","functional_test":{"relative_path":"pairs_trading/test_0004_gold_multi_pair_trading.py","sha256":"ac681b3dffd7d243d2c28a1d7e1b9cf9c786e528d3c8954b4fd217a68b525872"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_gold_multi_pair_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_multi_pair_trading.py","sha256":"719a6fa18fdadfbfc80e3bb4cccb938f5807d8087ee35cef33522edc009c4053"},{"path":"config.yaml","sha256":"fb475eef39dd4c8683564c53def4c7d9741d9dfd4559dcae46e055642472a531"},{"path":"run.py","sha256":"ce337a0d531479c303e1338126eb2b361f286f45aabbbddccd28120815076e45"}],"relative_path":"pairs_trading/0004_gold_multi_pair_trading","sha256":"7187b91166ea4ca10e8613682d60dc78f7b4e809e7108942a7cbb72eab0e04e8"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0005_zero_crossing_pairs","category":"pairs_trading","dependencies":[],"entry_hash":"564d2b373b67330fca14a36996d227e6ef80e287bedac364de74ecaad71102b8","functional_test":{"relative_path":"pairs_trading/test_0005_zero_crossing_pairs.py","sha256":"08b815431cfc122fc5a017c57f1c139f48953a94428eaac41e2cd5fc6da5f0b3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_zero_crossing_pairs","source_available":false,"strategy_package":{"files":[{"path":"strategy_zero_crossing_pairs.py","sha256":"70a7a98f7e768641d3502e588395cf9f3e45821cb4cd2a1079dca7e075c436e8"},{"path":"config.yaml","sha256":"24d7a8e986f372d1706c3f74c107e717cadc7d7c8105c246591af071eaa77920"},{"path":"run.py","sha256":"609b02f3e21b299b765715ac3cadd2d653db3753c4185ebead073152132c30d0"}],"relative_path":"pairs_trading/0005_zero_crossing_pairs","sha256":"a96c84f3a94dd6d08bd6f56e0cd0706c6eafecd695d2158cfdbddbd133bf5f8d"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0006_cointegrated_gold_silver","category":"pairs_trading","dependencies":[],"entry_hash":"4184342121b395a6a915a94f1cdd760d7f599eb3751fbdd67839f216d25ee6fc","functional_test":{"relative_path":"pairs_trading/test_0006_cointegrated_gold_silver.py","sha256":"86bdfd75ef54be58493553576bfdbb08e70b142b1b64e128d7bb4ee8b97cc854"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_cointegrated_gold_silver","source_available":false,"strategy_package":{"files":[{"path":"strategy_cointegrated_pairs.py","sha256":"ea014059be8471a70fd500c66280175b9cd3713829e69a6661c5395fac9d9061"},{"path":"config.yaml","sha256":"615b6b86cd79a0dc037e6d9deb397a4c8b3ea7da89abcb7b27fab308b375d1a5"},{"path":"run.py","sha256":"52a0f1001b49d0fa5de38264a39203757fec4e0a9110cf3be5d680c38608d812"}],"relative_path":"pairs_trading/0006_cointegrated_gold_silver","sha256":"7c21e629bd98fbfd80d9d849edabedc5332d21b5bb8fdcc110363109e201d561"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0007_copula_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"eeda2a1dbbb816ce3812a3e3addec0e1a971539eddca8cbd010e7b6d99d84484","functional_test":{"relative_path":"pairs_trading/test_0007_copula_pairs_trading.py","sha256":"c61ad05920971e00690bc72a8326495ea061e0ea3ca3195a17900512974a4fc3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_copula_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_copula_pairs.py","sha256":"fc6e18513794811a30298ca0380b7b39a2ed8b8f1fc2cd8a9ca56ae5b864eb2f"},{"path":"config.yaml","sha256":"53f2839c97da9ee1e5e812921ef08bd2ef2ac7725bf5850e07254f02a43ea9c6"},{"path":"run.py","sha256":"22dded65b8c28b3f860d8b37f6c333e2629cded3d8fe76a9c92320bc7e5f9f0f"}],"relative_path":"pairs_trading/0007_copula_pairs_trading","sha256":"e5fa500467e59736f77e908cb807bb2def96a726c77b74bd344e8242947585cd"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0008_pairs_trading_strategy","category":"pairs_trading","dependencies":[],"entry_hash":"4ec70a7e5d3fd8d6dfca37fd6fe68ae0af8f5e5e54438e4fbabc34761e2f5dac","functional_test":{"relative_path":"pairs_trading/test_0008_pairs_trading_strategy.py","sha256":"9e6d35c80897970a6f43c3b3e76a6631b4b6ec98ea9e029e1bd17141f2d45701"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_pairs_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_pairs_trading_strategy.py","sha256":"5ba55335571f2b8ea57ccae0b43af5c5f3c0854d3ae034da3e6a91abddac443d"},{"path":"config.yaml","sha256":"b3a8eaccf1947d10a9505308740b0aeec3e019642ceb34c5591806dea70d732e"},{"path":"run.py","sha256":"08c47d5b1a5769aedfd14395c53d446c89f4970c95533be91eb7ddb38ca318cc"}],"relative_path":"pairs_trading/0008_pairs_trading_strategy","sha256":"b80873448a6a4e767b45a5ae6f3c5a3d24774f4bbe0ec7b2c2b89f5acdbd321a"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0009_practical_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"19fa68daca571334143f20c98c2969228f949d34e34751b0cbb2118f315c4b6a","functional_test":{"relative_path":"pairs_trading/test_0009_practical_pairs_trading.py","sha256":"3172cb422a9c87c0722b8b8a44ba0a9cc7634637edb64274f39a25a8af8c0e63"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_practical_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_practical_pairs_trading.py","sha256":"0557e718b498f8adb7ef3ec854563f460e64a868575a14a14e1ba12298bad760"},{"path":"config.yaml","sha256":"be12c7d02cdd815dba440b08ecdddfa4d4fd7f45571f849c3bab8a99a3d08003"},{"path":"run.py","sha256":"876b7aebac4fe24ee8a091b79eb69c188eb7f458ba78f3e17637a27aada22740"}],"relative_path":"pairs_trading/0009_practical_pairs_trading","sha256":"82d3300748a430824fbe490055fcdd8e585b2b6294ced3ea7e573e70e4c1e3d2"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0010_pairs_trading_basic","category":"pairs_trading","dependencies":[],"entry_hash":"734bc73b4c9247ec33f7ffa7cb26a305460c1536646cdbf6e8c7402061d12477","functional_test":{"relative_path":"pairs_trading/test_0010_pairs_trading_basic.py","sha256":"874549cee60b0bd776b7ecc2c9672978504593865480d0a594fcceb11d11960e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_pairs_trading_basic","source_available":false,"strategy_package":{"files":[{"path":"strategy_pairs_trading_basic.py","sha256":"8f70985cceb6414cab02407b527c37496c8318b3823267ef1adc0607c9949934"},{"path":"config.yaml","sha256":"1e53d1857c360c4a0de8d2aaf10997bcb6cec59fdf1a997d7b084b3b38a58175"},{"path":"run.py","sha256":"623e6ce6b42f3106b727bcf4198a2fddeac4dd9d41cf4c627ec941f06decbf28"}],"relative_path":"pairs_trading/0010_pairs_trading_basic","sha256":"d8130a54eac25f579f759597fddb348ac36dcb658b1d1415a00fd497a259a656"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0011_copula_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"045e3b409e7522b2b4519b95c7c01d19789fda29bfc1bfcaab1216f0054ec959","functional_test":{"relative_path":"pairs_trading/test_0011_copula_pairs_trading.py","sha256":"9dc596327b968b731104658fd27060505d6e3eda33e37aecd30c1bee98848c2b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_copula_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_copula_pairs_trading.py","sha256":"4898f1db2f6700aa2b4dac33a2b752262c9b7a3be9472cac91068bdd3af28740"},{"path":"config.yaml","sha256":"205310eea568db8704cf74520cfce771be7656200935fa3c7411c2704766bf67"},{"path":"run.py","sha256":"9453c1afc9d271426d5d85873f770a35bf5aafe05ba75336316139a46084c906"}],"relative_path":"pairs_trading/0011_copula_pairs_trading","sha256":"ccf46dbf5a63c6b647e1956523926073ddbe0593a04697dc23d68fa7817f2e6b"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0012_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"64eaada7eec190407f5fd581c7941495f4eca94cf1373fe579c7f47152b1e5bc","functional_test":{"relative_path":"pairs_trading/test_0012_pairs_trading.py","sha256":"943ad11e178293e0b35341ed5f828935cdf51bc42d4f012c7078b5ee94f9b19c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_pairs_trading.py","sha256":"7486822d2b0558944049a62d815ed04c76942bd5263809255f6854b5a24ca1bd"},{"path":"config.yaml","sha256":"7340d5aaeb2afbae5c253a298f0b1c0c585314b10887c6d2a260ea528c209af9"},{"path":"run.py","sha256":"fa68337f7c4e5ad7020b12bee453f6d4569190e7d2bb3039623b3222f36ab83a"}],"relative_path":"pairs_trading/0012_pairs_trading","sha256":"4bbde6922e1971416b7c84785d70c2e82672c0cfbaf8001ecad761b20d2f636c"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0013_distance_pairs_trading","category":"pairs_trading","dependencies":[],"entry_hash":"70940c486d1ae4fdcb8e14fda248a6f373ed9ae45c82854c3ac2a9709286bef5","functional_test":{"relative_path":"pairs_trading/test_0013_distance_pairs_trading.py","sha256":"f1ed939b10793aab9ed43af67ec82d966f33f75dfb0d1d05c0c7dd80371d5136"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_distance_pairs_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_distance_pairs_trading.py","sha256":"5ee140de1adc28899f87237948f1f0e69c1d78ff94f4673e1d8d8ff0bf2f1ac5"},{"path":"config.yaml","sha256":"e3ebec3236548977504ff83f166a3cf59609fea40f35222d90f46bc9fd7dd832"},{"path":"run.py","sha256":"af8a9558da2955b696dad9fae37caeffe6712b3b26be9ebb5135a3c1178d7926"}],"relative_path":"pairs_trading/0013_distance_pairs_trading","sha256":"159a21ede4f0e17e68fcbfbdcf9565f7e2da16038c5f6dfe971f63fc7b14fb6d"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0014_cad_crude_pairs_strategy","category":"pairs_trading","dependencies":[],"entry_hash":"3fc2c1fcec979202ed517d6d751882313b5961d53e805b9d50ca401d90f6daf2","functional_test":{"relative_path":"pairs_trading/test_0014_cad_crude_pairs_strategy.py","sha256":"bffb93a6f94a1a19915c51e7d1dc8e7354ca146dd20bfc808fc1a03c453f22ad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_cad_crude_pairs_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_cad_crude_pairs.py","sha256":"35d756b7ea899edde4f9511ee58d821a191fbf420593843c02a2ccc2e29baee6"},{"path":"config.yaml","sha256":"021c902a3bac686658017d02e25f19c55c6cd93f2e2df26f2167d69d26867830"},{"path":"run.py","sha256":"07dd38b8c91357d974c21be4c171a57f5a0a1410f206a6b053a0fb8bd6fa3769"}],"relative_path":"pairs_trading/0014_cad_crude_pairs_strategy","sha256":"abaf42a7e646dc51a95b479c05673e4e528c4c3141c3216f019db960d9b1bfef"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0015_renko_kagi_pairs_strategy","category":"pairs_trading","dependencies":[],"entry_hash":"6e57f05959059c5c1c42a1ded38be439f95bb471b2ef0b8af7d5ed9f4451112d","functional_test":{"relative_path":"pairs_trading/test_0015_renko_kagi_pairs_strategy.py","sha256":"85b0f7746bdd328bbd63903bd9bd4c03665d7a96d0ad073de35aa13508c16268"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_renko_kagi_pairs_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_renko_kagi_pairs.py","sha256":"bb310315e33891bffffc494ad37eb1728d7f7a958273b5771920d75d29dbf035"},{"path":"config.yaml","sha256":"91da25a59993042fb16d5b553e6e4b8ae8e797915b4abbecc06e1e6d37ccf103"},{"path":"run.py","sha256":"267770eb0d610d2e827e8275a49901dc3b73c94347adee3f3bd2e1c46a6ca3a9"}],"relative_path":"pairs_trading/0015_renko_kagi_pairs_strategy","sha256":"634ad8c57fd6eb9587f1928161fefc55da047c8ad27777b7f5fbc223229fa200"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0016_pairs_trading_strategy","category":"pairs_trading","dependencies":[],"entry_hash":"e7f6fd3c060a60125ac15c7ffa3dbba19dfc6f3d8892ead7b556749f96f32f29","functional_test":{"relative_path":"pairs_trading/test_0016_pairs_trading_strategy.py","sha256":"437c4c45775e51f4d0dcfe35a67e4624fe70e01713af61c868c062202304a4cb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_pairs_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_pairs_trading.py","sha256":"03f4270207d95803223760589a6aa27f90291bdb484e1ab98f43b91566c515d9"},{"path":"config.yaml","sha256":"5c6a0233cbc55382bbba34c71dc94e2ee07ce0e4bcfca9706613bda71e4a2088"},{"path":"run.py","sha256":"722ad086c7e0d3edd7b4dd2e4e0ec07df0324c5bf55e2aa8b515d3ceb4bee82f"}],"relative_path":"pairs_trading/0016_pairs_trading_strategy","sha256":"9b4e1b2144c98dce2544804fff7de031e254db4ffb8f7eea5b12eea348af9853"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0017_0152_lbs","category":"pairs_trading","dependencies":[],"entry_hash":"0b9a562a2f815df3dfc4d8e1027d2db57212f60e91319565596c24e2313e2901","functional_test":{"relative_path":"pairs_trading/test_0017_0152_lbs.py","sha256":"d21f80e2ac280fb70576c2396f557919366ea1726a3848fc9d342aecf049d3cb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_0152_lbs","source_available":false,"strategy_package":{"files":[{"path":"strategy_lbs.py","sha256":"61a3e2553368b6bc15d26c7753e1794041960597ca33711495e93e30f6e8c6be"},{"path":"config.yaml","sha256":"be725a0e6044279999b3d6fee8b0f480900ad3567148a9439ddb607b658f0760"},{"path":"run.py","sha256":"27145a16c198b4a472da49a2428d38796461239f89adb09a538fc4e245730d3a"}],"relative_path":"pairs_trading/0017_0152_lbs","sha256":"1e7b7e2a15479edb132a76353188ec9b091cdba4a4ac02d46fdcd373b6392eac"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0018_0548_pending_orders_by_time","category":"pairs_trading","dependencies":[],"entry_hash":"56219e0207f8e96b7102d52c9604f0fcd0a88d22b3309b2f1acca329d9f7778e","functional_test":{"relative_path":"pairs_trading/test_0018_0548_pending_orders_by_time.py","sha256":"3105715ef6733c92afe2341a892e18fd1448d7767cb6c9c7722bd7464114f949"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_0548_pending_orders_by_time","source_available":false,"strategy_package":{"files":[{"path":"strategy_pending_orders_by_time.py","sha256":"8b347c76e1303799e81b44bfa65a0b31bbb7fa42e61ae5674a1b351fab7966c6"},{"path":"config.yaml","sha256":"e2b7c339aa0a6c9a7c2f30a8eade263f3db745e9137d63f700d4d8bff037eaca"},{"path":"run.py","sha256":"7b9f7e394703369b87e1ee52a4bdbd34c7d4b4e21ed5ac36ba9e9e3ad2e73a61"}],"relative_path":"pairs_trading/0018_0548_pending_orders_by_time","sha256":"61d34fea2866efd35eddcbaf08be91c78f3d691c296d7cc071e280f6bcc05571"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0019_0549_ea_trix","category":"pairs_trading","dependencies":[],"entry_hash":"0bb95cbc6700eda7eba3d0f494921c26fa2c976c42ad41beb8198a21f20842f5","functional_test":{"relative_path":"pairs_trading/test_0019_0549_ea_trix.py","sha256":"bfaf067bb7119751fe8e129019c9c47987ac23d51b946eae54bf7947df2f4c38"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_0549_ea_trix","source_available":false,"strategy_package":{"files":[{"path":"strategy_ea_trix.py","sha256":"59f37b73c7cd7bdb9e30a740b0ccd815c962b00b3b28300b32e90019541d72a9"},{"path":"config.yaml","sha256":"8233f3946c21b42e76e6dfa84624c774dff4909f4ba0a4f3b1e9455883eef011"},{"path":"run.py","sha256":"11d72d3c65aa3ff00459b0c9f450fb7f17fbf8b902ff4058a610cbb60154b806"}],"relative_path":"pairs_trading/0019_0549_ea_trix","sha256":"82e50c3b913c77e34aa937ca14b952a83852f521a8f167b4111670b9dcc9fd41"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0020_0765_simplest_hedging_ea","category":"pairs_trading","dependencies":[],"entry_hash":"0cda3858370065237249c30a8757cec71f8681b3ed03e964c90e351e539174ba","functional_test":{"relative_path":"pairs_trading/test_0020_0765_simplest_hedging_ea.py","sha256":"bc7e1baf0c76edf2bdf44ddb38c3ff3351c9f12deb2a0e8fa6efadc6e2683d1a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_0765_simplest_hedging_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_simplest_hedging_ea.py","sha256":"127cc0e464edd88ea031773fd1f00deada2e2f7a88ab9a624cbd5009c494b975"},{"path":"config.yaml","sha256":"b2bf0221e1896956d69b705102dbe2a3b6d451f28556fd15d5ed66805ea71446"},{"path":"run.py","sha256":"8f0831de967d1cd54024373a71299fe084aa9126b662cef9d1d4617a55a6b2e8"}],"relative_path":"pairs_trading/0020_0765_simplest_hedging_ea","sha256":"d09127c1f5b0662169cf733746eca56cc350579ab4b4d79a9ececa141fb024c1"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0021_0924_laguerre","category":"pairs_trading","dependencies":[],"entry_hash":"a66c9f5e5e7375bf24ec993cedde4189a79579ecdfebcfbb08dca14a1c53242b","functional_test":{"relative_path":"pairs_trading/test_0021_0924_laguerre.py","sha256":"9004d313f337fdeac874cd025dff0661b20a7fd866e3e91acf830dd93ac5ebcc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_0924_laguerre","source_available":false,"strategy_package":{"files":[{"path":"strategy_laguerre.py","sha256":"b2d31d4bf178ab8327f5d085cdaec699ccc8dd2a738a22d503ae75d6f01b3b8c"},{"path":"config.yaml","sha256":"4736707a1345beca8e2959ccf7b760fc056603fcc32a300b402d6fd749525a40"},{"path":"run.py","sha256":"b9137c934042ec4eecd3a88eed5dd70ebf3e233812aa3f754e24e3facfae8f78"}],"relative_path":"pairs_trading/0021_0924_laguerre","sha256":"309a3cd1176f5fb9c04d960daec5b4ffa14044355348ea5ef8e1fcecd12e25c8"}} +{"archetypes":["pairs_spread"],"canonical_id":"pairs_trading/0022_1141_vlt_trader","category":"pairs_trading","dependencies":[],"entry_hash":"ce628158459c54aab730863d198036a2aaaa986c817815f3d4c28accdcbdd73c","functional_test":{"relative_path":"pairs_trading/test_0022_1141_vlt_trader.py","sha256":"54da087fe6b64545b409b7e51de5b9d2ba0d6d6b4c2556e6be66e114c42dd157"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_1141_vlt_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_vlt_trader.py","sha256":"4949ce4b438567a592d9238d8fb470f0a3c83a95e60c1bad3b47eb8262216fda"},{"path":"config.yaml","sha256":"fc6269bb04417e2a8f3da73ac085df86180cd836c83af808f8235a0848f2d26f"},{"path":"run.py","sha256":"757596c6aa8b7debedeb08549b8ce443880c039cfb93a0135691cc043e2fb365"}],"relative_path":"pairs_trading/0022_1141_vlt_trader","sha256":"04d23259ad150ac2116966450c6a447d048b566732d493b0a132735dd5df4604"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0001_mostashar15_pivot","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"7bc6d43d1ae45c4d3f078ae3a0fd5903d0780f1aa5ef52cd69b58bcb5ddf12b4","functional_test":{"relative_path":"pivot_fibonacci_system/test_0001_mostashar15_pivot.py","sha256":"a71767d5a9566c4008670a391b1ff4b3d31974121c59d7470f4740bd0dc62396"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_mostashar15_pivot","source_available":false,"strategy_package":{"files":[{"path":"strategy_mostashar15_pivot.py","sha256":"8fe73a91cf78adee8f1063a2fb0924bf06670e442c92972a73d90418ae381e95"},{"path":"config.yaml","sha256":"33488df220cee1cf530814ed6ff348e16f26aea34f57c5cbac5b9eb78aeb90f8"},{"path":"run.py","sha256":"1d5eb94b064e0addd87e903fbe4e3cc49b98533e47d675e3c80a022d723bf2d0"}],"relative_path":"pivot_fibonacci_system/0001_mostashar15_pivot","sha256":"6623cf86ceb3826b65b46e15b3274ac691c9697ff6a0bf7f1ffe486720a68475"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0002_simplepivot","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"597eff318da8c5e9d8a21610a6ed15b480649c5f4bda651da30dcf98cb5311b0","functional_test":{"relative_path":"pivot_fibonacci_system/test_0002_simplepivot.py","sha256":"2240ba27dc5965bd03fd2c1606423840dc57c85e33053701ec45a34be5815780"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_simplepivot","source_available":false,"strategy_package":{"files":[{"path":"strategy_simplepivot.py","sha256":"7df2734b12ed3917d06ace0663647ab195e3941dcf4a91ce89c1934508a72534"},{"path":"config.yaml","sha256":"6ff2b87a887a0fc28ae88c4dd6572172ca845034728e01c0edd04829d218cae1"},{"path":"run.py","sha256":"0fce05e1f469b721f39c2c899b9ef0b5f74b74de6b8aa095630b3f31145c8c9c"}],"relative_path":"pivot_fibonacci_system/0002_simplepivot","sha256":"8cf2ccfbbcbfecca555dfe5c22029008d9988a15ae77b62f23f0ecda0e198afd"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0003_pivotheiken_3","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"f97a9df0df7752710465147c26a1b0fb78520b34d1d05f89deb56efea5c05841","functional_test":{"relative_path":"pivot_fibonacci_system/test_0003_pivotheiken_3.py","sha256":"ac555d978475854c743d6eab6258a27e20758c76ac794516f50c2ca3fba2c725"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_pivotheiken_3","source_available":false,"strategy_package":{"files":[{"path":"strategy_pivotheiken_3.py","sha256":"b825f6d306977b63fa05b739da32b80ee4bf6f2ed26f25e61644c0dfd85dd316"},{"path":"config.yaml","sha256":"e0ce28a72b430cf49d011b5a7afef9696159c274498e8f07037a0b031201cd4d"},{"path":"run.py","sha256":"1dcc05ae9af75d777ed191fa6bbd5168be66f860491beab0823a403888f0ce83"}],"relative_path":"pivot_fibonacci_system/0003_pivotheiken_3","sha256":"c8dbc9c4b35e97efd0b986f226e33114492c04a91b7f2aef2ccb6c7656db0d3e"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0004_fibo_isar","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"43be6ece85cdfdcfea20e579572bd762854aab792868c63cf5cdd50b8679d593","functional_test":{"relative_path":"pivot_fibonacci_system/test_0004_fibo_isar.py","sha256":"426af032cda102ee03f12584c4d4455279132a959314c1455929fb093ff1b8c2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_fibo_isar","source_available":false,"strategy_package":{"files":[{"path":"strategy_fibo_isar.py","sha256":"b31d7e1805694b5aa344bc8513dabc46c87a6f211199742e71c3d7bc0fbe16ca"},{"path":"config.yaml","sha256":"b5077a6a0f4392a921e8f887f46355794f89dcf6426c50bb6be6d881977baec9"},{"path":"run.py","sha256":"233caa1d417a537c6ae2937edd2ad2edc0c2606353fbdd315745635f1b78beb4"}],"relative_path":"pivot_fibonacci_system/0004_fibo_isar","sha256":"54ef14a9f86b2abdd65e03e7a58f4738f0399c3d3b92f0775c647c3ca79484c0"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0005_fibocandles","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"8b5531f372db7a1373ad86d9dc554222f9e4a0188f33b9c41cb06c8ff6a4ec1a","functional_test":{"relative_path":"pivot_fibonacci_system/test_0005_fibocandles.py","sha256":"51feca79ba81f74e85ae9d4ec040faccf95d47b7ed825ae60140299cd0d8cfad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_fibocandles","source_available":false,"strategy_package":{"files":[{"path":"strategy_fibocandles.py","sha256":"3aaa459dffcba9d057c5d6469416a3ad85a287ef1970cdd5885e41d8dd1570d1"},{"path":"config.yaml","sha256":"2290e50623de068c496fc548ac5078e89d278f24690fc291055b84614b6f6c96"},{"path":"run.py","sha256":"f1a38d9197cfb0d0b1c3e290934dd5078d0c028eac1b7a220fe668ec103abaa4"}],"relative_path":"pivot_fibonacci_system/0005_fibocandles","sha256":"465273c8fca3e93a6799d422f64f88e7a145d9fab7b50ea55c20456e76a39450"}} +{"archetypes":["multi_indicator_system"],"canonical_id":"pivot_fibonacci_system/0006_volatility_pivot","category":"pivot_fibonacci_system","dependencies":[],"entry_hash":"c346477f77d80ea5b2747a2ce3deee02bf3784b4aaf648b3f49d069799ab4fca","functional_test":{"relative_path":"pivot_fibonacci_system/test_0006_volatility_pivot.py","sha256":"c4c8990066f97c5d49033be461f17381f37102ba0d3877ea4efda64408893264"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_volatility_pivot","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_pivot.py","sha256":"1ebee871568cd39d11610092508ce0ba8dfef6b187f1ae6b3206ea204401d829"},{"path":"config.yaml","sha256":"a4a3592f301575d31274ad0c601f932367f362a805e18830217df9a3c87bbedc"},{"path":"run.py","sha256":"4ae792191b3c9988784c9992be108e708ada1b107127544604c4c6a29da0944b"}],"relative_path":"pivot_fibonacci_system/0006_volatility_pivot","sha256":"11de70fade2c45d7e82589ca68877b935f71366e573aa65cab9ded2d193282bd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0001_0033_simple_three_inside_pattern_ea","category":"price_patterns","dependencies":[],"entry_hash":"405625d7438e26f9b0202edfad3f0017bc8c2b8795192d7454d71de74a2a035f","functional_test":{"relative_path":"price_patterns/test_0001_0033_simple_three_inside_pattern_ea.py","sha256":"cb50e7bd7290cd7ed4a4c34bf306635c3598e7a73fbe59e00860d9dd370b2acf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_0033_simple_three_inside_pattern_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_three_inside_pattern.py","sha256":"a677ece1d7cb2c9459cf10a89c1c205f85dec4215e6d395e782d83d1cbf4ac76"},{"path":"config.yaml","sha256":"f2e3da888a5129fced733d151258bd217ba0639b8a35932f144a17f0473cb6fd"},{"path":"run.py","sha256":"74383ce325a5a199afae54ecc50addc5a4991ac627218e2918de386694c12c4c"}],"relative_path":"price_patterns/0001_0033_simple_three_inside_pattern_ea","sha256":"ef81a8375fcc34cc7212c3b5db882f81a3a83155844b71c4324f70fc2d7105ba"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0002_0343_exp_xperiodcandle_x2","category":"price_patterns","dependencies":[],"entry_hash":"90843f18b0a0c1194c9f20af89131950e449acfc70b989f22be8ebae298ab312","functional_test":{"relative_path":"price_patterns/test_0002_0343_exp_xperiodcandle_x2.py","sha256":"ff7fe43f3085a838ac43b44cbc920d6d85fe2a443ad888091bad6ce4ec0f8eae"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_0343_exp_xperiodcandle_x2","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_xperiodcandle_x2.py","sha256":"ff13f633b6f4f2f377909313f897e7cfa55dd964d37ec012ab9052559d96d674"},{"path":"config.yaml","sha256":"06b4233f9b9bebdcd7cdeb965fae3a9557fd590e270dc424f74437c988d69f24"},{"path":"run.py","sha256":"114a8ea2d002f594779553c5d95362578aa6066001c416a7f179f1e6b9f5180a"}],"relative_path":"price_patterns/0002_0343_exp_xperiodcandle_x2","sha256":"4348b64618884de7af7802c009d8891b6c35ec1c46ec3970affb1dc398728e73"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0003_0344_exp_xperiodcandle","category":"price_patterns","dependencies":[],"entry_hash":"483193fc7d603d5e23a778a80be4a766ec9ea747f6e9114eb5441b869ade283d","functional_test":{"relative_path":"price_patterns/test_0003_0344_exp_xperiodcandle.py","sha256":"ec6bf74ac4058b7ef5613df65f9b2b8b9555010f43e66fa0a6c02639f856da41"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_0344_exp_xperiodcandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_exp_xperiodcandle.py","sha256":"9f9785354f8d348e57811daaa1b56ebcefc237d88aa6f98886cb223d2323e920"},{"path":"config.yaml","sha256":"4240c7a9ea90b26570063867c0a2c324d0e5a3c715de888b55bfb18cf64a3a26"},{"path":"run.py","sha256":"a501f9961d882fb20ff7bc42b645f25d7ddab3cee8d305837d93e12523171380"}],"relative_path":"price_patterns/0003_0344_exp_xperiodcandle","sha256":"9478fdc48d92dbe9ea94e5055749651399fee01b71b4aa2e9d979c26156e1973"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0004_0380_executor_candles","category":"price_patterns","dependencies":[],"entry_hash":"c35fabb480614b9934ad37cb1a72e30662f6315d7b43a05a48bc37ac4aa5e2ee","functional_test":{"relative_path":"price_patterns/test_0004_0380_executor_candles.py","sha256":"e6b04ef9c45e36d3e09fcb85de307fbc919483661ac2c166546774b6171d8b91"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_0380_executor_candles","source_available":false,"strategy_package":{"files":[{"path":"strategy_executor_candles.py","sha256":"19fae6a7c9c134a755bbb4902e27963ad03ab28c627fb894028de66257d78077"},{"path":"config.yaml","sha256":"3f8a72abccaaf2651ef677e394282d372d7a4fc30c9d6ff566cc66568ed26108"},{"path":"run.py","sha256":"9c4ee048ecd876a37d8c5fa0211316cbbbbc95e474e4c146e2f9f73c0270df4f"}],"relative_path":"price_patterns/0004_0380_executor_candles","sha256":"f1033965ae6f171b6635f1647bf96e11cac978ca2d971a768c4702a52d81f26f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0005_0495_doji_trader","category":"price_patterns","dependencies":[],"entry_hash":"f8e64376ef1d9bca4eaa52d7d8499a6760152482eebb4edc998e7a129f5bb430","functional_test":{"relative_path":"price_patterns/test_0005_0495_doji_trader.py","sha256":"3b34216107b7bebbfeb40aa3581d457d33311bf0144942ead7d31f538cef722c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_0495_doji_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_doji_trader.py","sha256":"1a8db9fb30f3047631f49bdda169ad7fc83f7a5904ef7a74a700e896570b6d82"},{"path":"config.yaml","sha256":"1765d585531e2550ccd35c5e94bf8764a008fec37342be79c9bfa0fd8a9d2aea"},{"path":"run.py","sha256":"cd00d60d3ae98dd383a851ba0bef600801f8c2604e2fb4b448004329fac02ea2"}],"relative_path":"price_patterns/0005_0495_doji_trader","sha256":"addb29de02a172fc218b064bfbb4833bff9644582bf8683267ea3a0103f50206"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0006_0510_n_candles_v5","category":"price_patterns","dependencies":[],"entry_hash":"d7251607d7f209d56c90812ea51092ec013e80b497206fa742e13a74d4009695","functional_test":{"relative_path":"price_patterns/test_0006_0510_n_candles_v5.py","sha256":"6b7dc177b9b76b6747d4bfdf67b74aba1f1ee4dce3daa9325afbc6dff6ecaa44"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_0510_n_candles_v5","source_available":false,"strategy_package":{"files":[{"path":"strategy_n_candles_v5.py","sha256":"be0ce642cfac4a77a7974bc2a3d7ea712aa4b21c5976364ec9963eb6e62ddd80"},{"path":"config.yaml","sha256":"f8b585ddf6398d0e66a23b6a28bc6333fa574a73972124eeeb209324e4eb1a4d"},{"path":"run.py","sha256":"c8d9d12b54ea961d6e07d01102a9441a521432dfa0e2b8a8ece4bb90b2917f4f"}],"relative_path":"price_patterns/0006_0510_n_candles_v5","sha256":"10d2da35c6f3cafbaaff8f68e407f844b7cf2f9777b607da1974740a55f3c018"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0007_0581_n_candles_v4","category":"price_patterns","dependencies":[],"entry_hash":"c2f8307dfdd631057366ce25767bd6c74ac69be30882603d9d1a97b57d0b07b8","functional_test":{"relative_path":"price_patterns/test_0007_0581_n_candles_v4.py","sha256":"4a9368067a3c0ba8972af836a6363c2a61be62eed4f4bdfca19a478f6cd06f9e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_0581_n_candles_v4","source_available":false,"strategy_package":{"files":[{"path":"strategy_n_candles_v4.py","sha256":"7d572e68fa54d4fa43d62137d68c12ac4c266104e71bece84be26479d0d9db25"},{"path":"config.yaml","sha256":"56158b75d1cf8ba5a4096b391668f0706b251e567dd94b693f5123ffcd4d3041"},{"path":"run.py","sha256":"d6972eceb05c3a01ca2bb68ec09860621f71062dc29c7d7686e52fe77eac8805"}],"relative_path":"price_patterns/0007_0581_n_candles_v4","sha256":"4d7103f3b3c751b93cc10a1bb0325b4beb3cee1e94ace6ba01e3d8ee8d9d5d0d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0008_0584_n_candles_v3","category":"price_patterns","dependencies":[],"entry_hash":"ccd2ff3f600a635eafcbf9ae34e555d611616ead0db55912a20eeae6340ac98b","functional_test":{"relative_path":"price_patterns/test_0008_0584_n_candles_v3.py","sha256":"3806b73ae4841118f34001d192affa24f72556a0e7458b7de4c02b263e5dda8c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_0584_n_candles_v3","source_available":false,"strategy_package":{"files":[{"path":"strategy_n_candles_v3.py","sha256":"38066ce9d2169a2674eb1e864730f133c94aa5865e84a571eb7342416a7f4f33"},{"path":"config.yaml","sha256":"05743b5164f3a67eafdea7634f65771285e65e5638cbd481a24ccbe3ff9e9a83"},{"path":"run.py","sha256":"2ec1b96a29c34052671cf24eacb2132fc61c4d26b05c2d87863806b1ee03d47f"}],"relative_path":"price_patterns/0008_0584_n_candles_v3","sha256":"81c0042fceff328a0ef468d951478b4caa0c61090066a3a730cd9f70547fd955"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0009_0587_eveningstar","category":"price_patterns","dependencies":[],"entry_hash":"82110fa0d7a9b02a9af4443c194093c85a34d21d12c00d993f3ebf9a9eb081ec","functional_test":{"relative_path":"price_patterns/test_0009_0587_eveningstar.py","sha256":"a234593c66d050828b3815b6697cb5d0fef263f63e3a6cd6b62f96d04f8bc3dc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_0587_eveningstar","source_available":false,"strategy_package":{"files":[{"path":"strategy_eveningstar.py","sha256":"03262084ffff6f55b5de82540e0ba8719c9d89800b5d78bc1373b3cf3f6d67e2"},{"path":"config.yaml","sha256":"877670b8390fd4dc6dcc4197b17141f2a0f5d6e55f9a5293b509ca25cdb30338"},{"path":"run.py","sha256":"58d7ad01d7a98283462e3bc658ca79a123f9c7ac278a83e053a8957fcb81ced3"}],"relative_path":"price_patterns/0009_0587_eveningstar","sha256":"17df73a9656879fbdd951fcaaf9bfbdba1da3c719a53a445c5637850f9a3ca45"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0010_0588_bullish_bearish_engulfing","category":"price_patterns","dependencies":[],"entry_hash":"9bedf86cba2df3538ae10b7a865278d6eb8f68d4e0baf15015f57ab4ee715593","functional_test":{"relative_path":"price_patterns/test_0010_0588_bullish_bearish_engulfing.py","sha256":"4f12db0304fea1c7b6c648c02c12db19c1a52406f50b9ee920654dda81a9f14c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_0588_bullish_bearish_engulfing","source_available":false,"strategy_package":{"files":[{"path":"strategy_bullish_bearish_engulfing.py","sha256":"cc2611ef983aeaaa87a6031ed7bcf06f61b2281357c4522305708a234160f7b2"},{"path":"config.yaml","sha256":"6a2c83e4a40a3eaabd0a06c97ef33a7e794025d12f2de5e64fa6aaa821cbd349"},{"path":"run.py","sha256":"b5a29b3846c46e52f44e6c48e501d256f34d3620122e8b9f24a3b5ab9f72f243"}],"relative_path":"price_patterns/0010_0588_bullish_bearish_engulfing","sha256":"15e81180ebe8923caf367e7bfd4ffe73842b31b088bcedf7cf5af4e53e695f6c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0011_0615_n_candles","category":"price_patterns","dependencies":[],"entry_hash":"75accc941358ff661937600e917f46e288ffec51e9d9ca9be5086998532c029f","functional_test":{"relative_path":"price_patterns/test_0011_0615_n_candles.py","sha256":"a26cb96067f73a749cd1006ae5f6c57c34b75cc157e19685294f7683ae6a2122"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_0615_n_candles","source_available":false,"strategy_package":{"files":[{"path":"strategy_n_candles.py","sha256":"a8c442e14c78b6a005374d5cf211f88d469b44ad09023a4826a3e8580ee5d34e"},{"path":"config.yaml","sha256":"70f519621f61f3e92c35e4eca693c1e0493f6f6c720bdba517b22112d23f1e09"},{"path":"run.py","sha256":"2ea9a48a68b927f0ae5498339e7cb652c73bdfe02ace65619020f926ead30669"}],"relative_path":"price_patterns/0011_0615_n_candles","sha256":"7ff08657c9684177421abd7c9798aeb5be2032a7d8a679890b0269eaa0364973"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0012_0617_candle","category":"price_patterns","dependencies":[],"entry_hash":"0780f74345a4563315bb32ea85058082ab8b5ae6a5c701354f7add5fa0fdfb3e","functional_test":{"relative_path":"price_patterns/test_0012_0617_candle.py","sha256":"b0db7383d904b9b3088e0186d3916ba4923b388c54b6a08ff0422433c88a2f72"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_0617_candle","source_available":false,"strategy_package":{"files":[{"path":"strategy_candle.py","sha256":"26b5013b73021db2286c3044d7d102c0681527774c2c54afe7a91fa7ec8de154"},{"path":"config.yaml","sha256":"f7f099876c966da564ee44256bcf0038df0fcef9ad6de3e7b023fd66987d4005"},{"path":"run.py","sha256":"901c6e77913b14246eefa1e55aa28e1262c19082cebd0e36aef9e62fc34af30f"}],"relative_path":"price_patterns/0012_0617_candle","sha256":"a1842facda6e84d91dc4cf738634060577ccbac4c2185743a9e4921828b30f3f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0013_0843_candlesticksbw","category":"price_patterns","dependencies":[],"entry_hash":"795e8f024e535173ced3089b6583589c2e9e6d3780b37d20fb7b83c77edab347","functional_test":{"relative_path":"price_patterns/test_0013_0843_candlesticksbw.py","sha256":"2572b8daa1ed31383810f9a09090310e7972ad1ae1516173006dbf6eb7615906"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0843_candlesticksbw","source_available":false,"strategy_package":{"files":[{"path":"strategy_candlesticksbw.py","sha256":"87541c77a4e8beda6732c15830fd6b4bd65f386189bc83ce7f068650c1538f5a"},{"path":"config.yaml","sha256":"4b89ae49540a096ff6ce53db564893da574bd64f852ad4684c94d8de7e72257c"},{"path":"run.py","sha256":"fbc54dd16368a6f3022e733942397e18c4b6e66171e4ee47fb75b4b529173674"}],"relative_path":"price_patterns/0013_0843_candlesticksbw","sha256":"64f6ec079c31c2f3f319ecb921cba75e9a843bc90f26ce6151886ada12a3f2df"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0014_0923_3linebreak","category":"price_patterns","dependencies":[],"entry_hash":"f821835e64edee066a38f9790ac8c1a10359f3b11577b68738c044f25443d30e","functional_test":{"relative_path":"price_patterns/test_0014_0923_3linebreak.py","sha256":"c2186fc34fe22972d2b1d3aa59746f5a35505a01411bf96d5851e6d8a0623e83"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0923_3linebreak","source_available":false,"strategy_package":{"files":[{"path":"strategy_3linebreak.py","sha256":"850844092c959a19d1ca634d87d4c893552e9c81e966eeaa0415619b01a79a1c"},{"path":"config.yaml","sha256":"ac76e0edb510927c6a3b74a3977363b56ef457a8ed94aa615e19b44bff96d119"},{"path":"run.py","sha256":"46fdc2ca3c259a2a541b885f1945cbec00233c7e8d10f17c189344f90d45ee65"}],"relative_path":"price_patterns/0014_0923_3linebreak","sha256":"b889568a0fc462bd7cecc7bb54c07a93b4e50dc1b4aba24fa2ba5ed67d98d8cf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0015_1204_heiken_ashi","category":"price_patterns","dependencies":[],"entry_hash":"823cf95286421490a1130c5a16d4aa3c3c2c7b924961ff42e127ab6c4119bca6","functional_test":{"relative_path":"price_patterns/test_0015_1204_heiken_ashi.py","sha256":"5925151115ecaf97f6102b30fb549b637c4781174c399278a92ecbe60cd67524"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_1204_heiken_ashi","source_available":false,"strategy_package":{"files":[{"path":"strategy_heiken_ashi.py","sha256":"66405d2ccb1314a21b7cabbc029f520e35d1f2e5dfea9d159dccd30d8fe15013"},{"path":"config.yaml","sha256":"a6ea6abe58f620315964260bfd92f866e86d51a74741f4103d25cbdf0a13e59f"},{"path":"run.py","sha256":"26b9604db7634a83814366d8c5b0e05a93743fdc6014ac64faa0d1321f20bf84"}],"relative_path":"price_patterns/0015_1204_heiken_ashi","sha256":"15994c4fc68b88a0970b15dfa44bd4ec8d7835435db13726e731625bd8f5d04c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0016_1236_2mohlc","category":"price_patterns","dependencies":[],"entry_hash":"376710368dec9e35992f61c18cd86847bf94da7fbae06f9444a2c2e7ef8d568f","functional_test":{"relative_path":"price_patterns/test_0016_1236_2mohlc.py","sha256":"9f8f8a2cb3b310eb8ef6e887e68f82887973d3e16abfac4c892c54b4b17f340c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_1236_2mohlc","source_available":false,"strategy_package":{"files":[{"path":"strategy_2mohlc.py","sha256":"a76e34beb34ca844ef6dd21913863d541c97a5b5c26947dae2c77164e546a246"},{"path":"config.yaml","sha256":"d75e5d630ac61d2280460eac0a1cf8dac538441544e7816f50678af48c4ee63b"},{"path":"run.py","sha256":"e8c28e5eaa7e1d1bd4affa1b0421783f19cd447825eea19c24e7b1374edcf02f"}],"relative_path":"price_patterns/0016_1236_2mohlc","sha256":"25bf78e7080cd9271d57d192821c1dbf3a8b88bc87078c867e278c076401451c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0017_1311_darkcloud_rsi","category":"price_patterns","dependencies":[],"entry_hash":"26dc36b498907d6afaf095bc16dc823ff878f480d27fda1fff51b47414fb0e67","functional_test":{"relative_path":"price_patterns/test_0017_1311_darkcloud_rsi.py","sha256":"61a4f607e6c524a51b64c1fdb1212f7dc32869ef0e7cb9ea32cf1edae6071b3e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_1311_darkcloud_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_darkcloud_rsi.py","sha256":"fe2fc5afad1fb3d91e8bded093c618e0155756104479810a43285d87e680e57b"},{"path":"config.yaml","sha256":"99c7e2fb98f017234cc6cdaa099c98cbe01eeb27a578236f09b0e8476d5831a3"},{"path":"run.py","sha256":"e9d5d9a816492e596ce96c17851e128c344373e952512461d1e60cf3d424e73e"}],"relative_path":"price_patterns/0017_1311_darkcloud_rsi","sha256":"01a45a02701bfd23ae2832d4b4fac19a88631d79680cdbbedc9973125f968fda"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0018_1312_candle_stoch","category":"price_patterns","dependencies":[],"entry_hash":"191547134a1d0f02af7354b21ae36c3c7502be572e3171d7c93d38205c81da4d","functional_test":{"relative_path":"price_patterns/test_0018_1312_candle_stoch.py","sha256":"1ffc05346f218184cd44225649b924a9fa381b7d7b2cbba2fbaaeb7a8694d94a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_1312_candle_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_candle_stoch.py","sha256":"a31b4a09a18e02d8e8ae5e237e25fa728a450f944d37ba3a02c0791bdcf71198"},{"path":"config.yaml","sha256":"f88caee23e6aca57f6f8242b792da9b56e00fc10d457e33f0ab83bd5b7eb3388"},{"path":"run.py","sha256":"375f4d881fc26ae99f254f15cee0abaa9294d91ae73a9fc548593dde69533997"}],"relative_path":"price_patterns/0018_1312_candle_stoch","sha256":"9585f938e2c27f4391a2a35c2bacb3bc46c150cac25ef067a1181c8b964321dd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0019_1318_morningstar_cci","category":"price_patterns","dependencies":[],"entry_hash":"228a18e5971174a183ae0eca83d13905ad607b491943e2ddf221f15c1ee4e66f","functional_test":{"relative_path":"price_patterns/test_0019_1318_morningstar_cci.py","sha256":"1ad4641face17f9bdd0353dd1929fd4de375b1bf3132435c2b8627904d922261"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_1318_morningstar_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_morningstar_cci.py","sha256":"9db3cd4f505813633193d6293b0d4b9ebf9d778c94655ac97e7f2ffce9bf4823"},{"path":"config.yaml","sha256":"de004d695f694b565e4b598456c1546135884837c123e3a94589a94ac8fa4476"},{"path":"run.py","sha256":"2c5449977c9bcd1c7eb1b181c083190659e41cb7d07fe2e916175912b136a44e"}],"relative_path":"price_patterns/0019_1318_morningstar_cci","sha256":"c62e11e208c292168a0a22990b7528b06a917c25629f7f53321ab509b594a784"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0020_1319_meetinglines_rsi","category":"price_patterns","dependencies":[],"entry_hash":"c9c89be1d76f2068566764919405c4723a1ca72d574e05a0027ee5749b89fccd","functional_test":{"relative_path":"price_patterns/test_0020_1319_meetinglines_rsi.py","sha256":"cf0743fc183bcdcee8e00d5bb819dce6eb8b2cde78933bf0a337a07ebf7ee346"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_1319_meetinglines_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_meetinglines_rsi.py","sha256":"75004dc152dfdf1bcecd38ab6679fa2596b053424ead53520169dc46944cd6ea"},{"path":"config.yaml","sha256":"e93e8faeb528b0421c0b8219ee07e5bb1c719ba119a0f7f98301fd779ce941df"},{"path":"run.py","sha256":"024e11e4bcbc2c63238b3e0907cbe06b9db290efeea9926533e903ac4301a59f"}],"relative_path":"price_patterns/0020_1319_meetinglines_rsi","sha256":"a33d6fc41881e2ca239d32fa7ed87aec746cb0861f4a93e59748b5dac62e9ad7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0021_1320_meetinglines_mfi","category":"price_patterns","dependencies":[],"entry_hash":"c8e8f48a8a935dba81723df83e4ec969bf7248c640a6a773d3d0de6e6d8ffd7e","functional_test":{"relative_path":"price_patterns/test_0021_1320_meetinglines_mfi.py","sha256":"d64e5e1673ebd37855c7fd60bbd2f624301085a4df3e7c139533ec323725f094"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_1320_meetinglines_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_meetinglines_mfi.py","sha256":"b7dcf7da07ff81d0fedf27ac602566ac87ccdb92d9171a27ec52a8fe2a113d30"},{"path":"config.yaml","sha256":"37cf5bc9b2065cfdc63bc2eec1f925ca89b7705d4bfe2fbc573b9e15a1bcc9d6"},{"path":"run.py","sha256":"26de464ebfd31ee5bef67b67dbec1e0a6ab04b8b8f954703cf5edc8b2ae962be"}],"relative_path":"price_patterns/0021_1320_meetinglines_mfi","sha256":"9afcedd37caf112b39e66837c0b1ec33347eec01d95382c6c6cf0fcb87cee59f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0022_1321_meetinglines_cci","category":"price_patterns","dependencies":[],"entry_hash":"e3cff2a29f3de279a4cbe653983d8cd745bb05f33ba812dd0d213af20c566b63","functional_test":{"relative_path":"price_patterns/test_0022_1321_meetinglines_cci.py","sha256":"942af9a4e1d23fdcdc8aac176aea9dcbff7a7555094eada05c9a610892f43b76"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_1321_meetinglines_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_meetinglines_cci.py","sha256":"21c16a146f546dab1ebe5c719728ac30e958b7b53d893cb34edfeed1d23c6c33"},{"path":"config.yaml","sha256":"100f87dad30bf192fd3243eb97f0b5e9a581e375c123ec4b059c35eb687b2486"},{"path":"run.py","sha256":"280f7b0fdc59113bd61a49cbc5775247a46c68aa6c060224e84cb55601a19c87"}],"relative_path":"price_patterns/0022_1321_meetinglines_cci","sha256":"c024b56f314328f1f5815ce91ec2c15ac898378e1220ffb66bbf34f1442124e4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0023_1323_hammer_rsi","category":"price_patterns","dependencies":[],"entry_hash":"8c1b846568a11ffd38f1376b54c8c7d2bfa3f1a64ff3a4db8792dbc18d9e2ba7","functional_test":{"relative_path":"price_patterns/test_0023_1323_hammer_rsi.py","sha256":"a7659ced542f7161842cafac2f17f5a67d4040923d45bbb025684824cf2831e4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_1323_hammer_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_hammer_rsi.py","sha256":"505611f231c55051403cfef5e17b2c1d0f6e04a19fff3e3361ed585a4e11e2ae"},{"path":"config.yaml","sha256":"7ab080894d94f0b9dfb552d6f9bb16084d3b2da66b7cc293813f38ba8f110543"},{"path":"run.py","sha256":"c69a1180d8967776587cc698e4420ea5e0ed49fcd4e78b9d0e0a5ade6f2ed737"}],"relative_path":"price_patterns/0023_1323_hammer_rsi","sha256":"ff29375b328a5d5d808cd44fc6f4a1cf1382a34e85054cb37440095354542ca3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0024_1324_hammer_mfi","category":"price_patterns","dependencies":[],"entry_hash":"0533cc10f1b0f9bf8ca4a5124a93e5392783895b0cc14903eef45a4b0c51a642","functional_test":{"relative_path":"price_patterns/test_0024_1324_hammer_mfi.py","sha256":"5c00af006c210b3aeb1f4f664d7268f3781878157c552109757203800fe2131a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_1324_hammer_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_hammer_mfi.py","sha256":"a43dfba44416618e477dab267aedf97a066feb6913f4b462e993daecaf3e9305"},{"path":"config.yaml","sha256":"a82548c2f5cc646e46177161dd3252449802a9535f1fa77a15b9d74ff0487437"},{"path":"run.py","sha256":"c93d3808b6a606a5752a6cd4a16a6cc5c8d5c764806edd3417c9baee4a2ee82e"}],"relative_path":"price_patterns/0024_1324_hammer_mfi","sha256":"0a46a0e789421b57f658ff068535ab4f260c19cce76a042cdf4d0c93c8244c3a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0025_1335_harami_rsi","category":"price_patterns","dependencies":[],"entry_hash":"6955e4b89486c7e9d0bb76f62640a5cfb37213ff06e6f86a9c7a4061891e87a7","functional_test":{"relative_path":"price_patterns/test_0025_1335_harami_rsi.py","sha256":"5c76199423e8bf105efb97fc90b25b52e1783a8fd86728c93f2fdd0206e9f200"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_1335_harami_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_harami_rsi.py","sha256":"85f982c9792f33b81dcff26c2b50a15b5a062bafec8ee3c8e03fa183bd14ab85"},{"path":"config.yaml","sha256":"0241775cd5f2dcfb217829da596d214e2f4fcab82eea1a4b2778387969d71ac5"},{"path":"run.py","sha256":"3b39e7d9c7461f67bc5fda12f6edee5dba8a7303a70009aaeafb0b3fc0b96973"}],"relative_path":"price_patterns/0025_1335_harami_rsi","sha256":"91a65c3b09bd785cbdb02ca5fda176de78d706e8d9b8a8d25742ef3660d248b1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0026_1336_harami_mfi","category":"price_patterns","dependencies":[],"entry_hash":"d231b74e2c0f004edfc8c747a01db99d69f21dcfc1432ccd2b2e3e004635da32","functional_test":{"relative_path":"price_patterns/test_0026_1336_harami_mfi.py","sha256":"7d9dc274ffcd46a41095544010a55bcabf149bf0507b15a4c2921e01cb8e9932"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_1336_harami_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_harami_mfi.py","sha256":"d9bd9be4cff13cf7c4387d3baa1fde579af8b392d95aaa54c6fea7724d69f148"},{"path":"config.yaml","sha256":"4b5b113c8ca553f149d790e21dd4557e7f8766ec5623acad9a076d51b3c57ce7"},{"path":"run.py","sha256":"f8939914ed72dc05c6282437f44088c12e74ced8939eab872d379ff5481d881b"}],"relative_path":"price_patterns/0026_1336_harami_mfi","sha256":"14e6c08ad8fa962a2ecaa5421af9abaafc82e34797fca64d57e2ec4c95af888e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0027_1337_harami_cci","category":"price_patterns","dependencies":[],"entry_hash":"1254fbaf0168d2b3abb609968965d8c41e6f4c66ffbc9dd973db981d7f68c050","functional_test":{"relative_path":"price_patterns/test_0027_1337_harami_cci.py","sha256":"0ef1ae8bc45face29d216cee61333e122a336497dd5c9e4c518a03ff74e26214"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_1337_harami_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_harami_cci.py","sha256":"9e57bc9f67ba36e5c22a9f74fd90e266dff7f0525dca77016eab6a71eefaa530"},{"path":"config.yaml","sha256":"2fe765eebc996c3f5dc1954c12a56651ebf6de148af4cf60f2932f0b723765c1"},{"path":"run.py","sha256":"f6966a147ebb375bdfc965bbffe7752d830686d884984483900e21dcfca794a5"}],"relative_path":"price_patterns/0027_1337_harami_cci","sha256":"74696f98ee608a7be2b64755fc0eabcfa7ff9b350aa23575e7bdbb327a780a2b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0028_1339_engulfing_rsi","category":"price_patterns","dependencies":[],"entry_hash":"8387f2df71536487540dec9089ee50e2065f8dda5815e545d5a08e42a6651a29","functional_test":{"relative_path":"price_patterns/test_0028_1339_engulfing_rsi.py","sha256":"50b1bdaafd9d1919c6bbc53b8649bf02a139855f0cde7492857c9eeedd813543"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_1339_engulfing_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_engulfing_rsi.py","sha256":"56c7e8b9930d19c14b7f4b8d1de0015dd5ffd78cf8427ab60e4b4d42b1bbba3a"},{"path":"config.yaml","sha256":"1ee70fbaa9355078dde52fa974595327c2cd940e37e18502a65e28e9cf21a7ab"},{"path":"run.py","sha256":"734ed9fca2fa1c40f190eac09c29faaa7ca217a2eb1ed0c018d67b18b658296a"}],"relative_path":"price_patterns/0028_1339_engulfing_rsi","sha256":"e0c81a09ac3ab57c60d3024c0831dccf55897a02b6fc0878bb82c0b2bb088d62"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0029_0002_price_action_intraday_trading","category":"price_patterns","dependencies":[],"entry_hash":"1ed834de9f998b149933e68662cf9a2cc1d2d91da2d9120adcf2e300274dc1ce","functional_test":{"relative_path":"price_patterns/test_0029_0002_price_action_intraday_trading.py","sha256":"2b70ca26d22152d8c58ad28a70feff57ca9a02a29874ee6557bb0d61e9a9436c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_0002_price_action_intraday_trading","source_available":false,"strategy_package":{"files":[{"path":"strategy_price_action_intraday.py","sha256":"83f338b996aa8a99d74417c8767c16156212c8d159907558099c05dbaed74571"},{"path":"config.yaml","sha256":"168e8500a0c7db93cca5c2b6339faeea3ff6bbb11a17e45ff4daf362b3d87855"},{"path":"run.py","sha256":"4ec5bb52b5d0bb8a222c6e0238d4e94c0772edbee5f81c75d91a6e9600dea06a"}],"relative_path":"price_patterns/0029_0002_price_action_intraday_trading","sha256":"9c4f7d9bf6c9d6f97e0707cc90428c6e2974aa99e2dffdc8c3017b651e5a5e68"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0030_0014_simple_price","category":"price_patterns","dependencies":[],"entry_hash":"7bca9e5734b1e4cbc0a257d791dc37ee5cd72115e20bc784ca9344ccf9e963ea","functional_test":{"relative_path":"price_patterns/test_0030_0014_simple_price.py","sha256":"335492256a286d56427ff53538b0dd4da528df7c979fc9059e4556cd96546758"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0030_0014_simple_price","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_price.py","sha256":"9ad0ac75cfbebea9d53573a4505a135cdd195a352e5d70f19e23124736da5703"},{"path":"config.yaml","sha256":"fa6b707f7a090aeadef506d5efdc89d95c13956d5c3af22abefda57ef61058b0"},{"path":"run.py","sha256":"2e6deeaa47337a42c539f824e26308d754151e7637908b42eff9969dc116a8a7"}],"relative_path":"price_patterns/0030_0014_simple_price","sha256":"f07652f7d1c75c2f39d61a16517a8fc0a9606db46f81ceabef5d83afe1204b83"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0031_0359_price_rollback","category":"price_patterns","dependencies":[],"entry_hash":"1fa5448b026966d0dd6204868a82744245747c03a1e8755bec7b28fdb3d44a6f","functional_test":{"relative_path":"price_patterns/test_0031_0359_price_rollback.py","sha256":"872fcce285877f5d1cce8c3c81babb2952bc37c2ae7f5712ec8014ebe6548b90"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0031_0359_price_rollback","source_available":false,"strategy_package":{"files":[{"path":"strategy_price_rollback.py","sha256":"2f83e2460c9b7d60e4fc657b0870d1934c17be40597707a43df2c037ac46e071"},{"path":"config.yaml","sha256":"9be5a95af484b5052d3adc3b95bd6339d6317e7fc3dca0c669c817890e3c6614"},{"path":"run.py","sha256":"ece71490a3b9c6115aac5538b5a0408f4582e2ccc3d7dcac812ba583b7dcacae"}],"relative_path":"price_patterns/0031_0359_price_rollback","sha256":"d8ca027ae99d086b7821e34405ae3c5430f8fa4d41870cd49c02d1203d23828e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0032_0716_10_pips_eurusd","category":"price_patterns","dependencies":[],"entry_hash":"3077952d291da7eac35f7295a95ea31fc42d9f88d485c1f4187e005258260874","functional_test":{"relative_path":"price_patterns/test_0032_0716_10_pips_eurusd.py","sha256":"45c0d65739556b5b1ff030e2bbb65d7782183429b09889f0c189fcd5c858aec5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0032_0716_10_pips_eurusd","source_available":false,"strategy_package":{"files":[{"path":"strategy_10_pips_eurusd.py","sha256":"38739363c73888ad42b238b1b4afa7b95fbaafae2d1dac8c1e08c8ac95bee3da"},{"path":"config.yaml","sha256":"2c982b40596ec85b59797c6425a77ef9f5aa041054cc3dc5e0ef64ff863791de"},{"path":"run.py","sha256":"b272521ae98389fcb85dfb651b7a7dca0ff3eaba8da12f9f1b3d12676d1da3de"}],"relative_path":"price_patterns/0032_0716_10_pips_eurusd","sha256":"3e54f4e61aa7b5f08ed361fe7c98299387283ae840767c7f900633db9034a1e3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0033_0787_open_ticks","category":"price_patterns","dependencies":[],"entry_hash":"1ba751943dd16700327141558dbd827af2e9eae0c9e8790197bcf78438e02128","functional_test":{"relative_path":"price_patterns/test_0033_0787_open_ticks.py","sha256":"53efd04146410e6b53a6f8b539cc05a8a010b2897f97494ffa51c5fddddcc055"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0033_0787_open_ticks","source_available":false,"strategy_package":{"files":[{"path":"strategy_open_ticks.py","sha256":"74a77c12442534708c934c115f352e9912839fafb838ea1d9ab10c75de9e4c86"},{"path":"config.yaml","sha256":"8a2530d1fa9ee8f3e5f59450a3c4cc19b69fe12bb4a8dade45b44dc961cf2c37"},{"path":"run.py","sha256":"1e3d3d39374dc1fee7a60a168f2ac62561426c424956a51494e476404fad7335"}],"relative_path":"price_patterns/0033_0787_open_ticks","sha256":"919cc275bcadf239c2a29cdc1feb74b52c59e45992a9b910b710505ce5c5cacc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0034_1061_exchange_price","category":"price_patterns","dependencies":[],"entry_hash":"80f52b62f9d95a16d00ed912d412da1dac6479133c3f6b4e68b69ea256d3bc1b","functional_test":{"relative_path":"price_patterns/test_0034_1061_exchange_price.py","sha256":"514232d453b9d314d926c343f43ebb73919bff95e8d13bc8ee83999681614b87"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0034_1061_exchange_price","source_available":false,"strategy_package":{"files":[{"path":"strategy_exchange_price.py","sha256":"3b7255f23b9ead4731ecb08c16f5caaa36f4af35da65e6e4ac49e8459bf8b339"},{"path":"config.yaml","sha256":"8013f21d19e763549bff0a45cdee1487049da82ecc9a0c45c295dbe0e2052e2e"},{"path":"run.py","sha256":"686ea08bd5e905d1f23626686457d4d7c7d4b0f731165b74d919d6e418ee6d55"}],"relative_path":"price_patterns/0034_1061_exchange_price","sha256":"089390d1c39f0df5278fd8f25d030668a222656c05b5cdb21ec6c3d6dfeb9485"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0035_1077_simplebars","category":"price_patterns","dependencies":[],"entry_hash":"7c6f7ed40e832e3a2743cb166b8ac3df18e2cdd862e5397bb7c2983d418d5752","functional_test":{"relative_path":"price_patterns/test_0035_1077_simplebars.py","sha256":"0fd56250c7afe86214bfdd81ad34d3de0587906bfadbd49a11647d4476bb7a52"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0035_1077_simplebars","source_available":false,"strategy_package":{"files":[{"path":"strategy_simplebars.py","sha256":"05a491ab88c8fc6a95eb05b01659288e369194c00548d593e19cb858ce155b86"},{"path":"config.yaml","sha256":"f8184eca791bc54ef183c56f0bd636cb872e87f4be1a24228fc436ad889fbba1"},{"path":"run.py","sha256":"e7b8cdb7343b7e920c5b6da73a82033cb8d7f7dad22bd390268b8986d118c974"}],"relative_path":"price_patterns/0035_1077_simplebars","sha256":"2fffcc1e79c6484fac8f2b61ffe0d947b390d729d749a16d96437c88f13701e3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0036_1234_adaptive_renko","category":"price_patterns","dependencies":[],"entry_hash":"a2cc78e244bd1aa7ae24be6baba3e7dbbe127e1a16978e1f1c53ad03226c7580","functional_test":{"relative_path":"price_patterns/test_0036_1234_adaptive_renko.py","sha256":"c1d1f5e4fead9fc4007f56e94c3db24569f26f8c37ee51ac026c764d96e3880e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0036_1234_adaptive_renko","source_available":false,"strategy_package":{"files":[{"path":"strategy_adaptive_renko.py","sha256":"121c9c9709cd36861a308754024137f7decea48b0252b81deb0ac338f56e288f"},{"path":"config.yaml","sha256":"1baac543e414b9c7cc7a8ccd0570892e36da907d23fd5be76332711b32c13a68"},{"path":"run.py","sha256":"a6d1189c5af2ef72557e1e9b5e67ceefaa7d12d7077bb8cb1033bd62462c007a"}],"relative_path":"price_patterns/0036_1234_adaptive_renko","sha256":"5f5a9a251d3b9580eddac560b365b6d64926bdfdc61e615f688dda4c84141f42"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0037_nr7_pattern_breakout","category":"price_patterns","dependencies":[],"entry_hash":"70d4c8f4b3669ad98fff11b18b79d124b748257c83f58777f37899f4034e42f6","functional_test":{"relative_path":"price_patterns/test_0037_nr7_pattern_breakout.py","sha256":"bd8a9fca9f4cca81abda96cb3c440d7415b82b68cfacbd1491001e07f3a9098f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0037_nr7_pattern_breakout","source_available":false,"strategy_package":{"files":[{"path":"strategy_nr7_breakout.py","sha256":"5e7848ffd2da8f18b0cf00a9da164030e203e036fb251fe39106f0190c97ff3d"},{"path":"config.yaml","sha256":"943a1d17d12b2a245e2522c328d8af9e425d0b8a650f1e54d3a3da10328356ae"},{"path":"run.py","sha256":"df4d9186319864368e2a5853e08d4994400af4fec5e353f56549cee6f41cd538"}],"relative_path":"price_patterns/0037_nr7_pattern_breakout","sha256":"841d5073384e07219f94d9c6921c2732dde064e05fb80e06de9a2e3b3e6c7848"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0038_nr7_price_breakout_entry","category":"price_patterns","dependencies":[],"entry_hash":"f6fbec63c3570b1e068bc3ea7643d42a5085a1cf83a16374b507b944f43ed991","functional_test":{"relative_path":"price_patterns/test_0038_nr7_price_breakout_entry.py","sha256":"d7253fb40008c03774772e1e9627daaeaa153b88fe63526332eaa5e95cb28871"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0038_nr7_price_breakout_entry","source_available":false,"strategy_package":{"files":[{"path":"strategy_nr7_price_breakout_entry.py","sha256":"d89e02fad6c96cbec1a74b27cf1dff2c0df0df5ff5601adaad378943f6ff9c8e"},{"path":"config.yaml","sha256":"8295efd3f3e0609e098c2bb8faf9baa78ddc9642db12bec71d92b5339349bdc9"},{"path":"run.py","sha256":"33ff95151f9a0e349003d02f6faa153a3910deb692de59509ffe33e0f5d47562"}],"relative_path":"price_patterns/0038_nr7_price_breakout_entry","sha256":"48c13dd82cdffc32e2b0cd4d8889e805b84bba2fc390e10a5df437df52e3cd37"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0039_nr7_breakout_filter_exit","category":"price_patterns","dependencies":[],"entry_hash":"e2069e303ad3d8039e0f944e2dcb166f7836141a1e0eb4bd4d18d6ea40386bdd","functional_test":{"relative_path":"price_patterns/test_0039_nr7_breakout_filter_exit.py","sha256":"689da7941619223b1d861eda989cad8d84ffe8d38cfda0c9c78569eeb1a8376d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0039_nr7_breakout_filter_exit","source_available":false,"strategy_package":{"files":[{"path":"strategy_nr7_breakout_filter_exit.py","sha256":"23c336cc332b4b5705a706c5131fd99025d6d62020f1360351c629881c8ae81e"},{"path":"config.yaml","sha256":"1289885292936927e4c643821953f86cce068894d93f9b39f4612bd292f5a0a1"},{"path":"run.py","sha256":"acd81478e932a6200017375228096a897f815ed2ae7e3363447ee349b3552e36"}],"relative_path":"price_patterns/0039_nr7_breakout_filter_exit","sha256":"28de9410dbe0b66ccd742b2d2614bb7cf52ac6f4ca5e99b769c3820235af8a82"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0040_0195_support_and_resistance_trader","category":"price_patterns","dependencies":[],"entry_hash":"6611e6b63afb61058400daad1b768ec7bf732ba4b0dfc95e2d8afcf4fa8603b8","functional_test":{"relative_path":"price_patterns/test_0040_0195_support_and_resistance_trader.py","sha256":"7ad923609771f8d95bb59fd86c055e5c232c2c666e9ec5169adfc92a643a02ef"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0040_0195_support_and_resistance_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_support_and_resistance_trader.py","sha256":"15872819f81051f8b3aa76c169298239f55258f9bc44cd248ff9e4b1d8c7ab9c"},{"path":"config.yaml","sha256":"15ba2c6949262eeb8900f25a89931e9256d8266f2f535e56b20b964fe7262384"},{"path":"run.py","sha256":"43aa37f829e6f77d8b152efb7019c80b89b98698f90aa2076d0a795990ca8b2e"}],"relative_path":"price_patterns/0040_0195_support_and_resistance_trader","sha256":"dd34a0f6a9191e78356474f94fdae9814f0ce5535c577defec4e04eee0a4a822"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0041_0469_close_price_fractals","category":"price_patterns","dependencies":[],"entry_hash":"9ea26498668584ba4fb56b7427f2287db1239cfd2058a1b38d1bf797f9953d90","functional_test":{"relative_path":"price_patterns/test_0041_0469_close_price_fractals.py","sha256":"30ba790aab29f4418333016e0d04036a37dfa1745849c24f7225c529a5afd941"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0041_0469_close_price_fractals","source_available":false,"strategy_package":{"files":[{"path":"strategy_close_price_fractals.py","sha256":"1f23db7931135e7a2dcb4a85eb31e94481b626c7f2303ac6873017a7989cc499"},{"path":"config.yaml","sha256":"c8beda75cf59b1955ca50b97bd06587039c4ae1bae0a668205870ec8668ab94f"},{"path":"run.py","sha256":"62b65987d8bd1c1e09771ab05870f85a9338e0f63957112870282533433d0e40"}],"relative_path":"price_patterns/0041_0469_close_price_fractals","sha256":"386d07da09b3ea6112a34c6e657b93edd5e631d3977fc46fe345c63d7833cd16"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0042_0537_e_skoch_pending","category":"price_patterns","dependencies":[],"entry_hash":"4c8ae26ac64ab3c400bda87209625147b72c8adfc571f6a81b37485a7a1f769a","functional_test":{"relative_path":"price_patterns/test_0042_0537_e_skoch_pending.py","sha256":"b579926a87832442b1aa770c414727d7b73dcd3e8cf5397883e04790b7e3b939"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0042_0537_e_skoch_pending","source_available":false,"strategy_package":{"files":[{"path":"strategy_e_skoch_pending.py","sha256":"8d95690b86f67476e1eb36bf7d63972bf302d2d14016353069ff3afcad5fec80"},{"path":"config.yaml","sha256":"e981e75ad589553f9b964ef21762aeadfa3ab658c890b6bbddc83837d9c08ee1"},{"path":"run.py","sha256":"8e745216b0ae8eaa03c85225282982e8515ab5a956a7269b90f7d9a9eb77b550"}],"relative_path":"price_patterns/0042_0537_e_skoch_pending","sha256":"2c6109b26b8ef416fa7d3eec242cb518fa6340c67d9f6c1ebe10d2f8bfb55963"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0043_0597_fractals_minimum_distance","category":"price_patterns","dependencies":[],"entry_hash":"992679a44e52dddc470714480208b949e88073218f1ac7ab35429321b8653830","functional_test":{"relative_path":"price_patterns/test_0043_0597_fractals_minimum_distance.py","sha256":"936ca5a6ac1c97e7d1f7b5cc14f21868904d24663084131be46930de5ed6a273"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0043_0597_fractals_minimum_distance","source_available":false,"strategy_package":{"files":[{"path":"strategy_fractals_minimum_distance.py","sha256":"e32827a4dc083f6c2d8f375986adf3ad234e219a1123d79b552ad3f7129d4897"},{"path":"config.yaml","sha256":"be589ef6f4c3f8ffee54e7334c17664011edbad5b04fa3e94ff85313b44a1844"},{"path":"run.py","sha256":"ec135290bc86578fc4400bfb62fe3d64b9c8fc4d5ce73d96dc5a296bc2d3c254"}],"relative_path":"price_patterns/0043_0597_fractals_minimum_distance","sha256":"e515e635a93a18dc1daf83a7e293f72a5b09f82a14283adf5b3817715c5b05fa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"price_patterns/0044_0853_darvasboxes_system","category":"price_patterns","dependencies":[],"entry_hash":"e2a355d0210147c3390cc26a1203c360e7d74dd5df9a5fad61d3f5cd49726ea4","functional_test":{"relative_path":"price_patterns/test_0044_0853_darvasboxes_system.py","sha256":"a0c43ac25834ae80577b87105593dac6ffc32b02f077abc268bb5239a8a0ae27"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0044_0853_darvasboxes_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_darvasboxes_system.py","sha256":"759788b7d225e0f2c0055210aeedd056581484c1fbe7d5d0227351cc3578b38c"},{"path":"config.yaml","sha256":"fd078c1dd2d086fb80b1dba3afa272a1e0cd94fd3c1d3630e79eb4c391cebd09"},{"path":"run.py","sha256":"d6d7037b0c3417aa77e746033a9cbfdb7bdf68b6f0396994dd0cd3d785215c75"}],"relative_path":"price_patterns/0044_0853_darvasboxes_system","sha256":"e4a4298517e06f955de98cf5fbf2d27a8dc74cf24569417ef314a259ce1df420"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0001_probit_risk_modeling_gold","category":"risk_management","dependencies":[],"entry_hash":"f41c39c1b5243b520d620a242534bce1a51078831e487e473f8f483c4e4d0ff6","functional_test":{"relative_path":"risk_management/test_0001_probit_risk_modeling_gold.py","sha256":"eb27b3740ca3f9d665fbd6de27133a20e51f5e21411a33abb3451af03bbc1ef5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_probit_risk_modeling_gold","source_available":false,"strategy_package":{"files":[{"path":"strategy_probit_risk_modeling_gold.py","sha256":"636506b7c9c54a7f6a473bdd96135765a0d0b06cc0b282b43571036c1ed82893"},{"path":"config.yaml","sha256":"9748e83e871ad0b76e76e4115a7f642b871ea8f976e23d59d3df59d025be60de"},{"path":"run.py","sha256":"04937d3fbd7efdc279f36f6a085f91d7bc9a1c709aedfed2e1d1b09d942107e0"}],"relative_path":"risk_management/0001_probit_risk_modeling_gold","sha256":"797fdcf4742db7ab4da0d2e7ded59ac6a0a9b3791c09d9ef808fbd27630ec9a0"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0002_gold_multi_market_hedge","category":"risk_management","dependencies":[],"entry_hash":"2e4d00354c3c65289fe18095bc6350bfb833c24c28606d467986accbe638367d","functional_test":{"relative_path":"risk_management/test_0002_gold_multi_market_hedge.py","sha256":"542b4d2814bbf19642d940a9a3b502e0c1c031b698a6a483676283699c317660"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_multi_market_hedge","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_multi_market_hedge.py","sha256":"f969c29eac1cfbc6911a523571d8a69f751055e9de2825dc0b62a0978d35d8d4"},{"path":"config.yaml","sha256":"0c4ec7e46cb17a216fe219e97fa65dbc5f95b0cd3a0b091cc806fdd73b9069f7"},{"path":"run.py","sha256":"9317ebc457b1bfeff15269313914610a4f6e0596a9d20b9a45096eb955a80ba6"}],"relative_path":"risk_management/0002_gold_multi_market_hedge","sha256":"8d664ce937a3f5aaa1214cc6f9de261837be456056090172237175d8b04c6e66"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0003_tail_risk_ma_warning","category":"risk_management","dependencies":[],"entry_hash":"10ad44bde4c40d6b88403437f026524db8e6bc8033e4a6127350d0cae3cc98be","functional_test":{"relative_path":"risk_management/test_0003_tail_risk_ma_warning.py","sha256":"7509b24a77774c288bd948fb444336fb9b1033ef970ce736488c24a4852d9f9e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_tail_risk_ma_warning","source_available":false,"strategy_package":{"files":[{"path":"strategy_tail_risk_ma_warning.py","sha256":"aa0dca3bf04ec5ef2aeb3248d933471438bf3a8330af3d992c59fcc90c461c8f"},{"path":"config.yaml","sha256":"ad3b69c803bf537b7b0e4ccf5e277c56d11b82e898605946179b5e8838c651f3"},{"path":"run.py","sha256":"c273f7d24547d5235a80a49ca1f5fc7040dd888599ebd505e13bcba5bce2c480"}],"relative_path":"risk_management/0003_tail_risk_ma_warning","sha256":"046a32f0f698e504088e01a45a096edc2b48618778a40a8dd86f4f91af482ce4"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0004_drawdown_protection","category":"risk_management","dependencies":[],"entry_hash":"c08c4e759e39edfc4fff798adb0b5096dc3cd9ab4fcfc0b740408991e02bea3e","functional_test":{"relative_path":"risk_management/test_0004_drawdown_protection.py","sha256":"c6e210179c1d7ea06f9f326d8fd16064d44a84e6c69a589c3274a1fb417cb014"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_drawdown_protection","source_available":false,"strategy_package":{"files":[{"path":"strategy_drawdown_protection.py","sha256":"6718a1a4cdcc174efcf0a942ddc1e90c23cd92c1031d99cfb7cb9c09b00bfe8f"},{"path":"config.yaml","sha256":"ba0ab3c100b695166a7ba14947f4d2425180f83367eca79ba5967b69940c7a8e"},{"path":"run.py","sha256":"f1e00b29f59d03cc0cc67e7e021f8ad6152000fbe7f667d2f5a71f286392bac3"}],"relative_path":"risk_management/0004_drawdown_protection","sha256":"1a53aaa80000a2a510bec2e4b9cb463664386d4794d261b8196b4dd6ac0f9b62"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0005_bond_risk_premium","category":"risk_management","dependencies":[],"entry_hash":"19eb77b2fa7fcb499bb04d92ace214b3c7dc4ee4b7b026a3caa2c19e2215718e","functional_test":{"relative_path":"risk_management/test_0005_bond_risk_premium.py","sha256":"4f866f6b3ed87dec9def9d4a9ba815b1f7db459458aca58856265a6f97da2ca0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_bond_risk_premium","source_available":false,"strategy_package":{"files":[{"path":"strategy_bond_risk_premium.py","sha256":"c6ba5e5e84ac5a13926d6de4a3e2ac1411ea42f2fbee2945dedff035d05ba258"},{"path":"config.yaml","sha256":"9fe6fc9586ff02781d357eea51703b0ed357933eef423227fd6419e405911cd4"},{"path":"run.py","sha256":"ab9fee8417dca01d5fcadbf681535ac97a43ddda60fe2ba2ee9cc18f996611f0"}],"relative_path":"risk_management/0005_bond_risk_premium","sha256":"fec94825c33bfcf37f2b3b896484fbed0526c9e4f38dfc4054317da1c3c96b1c"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0006_managed_futures_hedge","category":"risk_management","dependencies":[],"entry_hash":"1e4c7c56b5ba70b79b5be3e04c6d4005b5f3bb64e19c7e12d76efe46d551b85b","functional_test":{"relative_path":"risk_management/test_0006_managed_futures_hedge.py","sha256":"e29a9e14f88feafaa785b8735214d72ed6ad71d76ac270011f74dfd933f07023"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_managed_futures_hedge","source_available":false,"strategy_package":{"files":[{"path":"strategy_managed_futures_hedge.py","sha256":"274b6a8ccd7776036f062e4e77d83f2113471706dfc68be054499009709427cc"},{"path":"config.yaml","sha256":"758f6ac2e6fcf68d93a4da5865d9d19ffd3e6e480c9e6ca0ee53fce965ea246e"},{"path":"run.py","sha256":"4634338796e307e86509e6e68d84e6f87749b8672ab17f2cedb2ce6396626b55"}],"relative_path":"risk_management/0006_managed_futures_hedge","sha256":"bdf884479a4c0e2327eb54d6db28566f74d4fad194915ab3752905d673810258"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0007_crisis_hedge","category":"risk_management","dependencies":[],"entry_hash":"d679af84cc604cdd7fdc647da982dff78da0492de171c0228245c2deb3b5b48e","functional_test":{"relative_path":"risk_management/test_0007_crisis_hedge.py","sha256":"5ad394ef645c05486038f48aba0561c11502afa0f26796f2ef4c92d90e59f023"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_crisis_hedge","source_available":false,"strategy_package":{"files":[{"path":"strategy_crisis_hedge.py","sha256":"9a1cc6bbe30228e525bcc58fe0ab4fcdbab9096ca693f1b8f62e0fdf8b9f096d"},{"path":"config.yaml","sha256":"5dd754e4465da80fcce792c8c00fc8d7ab68f703780759a34a7a663fd2978cbe"},{"path":"run.py","sha256":"488c05d95b29596f761aed7e45839f166acf9430d43bc8eb3236c6342d6a50cd"}],"relative_path":"risk_management/0007_crisis_hedge","sha256":"053f70ad1b22674ca5e6056b32657ae17484e4e827b7269deec04f93b08bae86"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0008_risk_on_risk_off","category":"risk_management","dependencies":[],"entry_hash":"f65acf43cc3951da83fbaaa4b6ab616fe3cc1a52982bde93a4bb25c3ed8cf6c6","functional_test":{"relative_path":"risk_management/test_0008_risk_on_risk_off.py","sha256":"2ad66355d1d75687f5a599ce36a488f87f76dce56d9fd1b6d1cc6c2cfe78b2d1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_risk_on_risk_off","source_available":false,"strategy_package":{"files":[{"path":"strategy_risk_on_risk_off.py","sha256":"c2d02c790976bf0b699992300b7b590ad30c9302132f51d9b55035a11a108a76"},{"path":"config.yaml","sha256":"8e9027c8915312e0fcf13a23bc0d3d641fea2a25370ffba215cc89e79e173ff5"},{"path":"run.py","sha256":"25d4542f84b8cb5c6e034150c4e6573fd020f8dded0a2fa3549bcb2b2bd394f2"}],"relative_path":"risk_management/0008_risk_on_risk_off","sha256":"91897dc0797dfbbcd2594db21de211f859904be201daad4964417792709f89ae"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0009_risk_premium_value","category":"risk_management","dependencies":[],"entry_hash":"68fbdd9d415d3a908926c01e675338f7c5958078f9f0a7214cff3246fb62418a","functional_test":{"relative_path":"risk_management/test_0009_risk_premium_value.py","sha256":"d67145668a22f0f96e60c90d95b6f6b66f930f196827b376793461547a7817bc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_risk_premium_value","source_available":false,"strategy_package":{"files":[{"path":"strategy_risk_premium_value.py","sha256":"fb55d9d313a61cd6921f40c5f44fbb911f73cddf3e59a8685ed75ca714b1fe03"},{"path":"config.yaml","sha256":"a192a941782a20bffcee20c6cf9eea2b3be010cff32a266b2ae24949843d7bd4"},{"path":"run.py","sha256":"c0b26e7439d361cd8b175aa14e8494ba3400d8964a144f42b9d376ce47812966"}],"relative_path":"risk_management/0009_risk_premium_value","sha256":"ba7d49cb8c7523cf6a80ff3850dc9e16ea0b9c7ae7e10f8a88d2ecf02cda1271"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0010_grid_trading_delta_hedge_strategy","category":"risk_management","dependencies":[],"entry_hash":"8fec90125b05c7e734f73312bfb8722d9309b712a031d09b6c817fca3ec162ac","functional_test":{"relative_path":"risk_management/test_0010_grid_trading_delta_hedge_strategy.py","sha256":"4883455c78cb487eae32eb7f08d1723e34914b9fd5700dbbde45716a45117bb1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_grid_trading_delta_hedge_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_grid_trading_delta_hedge.py","sha256":"314d8e5bee8b391ee409078d6a71042393581ab0e8fb150209ae2a3cab4edb42"},{"path":"config.yaml","sha256":"22dde0b332af28e349e4c40044784eba802020c407af8b3977b0edcf84cd763d"},{"path":"run.py","sha256":"34b71e7b9e5a7bbc8bde4076525128727ec1012ecae685bc83ea31250898127d"}],"relative_path":"risk_management/0010_grid_trading_delta_hedge_strategy","sha256":"e76a31e8293fc170f9404f79da99d84133f969936e20322d952bffb770c4c3ab"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0011_0040_moving_average_crossover","category":"risk_management","dependencies":[],"entry_hash":"fd57eb81cccc9c2973c5db7f9e2bdb9fe91ffdb6acc33bc481507428c2644bb2","functional_test":{"relative_path":"risk_management/test_0011_0040_moving_average_crossover.py","sha256":"eadaafa037a07029aa6b76691c9897d0e0bb2e459cab74086990a0648e15bb9b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_0040_moving_average_crossover","source_available":false,"strategy_package":{"files":[{"path":"strategy_moving_average_crossover.py","sha256":"7c4c858feb5f5b728e1094aa1f017c02da9764acd4754cfd0c78b1a0e7df2f19"},{"path":"config.yaml","sha256":"c4012b07c1072f4cdbcd7a3c75e7a0b9e36c7aade81940c7fdbbabc3aee95f0c"},{"path":"run.py","sha256":"c2348e51bedd9f42b9a478e5af81473b8433852a3110659115b1446a019ab272"}],"relative_path":"risk_management/0011_0040_moving_average_crossover","sha256":"3b2675638a5e3b654b0725b14554430f018dfdbaae0ae1b9c1a16337aee0df42"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0012_0150_smoothing_average","category":"risk_management","dependencies":[],"entry_hash":"b289c749728a2bb3d06c062cd463b0d4a8c554cbb75c6b944af86a6184db6155","functional_test":{"relative_path":"risk_management/test_0012_0150_smoothing_average.py","sha256":"14f1b48b5cce65ca384641e2d37c6532a254f77ab10477669957c42cf5a09249"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_0150_smoothing_average","source_available":false,"strategy_package":{"files":[{"path":"strategy_smoothing_average.py","sha256":"3fee49bc4aebb14fe246b06920e013c7d85cfb35403b470deddfe7d8a07c7ce8"},{"path":"config.yaml","sha256":"8f43a17b313c7da09c501ab83781fa9a059555f7f9de5983fec6557051463bb4"},{"path":"run.py","sha256":"40c21b85a8ed5f38568932dbe0425e582d872d349562f08e3e47c5549d4181e7"}],"relative_path":"risk_management/0012_0150_smoothing_average","sha256":"742bef73eeb29f65343065f895e9c2ddd599f1d02df0e963d5f0cbd663001f1c"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0013_0300_crossing_moving_average","category":"risk_management","dependencies":[],"entry_hash":"97bb87cdbe8659966030e6ffff308c3713d00676c367b9a353c48deb549bd755","functional_test":{"relative_path":"risk_management/test_0013_0300_crossing_moving_average.py","sha256":"0fec967245baa1e1133b2d93f8771a15417f9e8eda54d90cccd17b38af6702f2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0300_crossing_moving_average","source_available":false,"strategy_package":{"files":[{"path":"strategy_crossing_moving_average.py","sha256":"d39e6330fffcbb92b1df504a4be089c2fb31d31853b36481199c5799c6d4707e"},{"path":"config.yaml","sha256":"e4360d5b9593887d0aa43dd4e412b1baf496e1c4af109677e725a0cd86198e1d"},{"path":"run.py","sha256":"8be98d5a3ec73894661878d4c5e4b0c0974a2324fac493b4c007e13d4b19db01"}],"relative_path":"risk_management/0013_0300_crossing_moving_average","sha256":"b4ade0170e3dc34da572866b3be0b3e68bce6f58bc0e9f5bcfcb508441124ad5"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0014_0375_modified_moving_averages","category":"risk_management","dependencies":[],"entry_hash":"f9acfe0d0f5acd2b2b2a07598b94d596e451d760e6c2a971b9f2f7cb347b0dfa","functional_test":{"relative_path":"risk_management/test_0014_0375_modified_moving_averages.py","sha256":"0c91f348df87b35c065b0e409e52fea5b19260ec3b9e0f4919c399b202305aa4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0375_modified_moving_averages","source_available":false,"strategy_package":{"files":[{"path":"strategy_modified_moving_averages.py","sha256":"a70dd286323d635af5501e3c2c8fea95f9e8d19c11fc0a41cb7b5da845ba38a4"},{"path":"config.yaml","sha256":"00699d9e43ee163731853fb67b3871e8ff298f37344d833b3fa5960f415e72d0"},{"path":"run.py","sha256":"ebfc6c0703aebbdde4109774fb949c744ed92207716f85948665f088bf6dc9fc"}],"relative_path":"risk_management/0014_0375_modified_moving_averages","sha256":"b40f3a62e9fe0cf84324f96f0e6a970af9b135a17c7ffe64734521934f8cc763"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0015_0407_ea_moving_average","category":"risk_management","dependencies":[],"entry_hash":"0ce81c15802275287878f4f4440df350196493f3d908f737917a968711fddd10","functional_test":{"relative_path":"risk_management/test_0015_0407_ea_moving_average.py","sha256":"ad939b2ddf3d4b9763d04f32eeabd322e879dd99f4ea49f83f233e8b34a1afa9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_0407_ea_moving_average","source_available":false,"strategy_package":{"files":[{"path":"strategy_ea_moving_average.py","sha256":"8fec3ccb2d66a5afc3fb473b8c9e7e33a41f72117fc09b086b2479230d161cef"},{"path":"config.yaml","sha256":"7a7a2749b3e2ac3919d93057bb41b6a6c74de08a21c47829504dff7bd6bf30b5"},{"path":"run.py","sha256":"8e139de9ccf6b5ff5ae273215718a7d6d6e77750c221f8b8ed871cad208d95ed"}],"relative_path":"risk_management/0015_0407_ea_moving_average","sha256":"3d49ec98cc327cb72d41649bfac4780f250f2804cc634d3d8fec1f1f752bf5c1"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0016_0705_moving_average_trade_system","category":"risk_management","dependencies":[],"entry_hash":"6c46bee999155a265d1eff1df1e9cfc62a804052d75cf1f1bf5593da8b0d09f7","functional_test":{"relative_path":"risk_management/test_0016_0705_moving_average_trade_system.py","sha256":"96974007862ebb45ce7ff5f5e54de604b0566c44a47f51b8c0588164eee8530e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_0705_moving_average_trade_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_moving_average_trade_system.py","sha256":"91f0473e74182c77403053f7f641f3d79018e4bb74b5b83fd95c734c6130b2ed"},{"path":"config.yaml","sha256":"bff50bca03be17355621dfbf5b628cba1d9db3af6a5c642ef0d96a00ef38b2a2"},{"path":"run.py","sha256":"24508e24b0fa6728ffa8077cfb3bf2171f74179b2c5f488f3c607addeeb43883"}],"relative_path":"risk_management/0016_0705_moving_average_trade_system","sha256":"1421513d99cc16cb55085df24326488067bbcfb6cf358a9468cdbb1fbcb31a76"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0017_1120_moving_average","category":"risk_management","dependencies":[],"entry_hash":"11db148e04e3d1007a5143ee7b60ad5e8f3b8b5dec1e7c2ed20fdb0e90c8866e","functional_test":{"relative_path":"risk_management/test_0017_1120_moving_average.py","sha256":"9f8f01bc7209148a921467997a3fb7f40db0276bf5d8a79a66e9fb0a45b71c42"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_1120_moving_average","source_available":false,"strategy_package":{"files":[{"path":"strategy_moving_average.py","sha256":"c9f881424bdfa4e76a21f11985c281bad703d4423c0de6f1d8d22feab5eb7550"},{"path":"config.yaml","sha256":"3548552c9709eb84a63895b563708c6936003bc5a039e861303a3c142c65a2ea"},{"path":"run.py","sha256":"913fa11b09cb1f18e36c1f89a3eb20e6400228857f2632d9bb10f1fb5421cf79"}],"relative_path":"risk_management/0017_1120_moving_average","sha256":"a85d7907dcde42cdd02281bdb05da48eefc89f2ea3bb048fd3ff5daa53b134a3"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0018_1273_corrected_average","category":"risk_management","dependencies":[],"entry_hash":"9afcaba5e6c7657bba35c3e4722817aedd3cb0d06912a1ba07c6287262a0fe56","functional_test":{"relative_path":"risk_management/test_0018_1273_corrected_average.py","sha256":"75ffaa2bb376bf6e002fa5730710b3241f50c2baed13a00458ebeb2587e213b9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_1273_corrected_average","source_available":false,"strategy_package":{"files":[{"path":"strategy_corrected_average.py","sha256":"b078b430178d56df741e70eda002c71605832a743960111861697fd357c827cd"},{"path":"config.yaml","sha256":"ddc431f3c9252c711e093d8bc4cfef5e75531f2f5fa6089165d526bc5e4c31e7"},{"path":"run.py","sha256":"105c701ad62074ddfcb18b149956389810ed035a165054f6faed07a0a192a1a2"}],"relative_path":"risk_management/0018_1273_corrected_average","sha256":"539a7f871e5cbc713892f795e238aba780ceda02dcfbd11265455521ad6432f3"}} +{"archetypes":["order_risk"],"canonical_id":"risk_management/0019_1276_movingaverage_fn","category":"risk_management","dependencies":[],"entry_hash":"7a4bb44d90e7e6300c50a647eeaadee86827f5ee945f2067ff07b738e0b202aa","functional_test":{"relative_path":"risk_management/test_0019_1276_movingaverage_fn.py","sha256":"eff54d0886b5e007a303e572422daacfcccf7f687d707b1c5e98ed8d638a5234"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_1276_movingaverage_fn","source_available":false,"strategy_package":{"files":[{"path":"strategy_movingaverage_fn.py","sha256":"0a7c8fbbf7b3862184a5c8002e4bbb3e68548accfe53c529b429a47d8e9b3035"},{"path":"config.yaml","sha256":"69326d1557758a8a8df088086b9f708ca58fe12f8644aa9e7ccdcfcca21ad038"},{"path":"run.py","sha256":"aaa01ec718a97a855a4078cd0773e178b3d315a3191645871f36bee5a865d976"}],"relative_path":"risk_management/0019_1276_movingaverage_fn","sha256":"041608637dc007501186dc9c9199bce6feb7d02186d40bf5474ae15460d6c3d1"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0001_gold_asset_rotation","category":"rotation","dependencies":[],"entry_hash":"a917e5a4e7e706fddc367527aae3c8903166a1b8a0d07141802fa4bdbce6673a","functional_test":{"relative_path":"rotation/test_0001_gold_asset_rotation.py","sha256":"3ad2eb160fdc3366b0d0a42536760adca9edf77e4ece922cf8374838fd8d67f8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_gold_asset_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_asset_rotation.py","sha256":"8540d99b549b7174bf3c646b9b85137c81e2239020b57e5889b11619ef9b9501"},{"path":"config.yaml","sha256":"f015cac1cdc7160a9931a25ea573f5523ef37bfbafc493a89b4526aa004f180c"},{"path":"run.py","sha256":"1255ea90f57cffe2b6e08d253025c83790caa3fb0497b08765af9c17664f1211"}],"relative_path":"rotation/0001_gold_asset_rotation","sha256":"a14d69a891259254e98713f7cff71037f3d7ab350e358b0a3b6d57e678b16b1b"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0002_safe_haven_rotation","category":"rotation","dependencies":[],"entry_hash":"15c0f63ea4a6dc0e3e54610c7e7fa5d3e032c8fb4c90e372f6b5bc7688c1c28d","functional_test":{"relative_path":"rotation/test_0002_safe_haven_rotation.py","sha256":"3e005b3a7b8ebeb652670d36be5bf659de2b42daf9b7d088e7f28fadeee72e64"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_safe_haven_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_safe_haven_rotation.py","sha256":"ced7edebdf2bf73d10d4312128dc9f9d6e13def76d2a05890f0ea64b5877e9bc"},{"path":"config.yaml","sha256":"6a9e54efc4f05035b7963b4b93cd17497fa81c664405c856bcc982a10e81eda0"},{"path":"run.py","sha256":"e1ff1b5457e27f89b503bb7a048e9b34d16765e5bff86cf9d85e8999cf415c08"}],"relative_path":"rotation/0002_safe_haven_rotation","sha256":"fc07d6293a1e5f041adcf17882b7f0cc37eddb496b05c1226bee7f1a17915c32"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0003_timing_bond_rotation","category":"rotation","dependencies":[],"entry_hash":"913ad1bb9b3c444f9812ad9c68114d78eb0678444f547ffa605c9527d3cb2841","functional_test":{"relative_path":"rotation/test_0003_timing_bond_rotation.py","sha256":"bb2bcc28bfc3570f01845f3d064f395a8305c2b5a684d66ec0552c807e2dd370"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_timing_bond_rotation","source_available":false,"strategy_package":{"files":[{"path":"strategy_timing_bond_rotation.py","sha256":"794c3b3f062c13d39028d320066dd00708eaefde5d2e9af4ccc8cab318e10d13"},{"path":"config.yaml","sha256":"5d65e9d0f7e2e509dd2d74a8a2800b4d152f2fe0a486a308881fac0dd67cc15b"},{"path":"run.py","sha256":"0138081b8564e8f97289ece2b8a530196e65960ee441f230eb7506a0f074369d"}],"relative_path":"rotation/0003_timing_bond_rotation","sha256":"4c53211187af3a22de01e937189a49c60d56d2c417f5bcb77b1a1d1ac9da18e7"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0004_monthly_rotation_ranking","category":"rotation","dependencies":[],"entry_hash":"604247182afbfca48b989db2daf653117915a8527e35bdc044bdac06de264465","functional_test":{"relative_path":"rotation/test_0004_monthly_rotation_ranking.py","sha256":"9e96b4cad34584d3b5bbea69229a69516400bbba87a5a17888f988cb64d3264b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_monthly_rotation_ranking","source_available":false,"strategy_package":{"files":[{"path":"strategy_monthly_rotation_ranking.py","sha256":"9539b97e70cebd37737601cdb29fbd80b28e1d80898b803f543c09feec033117"},{"path":"config.yaml","sha256":"8b9deb711fb537fd4250d7a4a79f4bbcbadd1dcf1aed4d75161717cec00a6a7b"},{"path":"run.py","sha256":"595f274fdb3f527a64517426eff77ba413ffdb70ef71a291f294c51e0613159b"}],"relative_path":"rotation/0004_monthly_rotation_ranking","sha256":"bf6c5ebd9761bd0e27bb74fa545a7d570822eaa51a3667e9c52f7244091bdf07"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0005_three_factor_etf_rotation_strategy","category":"rotation","dependencies":[],"entry_hash":"a5169d6e25bfd329fa4476f0f267aa8097a6ad636d1c5808e968bf0530f352ab","functional_test":{"relative_path":"rotation/test_0005_three_factor_etf_rotation_strategy.py","sha256":"96342a3b13921186553e6afac8eec24a1b41c6624e40c0e3cdd8d9680ba7c5d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_three_factor_etf_rotation_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_three_factor_etf_rotation.py","sha256":"018b28c8e70cc3cfb6af8a335d1607932a86df3f86629d2c42ecf7a9c79379ab"},{"path":"config.yaml","sha256":"2c87f8860876b4fbd31ada1d11c1fe836919f8145bbae01a4ba5decb6c16149b"},{"path":"run.py","sha256":"7a91f9c2de8fcc821003b38188cc0cc899510854894d29f699467649defbcba9"}],"relative_path":"rotation/0005_three_factor_etf_rotation_strategy","sha256":"213d52986d56a21bdc60cae51f4821bab9976f0f549f590bf5cc6d4f40b14a86"}} +{"archetypes":["multi_asset_allocation"],"canonical_id":"rotation/0006_rotational_trading_strategy","category":"rotation","dependencies":[],"entry_hash":"40720b0980d60e1f23b0922d119b6defe7405a9870558d8bc71a088f186152f5","functional_test":{"relative_path":"rotation/test_0006_rotational_trading_strategy.py","sha256":"cc2beae2ee8989f48d9ceffbd8d736e8d4acfd068930be49c8d17ffa335a437d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_rotational_trading_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_rotational_trading.py","sha256":"4ac56fba5decc9ae40fd1616682dbade7e64f71c0140963b348f71b55542792e"},{"path":"config.yaml","sha256":"e2edd160e7fc1ff24b8f2aaeb2ac5a98d3343b382406c67a865b90f97dad8f71"},{"path":"run.py","sha256":"9b0a0b5f5f7eac9f6cf62bb6475658c35c5fa321c5deb5c8392190d80e68544c"}],"relative_path":"rotation/0006_rotational_trading_strategy","sha256":"e2042f1ed9b4771908f0611da25d340ebfa9fbff24f6c88a0d716ad53c586cf7"}} +{"archetypes":["precomputed_ml"],"canonical_id":"sentiment/22_fear_greed_strategy","category":"sentiment","dependencies":[],"entry_hash":"c873df07018f9d29db187a0e123261144156f75bdb5572f92c50e10b18f49cfd","functional_test":{"relative_path":"sentiment/test_22_fear_greed_strategy.py","sha256":"0b91bef1c6f3b6191896c4b84047a5aa41d42c36b7f2aa4f14d5c0631f4d558b"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"22_fear_greed_strategy","source_available":false,"strategy_package":null} +{"archetypes":["precomputed_ml"],"canonical_id":"sentiment/23_put_call_strategy","category":"sentiment","dependencies":[],"entry_hash":"8145576ccca95bf437f8f8ca05a602ab5bc07f98fa4754cf0cf9c4f21b9e7879","functional_test":{"relative_path":"sentiment/test_23_put_call_strategy.py","sha256":"cee6a34e6550c0918d171c47c3327eee6158ca9bb662cc73dc514a3b3b3cfe9f"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"23_put_call_strategy","source_available":false,"strategy_package":null} +{"archetypes":["precomputed_ml"],"canonical_id":"sentiment/24_vix_strategy","category":"sentiment","dependencies":[],"entry_hash":"8bc36dda7dff85d2921b5abdd0a40be0da8f5de59d04ca5d516a47d846c0dd35","functional_test":{"relative_path":"sentiment/test_24_vix_strategy.py","sha256":"ac4b071be93f62a6eee27379f41c5017f16ee5e890c0d7dc7718de4ab164294e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"24_vix_strategy","source_available":false,"strategy_package":null} +{"archetypes":["precomputed_ml"],"canonical_id":"sentiment/33_btc_sentiment_strategy","category":"sentiment","dependencies":[],"entry_hash":"397d282cfa4b14993c2023bb4ff84da56245f267441c1c6e527322fe2ee7a674","functional_test":{"relative_path":"sentiment/test_33_btc_sentiment_strategy.py","sha256":"160d82fc2a60748dccd2b2a0a635e8ed01c7eaf1a33db5081594127cd4980e8a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"33_btc_sentiment_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/01_premium_rate_strategy","category":"special","dependencies":[],"entry_hash":"8ad8080e0311d9a4fc3d773173ea59f932aa799321e9c20ab532cd55e80a74b7","functional_test":{"relative_path":"special/test_01_premium_rate_strategy.py","sha256":"07377d9b8a9573a0e4a0b72a065ce3d81da78a76b521a1e4f131510dddc91b0f"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"01_premium_rate_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/02_multi_extend_data","category":"special","dependencies":[],"entry_hash":"1a95c55af121869f2fb1550f7ee06d263b9b8a8a2d0cefc2394c74df3e80acbc","functional_test":{"relative_path":"special/test_02_multi_extend_data.py","sha256":"ac6c17fd297993048fb928b9faf8a944e33b80ccc6acf4b29dd9f3ff91ba3b55"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"02_multi_extend_data","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/04_simple_ma_multi_data","category":"special","dependencies":[],"entry_hash":"70f1b23f6ec98d9fe8cbd9f6e1fb8c85c5e60ad2b3fd9042ba406d0cd807d39f","functional_test":{"relative_path":"special/test_04_simple_ma_multi_data.py","sha256":"85b703fe9cbee683936fcfff19d4a2c7af5cc07dc9b485a84c3c80e20bbe7034"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"04_simple_ma_multi_data","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/13_fei_strategy","category":"special","dependencies":[],"entry_hash":"4359d9f56510b95a58066bbe300e7f7ba92293b8217b5ace5572d71c79c41d6a","functional_test":{"relative_path":"special/test_13_fei_strategy.py","sha256":"d0785217c66b884e650b182b06f2b83a1aa691b2b7f3253b0b57c29e5bf9589e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"13_fei_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/14_hanse123_strategy","category":"special","dependencies":[],"entry_hash":"74547943515cbf44bfcd30cf3ee3334efea5cf3ff922bb9dc83df05712d6bd3e","functional_test":{"relative_path":"special/test_14_hanse123_strategy.py","sha256":"e4a0101ecddf83c8cc7eeb15a306b9ab0fff6edab703b206f293b2e6ed39bf13"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"14_hanse123_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/18_etf_rotation_strategy","category":"special","dependencies":[],"entry_hash":"4f980efef12218cabb6e233fa98acdcb4d8c35778802182058174a698a8c0775","functional_test":{"relative_path":"special/test_18_etf_rotation_strategy.py","sha256":"42eefe18950240dd0e19081be4dd2a3255cf6c35e5b8fe4296a21058e5dfd171"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"18_etf_rotation_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator","multi_indicator_system","multi_asset_allocation","multi_timeframe","pairs_spread","order_risk","precomputed_ml"],"canonical_id":"special/20_arbitrage_strategy","category":"special","dependencies":[],"entry_hash":"389532f093ffd99ebf7fa9f70576c7d7d1895260ce45cc1788c71ad7ca04631c","functional_test":{"relative_path":"special/test_20_arbitrage_strategy.py","sha256":"6a9c79cb842f0434ef3f7d891756324e9c0d9d176b878f0e7a504951bb162db4"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":["multi_label_review"],"schema_version":"corpus-entry-v1","slug":"20_arbitrage_strategy","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/118_data_replay_bollinger","category":"time_based","dependencies":[],"entry_hash":"4874fa8905179a3a036b6a1e5fe2005fb399dbc56587012816af05e7b4f39d1e","functional_test":{"relative_path":"time_based/test_118_data_replay_bollinger.py","sha256":"962223e51a0854599b7f733c7a68848f50bf8f2fe099d8a84774ca8967790d09"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"118_data_replay_bollinger","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/119_data_replay_ema","category":"time_based","dependencies":[],"entry_hash":"38539f6ca26e5c3241b2079dc83bbb56f5de4f9f9c704634de27fe1489d02823","functional_test":{"relative_path":"time_based/test_119_data_replay_ema.py","sha256":"dad6552a8ddaaceef01309c4dcad4f586b24b2970a3c8c14caebcca5be359bae"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"119_data_replay_ema","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/120_data_replay_macd","category":"time_based","dependencies":[],"entry_hash":"0838661af09e5413e34f1596c78bde931a41e2198495cd334e1fd5a2c9132247","functional_test":{"relative_path":"time_based/test_120_data_replay_macd.py","sha256":"12232d43ac077b096fbb12298656c5ae1331f5331e3d95b4a21dd438943562c3"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"120_data_replay_macd","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/52_data_pandas","category":"time_based","dependencies":[],"entry_hash":"4632d69c533363ffbdfc09b30421995cac98ce39ffd57345812eaa31f732f522","functional_test":{"relative_path":"time_based/test_52_data_pandas.py","sha256":"06a45a7669c6389c9eb434d79228323367e2dc924bc4573592f5786beee75456"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"52_data_pandas","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/53_data_resample","category":"time_based","dependencies":[],"entry_hash":"0c0aff12ad8f6bcd486fcce123f932fd8d235d13816ae3bfa04281eb3a4f6f20","functional_test":{"relative_path":"time_based/test_53_data_resample.py","sha256":"c2027a6d862428c8961b354cd6f15844820035b9f4abb42e8e46fd6d14bc7478"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"53_data_resample","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/58_data_replay","category":"time_based","dependencies":[],"entry_hash":"d59415e19dd9ca7a36e8fe240ece1784558011c2a73af98eb82198e5d4efc36f","functional_test":{"relative_path":"time_based/test_58_data_replay.py","sha256":"f57bce0a3dfa98e06ce3be6ae8ba4512f83016ec7f65235176a0727fdce64d17"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"58_data_replay","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_based/62_timers","category":"time_based","dependencies":[],"entry_hash":"b327cabbb2f72a9825a9acd0a0af9f4ca9e4e5e1cb754e7de2d0b6723c331f06","functional_test":{"relative_path":"time_based/test_62_timers.py","sha256":"283a0c21162142cee9c29fd944924888556bcf11dbca6d466c7183ba6bd7f470"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"62_timers","source_available":false,"strategy_package":null} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0001_simple_pending_orders_time","category":"time_session_system","dependencies":[],"entry_hash":"8ac89def96a6e1a7e18a4736e932e2bd9e94a1ee7bf86dc493f2ec5cd78913d2","functional_test":{"relative_path":"time_session_system/test_0001_simple_pending_orders_time.py","sha256":"335743c2d5bb307e4f5feeebf0449bfbec8e41ca24c963aeb841d62e2a9cfc5c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_simple_pending_orders_time","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_pending_orders_time.py","sha256":"12e9ff7b0992c75c166bbdd53cbeed57d51308c22eabec68fe3f3b37d8406ef4"},{"path":"config.yaml","sha256":"57e8a9e71b681ff12f8910656b90c04ac6613ba3a2fac69fef53e327fced968a"},{"path":"run.py","sha256":"1486ed0a1326a6b512e8efaca57ce6a184893606d1e2f03a38bfe0d2a40cdc6f"}],"relative_path":"time_session_system/0001_simple_pending_orders_time","sha256":"749beb66a0801c92080f385f00d4833fd2ed4c283bf8c1c167057a300d5a3e09"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0002_night_flat_trade","category":"time_session_system","dependencies":[],"entry_hash":"ba2438ee727dff1990d4840361ad5ea84ac62d84e5e045e7a73d391b901b8adc","functional_test":{"relative_path":"time_session_system/test_0002_night_flat_trade.py","sha256":"d23edbe0923dc2688385e1924285f5d215f1edfa3587a9f885592538768d1302"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_night_flat_trade","source_available":false,"strategy_package":{"files":[{"path":"strategy_night_flat_trade.py","sha256":"d706a7aa1932c8fd25b09ffce360ccd095387046474642aa9166aab5f6c6b752"},{"path":"config.yaml","sha256":"17c73d5c731290dfd3ed9fe7f98c41335f788369b3431f9eadd9f74d816a4cf0"},{"path":"run.py","sha256":"029b5ec995c4acb178b2e430b6b273c46cc156d1193b566560d84a0173b20132"}],"relative_path":"time_session_system/0002_night_flat_trade","sha256":"6c44d88ff0551bed6f352eab8e4a9247461e76d756f270e3fa461acb8a516a60"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0003_opentime","category":"time_session_system","dependencies":[],"entry_hash":"8d885f87dd1b9dc2a58c8fc37740e7df089aff9cb402165edc4497dd43850e3a","functional_test":{"relative_path":"time_session_system/test_0003_opentime.py","sha256":"c1a57ccc1175356213a977de909fe79ebffdfae9a4ed246504a2a9bb0ac36c48"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_opentime","source_available":false,"strategy_package":{"files":[{"path":"strategy_opentime.py","sha256":"75966a29923f645d1a3a1f681a94247e86dfb729effc543bd70782fc3b0c085b"},{"path":"config.yaml","sha256":"76526dc77c6c8d03de693178842e9503d2be6dced3e4bfd3820f107d7b4dfc76"},{"path":"run.py","sha256":"081241ac00c55cf4c457fd7f49c4c4cc81dc82d0ac229e27437de5bb1b00df4b"}],"relative_path":"time_session_system/0003_opentime","sha256":"4a4032d31d99e4f01bdbeb319660894670cec0bc46f3eaba9cc20fe18cfc27bd"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0004_21hour","category":"time_session_system","dependencies":[],"entry_hash":"821433e114325cdedee4a051bd4fb6eb49538b9184a43e3830cfe68f7bc2d82b","functional_test":{"relative_path":"time_session_system/test_0004_21hour.py","sha256":"91efea76cd55a04bec9b798112cdd449a3137a4cfcefd4c1efcd1b2b6b34111f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_21hour","source_available":false,"strategy_package":{"files":[{"path":"strategy_21hour.py","sha256":"c5bfa589284f10764b94254d8f81d925c4be3d6327e19af45b94c466f82b951e"},{"path":"config.yaml","sha256":"a0f5e4e39aaa07cbbe7db2a7fdc2759e865e7c74f2c82616b4b457b18952f36c"},{"path":"run.py","sha256":"a4aad9f3e8059042d4f98183873ed7dea721314223f75db00175af77e1d6fd65"}],"relative_path":"time_session_system/0004_21hour","sha256":"7dd9b0e2f4016494beda566174551063155af7df8b7c912d0562e3c6a2b639c4"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0005_opening_closing_on_time_v2","category":"time_session_system","dependencies":[],"entry_hash":"bc2a0ea409f4314940111aec3c9e55e6d8f82ffd7ebbb3387fed5f7218f49cbe","functional_test":{"relative_path":"time_session_system/test_0005_opening_closing_on_time_v2.py","sha256":"9448c0cab36e16fdbf019443298290452266182e4d135b1feff019d2f3f94938"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_opening_closing_on_time_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_opening_closing_on_time_v2.py","sha256":"c2eb4624e3ff53479651d00584ed7b68ab8e32e00f685105a809ae8b17fc6175"},{"path":"config.yaml","sha256":"844d1411f03809895e57fdb9eb231b4d134913cafb6ad498cae8eeff8ab50516"},{"path":"run.py","sha256":"b27b23cdd6d3f75ceb429d1c7bcfb618a68de3fea4678fb825dc4897ef586d25"}],"relative_path":"time_session_system/0005_opening_closing_on_time_v2","sha256":"06a47180369e5faa594d29534b5c7d2d8a2c6271a4bfe75eee30fec576fbefa8"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0006_times_direction","category":"time_session_system","dependencies":[],"entry_hash":"684ebe8b75e8172cfd1c26988d60d0ce2ba3633c1c14a96c0bd5fcaa8dd37d9b","functional_test":{"relative_path":"time_session_system/test_0006_times_direction.py","sha256":"7d08d83d7057a2a38da61decbd27cd9b5eca1d1d2e49105f1988b3936d7014a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_times_direction","source_available":false,"strategy_package":{"files":[{"path":"strategy_times_direction.py","sha256":"4d8aa0e0260b641b918286d16fd99e01b611ab12b6d454b42d1456a626d06d18"},{"path":"config.yaml","sha256":"8d881768910b3fc18466cc178aafc91743cf60ad0f395ad11cdfd328dfbceb73"},{"path":"run.py","sha256":"f072d1983e99415c486637110ef914c9a83cb0b429a35564a2d705661ad7d526"}],"relative_path":"time_session_system/0006_times_direction","sha256":"e188621adb7647ce1ea2fe4bceed7474ee9fc122451688fb701a3f2a643297e5"}} +{"archetypes":["multi_timeframe"],"canonical_id":"time_session_system/0007_open_close_on_time","category":"time_session_system","dependencies":[],"entry_hash":"395a24337e4d0e52b0ddd794126e3fe5358978cf1d9c43bdb27bb604dae761f8","functional_test":{"relative_path":"time_session_system/test_0007_open_close_on_time.py","sha256":"c543be712790a05a8280033ab8e98014a360cff7da872ea726f5f4fd38e3abcb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_open_close_on_time","source_available":false,"strategy_package":{"files":[{"path":"strategy_open_close_on_time.py","sha256":"7ddd5f286727cf7460ceb244fb5502db761f689fe97b7d50af54ae447fbbc28c"},{"path":"config.yaml","sha256":"16f46369472d9c7aea7671f4409d5d1b4b7f1fb18bc356612550712997aafe86"},{"path":"run.py","sha256":"4d785dc524faf10151bdae9b46facbef44a2ffd52ce4cefd743d428830a3a115"}],"relative_path":"time_session_system/0007_open_close_on_time","sha256":"3a6bf7d7885a82b1c5cafea44a0992a43874dccf91fee3517a58b80d2c08bb31"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0001_sma_trend_following","category":"trend_following","dependencies":[],"entry_hash":"4b31acfbbde44e41986472e719873b242c7b25619012ebea4a84740ba6e0c43e","functional_test":{"relative_path":"trend_following/test_0001_sma_trend_following.py","sha256":"47893c65ea93f792da250fdf7f6400b7c1db303506f5fc128d4025109aa10680"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_sma_trend_following","source_available":false,"strategy_package":{"files":[{"path":"strategy_sma_trend_following.py","sha256":"e80f83b7db0f4e5c3f0547db0dee753417b7a3830047fabb2e6428dea3b5e16b"},{"path":"config.yaml","sha256":"70b25c1109f51b86a05a24ee95d2e1a07a437d604705790b84a06b63dce079c3"},{"path":"run.py","sha256":"757de5e3e0c4749fde7381e186c83a9b9386880cabe4644d2f53e3cc05345781"}],"relative_path":"trend_following/0001_sma_trend_following","sha256":"86434458244dbd28ba30ebe6ae6da181291df5ea4544e0644cd89bce7bd96972"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0002_gold_hmm_trend_following","category":"trend_following","dependencies":[],"entry_hash":"d65ea458e1915c94810dce06b829a98aa233984b993e0f7fc3155452d4f000e8","functional_test":{"relative_path":"trend_following/test_0002_gold_hmm_trend_following.py","sha256":"b69f63ef3bcd8e040e7bd31bd44f3c974cec473ac474f9866e43a1a2049e07ec"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_gold_hmm_trend_following","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_hmm_trend_following.py","sha256":"21345ebaf36fde8c81e3cdef0c21a50ac88184e082bf0b9ddf9601c3822217f0"},{"path":"config.yaml","sha256":"0b37a7845e054236e1e3d2c680c606e321f4a554487f5990254e190fdc82b214"},{"path":"run.py","sha256":"289317e0d53695f59273c73ecd54540ec4f850ca1aca7790c06eb47706e91bd0"}],"relative_path":"trend_following/0002_gold_hmm_trend_following","sha256":"862d032a1184c12eeed5e70b5204319b4edbd39d0338178c9dbd749556017600"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0003_risk_parity_trend","category":"trend_following","dependencies":[],"entry_hash":"de7f2b5ee7ccf8d6d78e87f4634ae1a1baa6f8b18f812203eab543837ff758be","functional_test":{"relative_path":"trend_following/test_0003_risk_parity_trend.py","sha256":"e5c7a0c2168613af4b31efd92a667c0ecf6a24bdffe822c60807c441de6f1fbb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_risk_parity_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_risk_parity_trend.py","sha256":"d7ad8629fc9147e3703ead14a141533e5e4716393cd966c62a3abe5666ad5255"},{"path":"config.yaml","sha256":"35aac93efa8f749638a6ae729ec76117130d107ab9c92a5e886f0891676ab5a5"},{"path":"run.py","sha256":"680fb03ab7f209908ed76471ebd37bc6aff339c5d1d8e6693744f4cedbec2ba2"}],"relative_path":"trend_following/0003_risk_parity_trend","sha256":"934a2ea43bf90ba288c579417ba9e67d56223b92ae687a8ea1353613b99c47c1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0004_decomposing_trend_equity","category":"trend_following","dependencies":[],"entry_hash":"055e88b9c02351b38366397580ac13a1aa59111dd7badc5b7823c99eb4adf7c1","functional_test":{"relative_path":"trend_following/test_0004_decomposing_trend_equity.py","sha256":"ad444534b2bf52e58d6a0cb4050ed4e7bd4d065aa82c1d210d28933ad355bd1a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_decomposing_trend_equity","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_equity_decomposition.py","sha256":"c27a663943a4e95969ec6d2708fd5eb9b4a4f539d338b1aede76183ec18c4769"},{"path":"config.yaml","sha256":"bb7f0d48f284cd83ac777d500ba0d0cb4d0c0995270cc464581ac3f3103f09d9"},{"path":"run.py","sha256":"b152d90bdcd48f703e0bed14b2d5dddfd14e4cc7fff461991aa7989533ecead6"}],"relative_path":"trend_following/0004_decomposing_trend_equity","sha256":"ce39f711d7d37eb4b6bd2a3719c339ed7f5584ad291665cf30298824fa42a9b3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0005_trend_equity_decomposition","category":"trend_following","dependencies":[],"entry_hash":"85fb149879c47d3a9d9fbde39b18ce8edfbaf1faaef4763db00095919be404cc","functional_test":{"relative_path":"trend_following/test_0005_trend_equity_decomposition.py","sha256":"bff4caff0c096d80d73a60986025d3fc63014ceb61390570140b7b3a4761ad4e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_trend_equity_decomposition","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_equity_decomposition.py","sha256":"c27a663943a4e95969ec6d2708fd5eb9b4a4f539d338b1aede76183ec18c4769"},{"path":"config.yaml","sha256":"2fe44d20881578d0de2d5cba8ac7af13463a9e65dd5ded40d232d5ec768c03f7"},{"path":"run.py","sha256":"b152d90bdcd48f703e0bed14b2d5dddfd14e4cc7fff461991aa7989533ecead6"}],"relative_path":"trend_following/0005_trend_equity_decomposition","sha256":"b94018fa211cbb2777bb0024b9867e388a1305b537a487fc3bdc1efc81c0f251"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0006_trend_equity_primer","category":"trend_following","dependencies":[],"entry_hash":"efbbf5a7000d2356d3613524d76e1558bc8f44d441bacc6f1bbf67e6a144b0cc","functional_test":{"relative_path":"trend_following/test_0006_trend_equity_primer.py","sha256":"f42425fab02eb7fd965032cb3cc74f3909b7bad69cf4c5612f4f753a913c8b47"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_trend_equity_primer","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_equity_primer.py","sha256":"46bad401d2075dbb11a5a7037ae955c4c34fa31602bf10bb537d21c4167bca86"},{"path":"config.yaml","sha256":"91847be8d2956962287c996716357b542be7ef5b86f0feb3a61dde2fc794cd43"},{"path":"run.py","sha256":"1904f2d431fa0a5fd1a129bdaf937c7e3a6a1ef34cf538a422ed5c33e608f986"}],"relative_path":"trend_following/0006_trend_equity_primer","sha256":"51f4592ae8a21fa223b2b3197ccfe6681d7e2ac61f3c02135c6ce26ca5d3cbf8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0007_trend_equity_strategy","category":"trend_following","dependencies":[],"entry_hash":"83ac5188d406088062e1328f6b7391dc0928dc21c0e09e941703a832403e427e","functional_test":{"relative_path":"trend_following/test_0007_trend_equity_strategy.py","sha256":"8cdf334b7a92be66fff63be42b21a19b3772ad9f0c415a870e1e1c4972349337"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_trend_equity_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_equity.py","sha256":"4a4a5262e871d87ccc8077fc0c95f44bcb203a2dff471964d57f9387320a1729"},{"path":"config.yaml","sha256":"47651e0c2022080974ba1192486a875d094dbf356e4775e58ed0865dd925519b"},{"path":"run.py","sha256":"008ddd6ebc3607f405365fc965afd32f3d67da0c5c69b87fb23836d6c41c6c45"}],"relative_path":"trend_following/0007_trend_equity_strategy","sha256":"b2fe21210676f96b8b486490fe635d8a53687da7e0a1ff1f7d245c161e71a4f8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0008_trend_following_macro_strategy","category":"trend_following","dependencies":[],"entry_hash":"479f5c8d9258b57a61d13eb496ac6e8d2baa597ae84e44b2531842e798969134","functional_test":{"relative_path":"trend_following/test_0008_trend_following_macro_strategy.py","sha256":"668f5ce339396679a89b3e945907b60dfaa4ea21fc93c951c130b506a96d0b25"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_trend_following_macro_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_following_macro.py","sha256":"7c6e824d448bd15e06c65b0ef53e76ed617affce0ddae6cb88e0eea9a0338cb8"},{"path":"config.yaml","sha256":"612700a25fd6c1c32207af94f5e39ed761e7cd3a27f6b92c29a1686834daa781"},{"path":"run.py","sha256":"c0a18a8bb1ecbac632c1f672c57def8277158db2812139d00d39db40d9486736"}],"relative_path":"trend_following/0008_trend_following_macro_strategy","sha256":"737cdc4b2b9863a4e1efab790f81f84afb94ea3b3e05c92cf25b72b3ddbdf901"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0009_crypto_trend_following_strategy","category":"trend_following","dependencies":[],"entry_hash":"69143665ed28fcbc8a9c3f38dbd5bfa3959b96ec751345614414bbe400169b05","functional_test":{"relative_path":"trend_following/test_0009_crypto_trend_following_strategy.py","sha256":"84ce4d51c81eab7643dbfaa71e97ee805a2f21497f9d7d1081121af8f36d5ef6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_crypto_trend_following_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_crypto_trend_following.py","sha256":"1f84bccde69ad2d917d8e68dd6974081bcbdefd8531553a9cebd4c9e2d8d3fc7"},{"path":"config.yaml","sha256":"2305b7b0e4edceabd7c2d6d05d652872bea526f19d2068fde55fd1d7966e9f6e"},{"path":"run.py","sha256":"4bb45c3f83dac2593526b45aa29d187f7d77497fc30be39cddc997b0ed2186c6"}],"relative_path":"trend_following/0009_crypto_trend_following_strategy","sha256":"99643a6e41a8aaf22bdfed76a7f260a0b08e11bf5e5f1fcd29c90015fb19eccc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0010_mean_reversion_trend_following_strategy","category":"trend_following","dependencies":[],"entry_hash":"155795717dc6b52c982be12a3cab07aa2e29a024df61db4e6a6ff8286839b329","functional_test":{"relative_path":"trend_following/test_0010_mean_reversion_trend_following_strategy.py","sha256":"39906c6d9714003d17747f8c195fedf5e5f4c38a48829a059466f46ea733d7f0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_mean_reversion_trend_following_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_mean_reversion_trend_following.py","sha256":"918b715b7266621db3b0a8e177b34e75810b8613092aa50b9fa16c616146b87a"},{"path":"config.yaml","sha256":"0af9edc446be8551761878f4aaea24604cbae9c536d2ac3169aab58b043e92f7"},{"path":"run.py","sha256":"86927119ca05938e43d3a9d0ade04be2a1971429a0f71f21ea1413981f89355c"}],"relative_path":"trend_following/0010_mean_reversion_trend_following_strategy","sha256":"3527183b69dce16620750b526628c983dd4ead35e69943253d6e0201eb8470b7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0011_fast_trend_following","category":"trend_following","dependencies":[],"entry_hash":"330fbe8018f6a1afa8dae79a91e998978a94ae8e8eb1e3e4cc82e2be11d0ce30","functional_test":{"relative_path":"trend_following/test_0011_fast_trend_following.py","sha256":"249f44164bfc19994c076fa302b4ad75d9060b4e3d9c1baef156682c474838fe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_fast_trend_following","source_available":false,"strategy_package":{"files":[{"path":"strategy_fast_trend.py","sha256":"a38be8ce5451aa4db5c90f675e4f0501091dc15be88833919f05e197420cc062"},{"path":"config.yaml","sha256":"feb50a9b3c8e7295f59a627ab56e64859470eb3928ccb90e5542313b2cdb7afd"},{"path":"run.py","sha256":"9a91526a662ea64b40d64f4535a970eff520bbff76dfa2708f240fba85648465"}],"relative_path":"trend_following/0011_fast_trend_following","sha256":"a8b6bfebb8c6740c6db879b93ed31244b6a59a34ea65bd9a352d764a5cd98375"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0012_trend_factor","category":"trend_following","dependencies":[],"entry_hash":"43cdf176932e1441eeadadf273046af1b2c2a2596c721cf56726d8e05591e6e8","functional_test":{"relative_path":"trend_following/test_0012_trend_factor.py","sha256":"c634cad915e4a6179b253143232194a2a873fb648e09de922e6560514b9f4c34"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_trend_factor","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_factor.py","sha256":"9fb72da0a46e206baeac5c6b4f7e01617a9fd97961bee7ec9547993cf2f8b3d5"},{"path":"config.yaml","sha256":"cc38d8f617c2b57c6b24062dbfa2fcd937df818d5f66f29fd3fd1d9bd446f8fb"},{"path":"run.py","sha256":"c1a7d57fafe3fbce68597666447683d9905c8ee0199e66a40a3781a3a3be8636"}],"relative_path":"trend_following/0012_trend_factor","sha256":"eb40887936e6932079ee4d123e996b43e91b0163df224967bcd6383883dad2c8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0013_0003_vr_breakdown_level","category":"trend_following","dependencies":[],"entry_hash":"f99cfb73d998dc22c3355507eab9bcfae00825424f6c8a10a86ef5635f9d92d2","functional_test":{"relative_path":"trend_following/test_0013_0003_vr_breakdown_level.py","sha256":"e66e59b44d0facebf281378936a32637882acbcdc12f8ee4b0e5151accbce433"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0003_vr_breakdown_level","source_available":false,"strategy_package":{"files":[{"path":"strategy_vr_breakdown_level.py","sha256":"8a1eedb256df743284b0ef856343933ad09737833ba413cbe781072fd979f649"},{"path":"config.yaml","sha256":"5e6afde7697d57d7920cf39d45f806cc07d138dc4ef13251f3a553185e558227"},{"path":"run.py","sha256":"d7ebfd34222bf3e7e34012d022bb48b6128fa5da8579a9558688a916f0ea157e"}],"relative_path":"trend_following/0013_0003_vr_breakdown_level","sha256":"f9910d92145028c87c06468645c016fed875fc6a552f32e66bd974c77116848a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0014_0022_yy_cross_2_ma","category":"trend_following","dependencies":[],"entry_hash":"d2b607289d9ed66e1410261c0221486f58b85f873cf62083167bebff7e435291","functional_test":{"relative_path":"trend_following/test_0014_0022_yy_cross_2_ma.py","sha256":"a852f96082f90169a1fa75f2eab61c0729a11256ee567e9494caf8bba3d34f76"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0022_yy_cross_2_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_yy_cross_2_ma.py","sha256":"9bf89fdb2c0c527c53c59521b5c1c6c187f512c0b536bd5c4bfc384edb3f56a6"},{"path":"config.yaml","sha256":"588ac2c2561479d9918d5a290b30c875dd8e2c78da1c5aadae1775c951b5487c"},{"path":"run.py","sha256":"9375a4adee911c6892af9f922258c34d5cbe4d22c4ed719c291a0d83a5921c4e"}],"relative_path":"trend_following/0014_0022_yy_cross_2_ma","sha256":"42c2d733ab85936bb28bf1e7a558d503b934c7a8dfc5aeb90f831961221407c1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0015_0029_simple_yet_effective_breakout_strategy","category":"trend_following","dependencies":[],"entry_hash":"95a0ab527f11a3f045341c4e4c229c1c29adad2920de4e2984270c2fe369fb26","functional_test":{"relative_path":"trend_following/test_0015_0029_simple_yet_effective_breakout_strategy.py","sha256":"9c5387fd7486adf1ff9004109ac5537f16ca18b9c48475b22a2f94896d2b4bc5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_0029_simple_yet_effective_breakout_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_breakout_strategy.py","sha256":"3f30d5158d3e2f5c8725c977c61abf1ca31dfdc0d1e34692d5ab3975e0aeab85"},{"path":"config.yaml","sha256":"bb43f45134ddd2d111ed4c7dddf1ee7a5badb2004656dac97227d6cda5caaaed"},{"path":"run.py","sha256":"cf7a8b25b911e1a4fd95405af64a7c0dee87fc32a646228d57555d711a5bb03f"}],"relative_path":"trend_following/0015_0029_simple_yet_effective_breakout_strategy","sha256":"c5013206ab6b518c8cba278ad43b245f658150d3005a30d10d556c9d8b4fe58c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0016_0036_breakout_strategy_with_prop_firm_helper_functions","category":"trend_following","dependencies":[],"entry_hash":"aaae52a101ce0e1f45b0f77052d5f1943b9fa9a614f3a2d95948fc1c7b4eaee9","functional_test":{"relative_path":"trend_following/test_0016_0036_breakout_strategy_with_prop_firm_helper_functions.py","sha256":"9453ec870a6d56984cfd253b56e0f95381c1e614f1aa962f56d3283a881611af"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_0036_breakout_strategy_with_prop_firm_helper_functions","source_available":false,"strategy_package":{"files":[{"path":"strategy_propfirm_breakout.py","sha256":"e9e31f076c370c15f0adaf0f6c275bf80d098e669720af4e0809e1aebc9b1e4e"},{"path":"config.yaml","sha256":"4c98931fed488d0047cf5f3dee7e9a988f6a114bf03c08a71bbfeafad6b3cc5c"},{"path":"run.py","sha256":"89c3ddba838c2d0ae614966273bb0b526a8d8d6eb049a2a7a5d917b1bc3b0651"}],"relative_path":"trend_following/0016_0036_breakout_strategy_with_prop_firm_helper_functions","sha256":"39db57c215a6408d81558983854d410c8049f36180c7f28a7c59beaffe2013bc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0017_0044_wpr_bb_atr","category":"trend_following","dependencies":[],"entry_hash":"57d985bc7985816da5ff9a97171500de78594b4cfbedd3681e8a262e10264558","functional_test":{"relative_path":"trend_following/test_0017_0044_wpr_bb_atr.py","sha256":"07a6412ed1e7994e332631eac2f31e8d49645a3830f220726cc9af55dc2094e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_0044_wpr_bb_atr","source_available":false,"strategy_package":{"files":[{"path":"strategy_wpr_bb_atr.py","sha256":"9fb61548bcc7c4e08aaf47c5e3fc7a99d88f07ddaa8fa7cd6ee6559e365705a6"},{"path":"config.yaml","sha256":"6f03e8a858040c1152e959a942f38c29ab308f29a365cc29137697d1cb81575a"},{"path":"run.py","sha256":"6d69206300a9bde031c9efd6c44def16416a9f0a3221049f1c5fede24a37f41f"}],"relative_path":"trend_following/0017_0044_wpr_bb_atr","sha256":"697774d6084b484f5aa9f4d31033a5fd537c77ba06de468fb651027561b57ec2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0018_0061_ema_rsi_risk_ea","category":"trend_following","dependencies":[],"entry_hash":"8c939b693a0f8423d379a1d637675e0085bd85a58bb9548402789360e06e79ff","functional_test":{"relative_path":"trend_following/test_0018_0061_ema_rsi_risk_ea.py","sha256":"d5bab283d1686777bc0a30c189bdea7b4d34db13d6167b9d421040fe0a3c95c8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_0061_ema_rsi_risk_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_rsi_risk_ea.py","sha256":"909e307a9d63bbf644f02052f3483a26541793840b94960d706f291ca7524727"},{"path":"config.yaml","sha256":"d3c3baee618e3168c06b6a2bde34d15f7c653ee785268fb7ce2ed202e95d8416"},{"path":"run.py","sha256":"93188bcc81e2ea27e4212d3745384b24c17a58450ebb6342b26ec4012182b7d2"}],"relative_path":"trend_following/0018_0061_ema_rsi_risk_ea","sha256":"7c68d714ef998080bbe5d5991a4a87246635756a2cf1d77c141b4b7e9b4c4815"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0019_0131_cidomo","category":"trend_following","dependencies":[],"entry_hash":"e4cd3d00ae041260ece57364541bf6685355bf7fc0c3538872b09a980ca93806","functional_test":{"relative_path":"trend_following/test_0019_0131_cidomo.py","sha256":"9a836ac2151daf59e0be026a8d2574d0a7e3e5e0c438b7d20d8bde860966a65f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_0131_cidomo","source_available":false,"strategy_package":{"files":[{"path":"strategy_cidomo.py","sha256":"bc452f856cfaa0fb9054e8124bee62a9e5f89fe442fecb738eedded7f0444dfa"},{"path":"config.yaml","sha256":"6272e5dedaa4eee11ed9698418e280de984c1dadee3e78445a07658d64706647"},{"path":"run.py","sha256":"652c5806bc9156384e6b3dfea72164bf98fdd3fbb24dde577a51b3847a7ff70f"}],"relative_path":"trend_following/0019_0131_cidomo","sha256":"7c052e40415615383fe0646d0d73b2f155350d62ea993968b844c6f092fa4637"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0020_0136_ema_lwma_rsi","category":"trend_following","dependencies":[],"entry_hash":"76c6ae75f8cf63275fe8bcbcb21b98ece04f56b8aec83956a233d8db2c9af83d","functional_test":{"relative_path":"trend_following/test_0020_0136_ema_lwma_rsi.py","sha256":"54fbc1b6375b9627c77756f58418ca581f85c7ad4220348813f272ea56650865"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_0136_ema_lwma_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_lwma_rsi.py","sha256":"74eaf054ed1efcd2fb3e94a8a44244669cbc029141eab68496b51037c991068f"},{"path":"config.yaml","sha256":"c37483959fe829721d096592730d83b20caaee76aaff340d3ee4e524b29840cc"},{"path":"run.py","sha256":"4f691662f424d4caed06f3fce0dffd11106a16b4a5c8f2ca084ad3fc9a27d30a"}],"relative_path":"trend_following/0020_0136_ema_lwma_rsi","sha256":"610edc399e4fc54a7865e957eb75c553b3fccd173e31be7e7f4eaa16708b051e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0021_0157_bago_ea","category":"trend_following","dependencies":[],"entry_hash":"94cefc0120629eb30fecb4664df06b4e686c6cde4e78251a6bd4baf3a34bcc18","functional_test":{"relative_path":"trend_following/test_0021_0157_bago_ea.py","sha256":"240387c62e431fa2003e17bbb21d41d04e1e5fcaf2f3c649c840f5b685b48629"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_0157_bago_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_bago_ea.py","sha256":"081c03b78113c61aaacc40b7e3eca0d1b5118d66d8991e5140029f69e9b29eb5"},{"path":"config.yaml","sha256":"a7f9b6f28bb55d5c034912aad3d754ba02d6bc01d413c526ff50478f82a3f401"},{"path":"run.py","sha256":"a92d7010274335fc9c48d107e7c509c5ad92b91a7889181529ee6ba500f3582d"}],"relative_path":"trend_following/0021_0157_bago_ea","sha256":"870b74d81e783ce8f78e57ff6f67f9a371ac4bc4578e3b315e320ff7d2d5a57b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0022_0173_rsi_expert_v2_0","category":"trend_following","dependencies":[],"entry_hash":"02e8fe50117d7904b4a7fad611f93d3f4846639d2a68dd4491c399ff11d7fe42","functional_test":{"relative_path":"trend_following/test_0022_0173_rsi_expert_v2_0.py","sha256":"9fb5e94d4f147987eb00270530252691188b3d6932c580882432d49f44bfa9a1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_0173_rsi_expert_v2_0","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_expert_v2_0.py","sha256":"6d8d10e70ef4fc9c19c2f72abdc7f56c1a5535b87e29bda2820bd165ffb2db6c"},{"path":"config.yaml","sha256":"d54c4398c102106f876a2224ad766d6dff843cad826801b41d10737983695876"},{"path":"run.py","sha256":"8cc23ebd27cd929a01e044e50dac3c73a78af7c3c2118883e987e6c7df4b4eee"}],"relative_path":"trend_following/0022_0173_rsi_expert_v2_0","sha256":"187356b3e5d5a8af4b474082157f1e7d1ab0c0edd77b65d016fea07cacffc976"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0023_0200_xfisher_org_v1","category":"trend_following","dependencies":[],"entry_hash":"f01adf4dbfd54ce574ef4c967243f1558995ec94d704f00b896e116e759950ee","functional_test":{"relative_path":"trend_following/test_0023_0200_xfisher_org_v1.py","sha256":"b4e8f36a78775395a0458532b8627f1abd4c3c055b4d79123264cf4821233f82"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_0200_xfisher_org_v1","source_available":false,"strategy_package":{"files":[{"path":"strategy_xfisher_org_v1.py","sha256":"4b28776d53f6cfbbeb82b8b5f0c56d93846be8efd0d37de8014e8598be3abf14"},{"path":"config.yaml","sha256":"373334e104d992b55321390decbec4b20fc65dbde1d33e8318c44f575f4dfd5c"},{"path":"run.py","sha256":"a7dd20bc573e4e4677acbb4dd2cc2e53bbf9bd0953c0bca5de431b5ac25d9c21"}],"relative_path":"trend_following/0023_0200_xfisher_org_v1","sha256":"a3c0fdd21181d0dd8a4823bb27fb1bf0ef5764048aa1317f8fd5db69ba5061fe"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0024_0247_flat_trend_ea","category":"trend_following","dependencies":[],"entry_hash":"08e8f133a8dbc163d9bb0655f17a0ef1b0706f13e7d6226cede01dfb2c44dd5f","functional_test":{"relative_path":"trend_following/test_0024_0247_flat_trend_ea.py","sha256":"3b8ae3d72431b2973d543308ab81a53caca92f607ce39cc670290423762c7b7e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_0247_flat_trend_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_flat_trend_ea.py","sha256":"024940cb6cd52970c65a7bcb7658103c56a36ff00180ea1487d611ee09d3a94b"},{"path":"config.yaml","sha256":"debd87cb3286046d1f4df01f6806349e64bfe5a51ff290991b4ac30d11a54509"},{"path":"run.py","sha256":"3c40d7f3d1ca139e767e38a18b32d6a75ead939475ea2bdd00c365a7b4a0036d"}],"relative_path":"trend_following/0024_0247_flat_trend_ea","sha256":"3596fca596049206a1cbb0f9ce9a4970b29ed22e5526b705de9f98e9fb390b46"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0025_0248_ssb5_123","category":"trend_following","dependencies":[],"entry_hash":"71e272e203a0d09ce27df4dbcfd34f0254b82172aef993250440e3d5a2626a24","functional_test":{"relative_path":"trend_following/test_0025_0248_ssb5_123.py","sha256":"aa57edbbf432fcb9ca13cef0d8689e1cff46b8a3ad0bea79ba64df7889a9a17b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_0248_ssb5_123","source_available":false,"strategy_package":{"files":[{"path":"strategy_ssb5_123.py","sha256":"7b1f9e87133722c2eec10ffa614f39aa8da6af7b7751a026f4f966e335cb5b4f"},{"path":"config.yaml","sha256":"0da3946bb6c85b027a95a17b1865fb6404bbf9c3cc869ce6a692fad699e830d9"},{"path":"run.py","sha256":"d44539ca6f827a9fc94843c751794d291912c39ebd3cfa14bdf5a2178afccff4"}],"relative_path":"trend_following/0025_0248_ssb5_123","sha256":"6c421d007bc94e6eceed4cb166f695aadf2e3e4130613f8c9de81866864c448e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0026_0252_ravi_ao","category":"trend_following","dependencies":[],"entry_hash":"5e72dd9fb452e45ef8c585b17982d4b40f008be5e1501c713749278bccb5431e","functional_test":{"relative_path":"trend_following/test_0026_0252_ravi_ao.py","sha256":"4638a2686a7786e883f749b8c8fb6a67d9bd788e23e7c497d796029dae28cb18"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_0252_ravi_ao","source_available":false,"strategy_package":{"files":[{"path":"strategy_ravi_ao.py","sha256":"df4491ec7916f3723f67359c18871daf4a83ce4402260b509597c4d8913c2dcb"},{"path":"config.yaml","sha256":"fa5adc1cb465dc0793931141a1c3d2db2c6276d7b5c5bee29d6d9751fae731d9"},{"path":"run.py","sha256":"50a66acced2c2c64f4313c97fde8e4845a1357ca75bedbf9fc30553114ae45a5"}],"relative_path":"trend_following/0026_0252_ravi_ao","sha256":"59f29ab8f57069521b96edd74729f49a82f497c3911fa1f04af5131ffb1c4580"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0027_0286_rsi_expert","category":"trend_following","dependencies":[],"entry_hash":"20ef552bf4b0271cfa952badfcd06b130f6c586548451bb58979d14945b6deeb","functional_test":{"relative_path":"trend_following/test_0027_0286_rsi_expert.py","sha256":"e57c7f172ae45e725c6a8a0b8ed7bc2809e264e420440d9f61fbe014a20ad55d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_0286_rsi_expert","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_expert.py","sha256":"c47a7151dded17d55508bfad91d7c6b792063e6cb811fbcf6a6df5eddc9f1ee0"},{"path":"config.yaml","sha256":"b351fc5f225ca810f55ce9bdfc5f204597cdca290c39d023a4abd4b72bf89710"},{"path":"run.py","sha256":"de27ccdad70747214c69d247145a46d2dae9c3b92203e7397a74c2c18bcb24db"}],"relative_path":"trend_following/0027_0286_rsi_expert","sha256":"022688cabb640872d8c03ef40174eee245e40aef04fcee2a0a89dfa606ed097a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0028_0303_3sma","category":"trend_following","dependencies":[],"entry_hash":"a1175dc98c9b4c1daeb1ecfacc1383bc73f0ddd66e228b419219440e204fc6b5","functional_test":{"relative_path":"trend_following/test_0028_0303_3sma.py","sha256":"dc073d90a3b94c1624cb481cf38d17cf5521f93096ba3c760ba235a4f4c3c069"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_0303_3sma","source_available":false,"strategy_package":{"files":[{"path":"strategy_3sma.py","sha256":"491e00c6d0199d7b63626865de7cecc2203b66288c330858a7d31c889f10dd6c"},{"path":"config.yaml","sha256":"036c403ecdc4aae180a6dc45f05bb7088ffc40efc1d68e10b59322dda28598ce"},{"path":"run.py","sha256":"f600071e907d181b5f180c517c87c0bc0b735462bb4f5688cfa2f68015e1d26a"}],"relative_path":"trend_following/0028_0303_3sma","sha256":"3fd832b56ee2d7880a33cb9c85698930a801e08b0220a5f3700f821df0ec9fa0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0029_0304_breakdown","category":"trend_following","dependencies":[],"entry_hash":"51ceebd7d34dad08f1e036a35308627e0834d91eca9492224ac51ba86dd08360","functional_test":{"relative_path":"trend_following/test_0029_0304_breakdown.py","sha256":"7dcb55aa46e9c047972a666a11a18993962c8c5cacec99fa663166f4347a8072"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_0304_breakdown","source_available":false,"strategy_package":{"files":[{"path":"strategy_breakdown.py","sha256":"bd3d06a4f87c3bb9c040b87083860fccadaa73ce9d2d54a883949f3d9268e776"},{"path":"config.yaml","sha256":"3b6563bb1fe64f66bb44366ab6cb55989a12197ddfad3d25e8adf1d9c4c7f2a3"},{"path":"run.py","sha256":"14eaf6e516f8d269528eb9caf74609ca21d6eb2c1baf27cb9b9b2992c7aa8b8c"}],"relative_path":"trend_following/0029_0304_breakdown","sha256":"74c47a1be8662fe4503f6c7585b0a7a8d41b55e61f4894e53265b2ee3877fca3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0030_0317_dematus","category":"trend_following","dependencies":[],"entry_hash":"2133842772a04a62f656d2a785d36d731741b7386e3e06e8df08d641cc8eb0bb","functional_test":{"relative_path":"trend_following/test_0030_0317_dematus.py","sha256":"9965187830d3516c86c216e3858acaec115423f661c73959b177d86b5c9b2bb8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0030_0317_dematus","source_available":false,"strategy_package":{"files":[{"path":"strategy_dematus.py","sha256":"2f6a461745938442668d123dbd5a47fc8e1d9e771df0976dff0341584e26819f"},{"path":"config.yaml","sha256":"be43af9fc17688265b925281adc23a16a4cd2168f0cedf2aada14ab98e3f1dfc"},{"path":"run.py","sha256":"c50fac90f5f9c455c9f3c994766ad9a7fd743c1fdb57932f37aa7ddb1dfaa84e"}],"relative_path":"trend_following/0030_0317_dematus","sha256":"a26b4312aba751bc7ff923b269ca71fe54308c43ba20e19d0f4216d42e3fcc7b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0031_0318_sidus","category":"trend_following","dependencies":[],"entry_hash":"a157092a8b47d33ac90968382e3c200e1c9772fe359af6f9352c5fd9d0f5e0e4","functional_test":{"relative_path":"trend_following/test_0031_0318_sidus.py","sha256":"86f908e4d57c4ddec4e62f9bfda5e9f09e44725501db0a6c500c11e91c3cc3b0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0031_0318_sidus","source_available":false,"strategy_package":{"files":[{"path":"strategy_sidus.py","sha256":"1ee77148452925cbb4d8c8b3f5e9a12c8d905bc637bbaca86907fce130a370af"},{"path":"config.yaml","sha256":"fa716ad8d101db277ea8b535fc074bdb409688b7796c9def1b87a449f1669f19"},{"path":"run.py","sha256":"459c39fa0048e3f1a6c0b5d9214c41012cdb08886460391fbc3ec9d9b1e6826f"}],"relative_path":"trend_following/0031_0318_sidus","sha256":"905eb7ee46ddfc991df49242ca4028047b3cd9be67282878057bb1c4fb102ff0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0032_0363_two_ma_bunny_cross_expert","category":"trend_following","dependencies":[],"entry_hash":"4d0ba471657045d39a30e28f295452a03d6924c0a7a29e6ceb493f9909f1d0e7","functional_test":{"relative_path":"trend_following/test_0032_0363_two_ma_bunny_cross_expert.py","sha256":"faad6d316bbf040725af970d965a4de27e83387a47ae3cb9c4d1f62234ed2932"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0032_0363_two_ma_bunny_cross_expert","source_available":false,"strategy_package":{"files":[{"path":"strategy_two_ma_bunny_cross_expert.py","sha256":"e8455ab67cb654f96a3e3b20e46bec3df7ec6f88f79a8533f0ef7878fb0d8631"},{"path":"config.yaml","sha256":"22ac457015602f428951d066cda9f0c9cc06ef59ee9efe06c3ec58e989354b85"},{"path":"run.py","sha256":"056ab3539376d4a351085936428bde6458ba23d8a0677a959f680769d592571b"}],"relative_path":"trend_following/0032_0363_two_ma_bunny_cross_expert","sha256":"cb17970587f1fab52f1a428df2b9bcaf9df333b30769b5c839e2675214722ad8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0033_0408_universal_macross_ea","category":"trend_following","dependencies":[],"entry_hash":"e6ae0527bdf2896f60e59e255ba29f5c2024ecaf4bb3d448e0b0bb2eb3ac0ef3","functional_test":{"relative_path":"trend_following/test_0033_0408_universal_macross_ea.py","sha256":"ed232f23c657f901f120735c05358a6fcf1e36dd5a683243448b2b411a74d509"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0033_0408_universal_macross_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_universal_macross_ea.py","sha256":"438d1d448cf71b0ab642937af5c1df8bd942c381d5c7714cccf23f687416deab"},{"path":"config.yaml","sha256":"c774f812f177bb0773e14044326da49f8205195a17c9e5f2e46c00dc8ef8ab09"},{"path":"run.py","sha256":"b816259f4dde68c587288e70c724aeef4c1973ab628e68da6f1296c0c9477ce2"}],"relative_path":"trend_following/0033_0408_universal_macross_ea","sha256":"d08077ad4478a5d7152dc23507ffeac5b0f332bc71c982b55677a9b2e7f6fff5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0034_0424_ema_wma_v2","category":"trend_following","dependencies":[],"entry_hash":"d79ce42b8d52cb24657a04717a24460d845bfdf55d0fbdce13c8324c7280e3c6","functional_test":{"relative_path":"trend_following/test_0034_0424_ema_wma_v2.py","sha256":"29a4f6f31f0ff152fa493759955449557d5b6a3ad59a1ae228c9566e8cb29b0e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0034_0424_ema_wma_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_wma_v2.py","sha256":"1a8e047555f6a8159861d16e733809e563111aba96f134fe174f7d9888f9294f"},{"path":"config.yaml","sha256":"329bd78881e2ac50c618e848940be643f4fb5c84e36c9616a8f71fbe92885654"},{"path":"run.py","sha256":"cbcd922ae8a88a648e6f468b80dd265e5c8b4fc4b6d42d93c8a0b8faca692508"}],"relative_path":"trend_following/0034_0424_ema_wma_v2","sha256":"63f12301c7935d4b9fdfc3f51e0e9a535a40625b5f69de50293378a41fff40df"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0035_0445_ichimoku","category":"trend_following","dependencies":[],"entry_hash":"48d4beb469d55d3239b8e9e6dd4f342e04a9002626ca6d33dd8a06ac6e44bbce","functional_test":{"relative_path":"trend_following/test_0035_0445_ichimoku.py","sha256":"e49ec64c9b62cbdb853ec4cbcf01b77662faed85b7a199193ff85904dc91580b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0035_0445_ichimoku","source_available":false,"strategy_package":{"files":[{"path":"strategy_ichimoku.py","sha256":"4661b508893995b7f4b2f32ccc25d1723d9f57388c538f7514028bf5af42bea6"},{"path":"config.yaml","sha256":"d88104913eb729a2922a9747792e6d9391f7c30e2a970e4a92ddfcceae4becbb"},{"path":"run.py","sha256":"baeb9c75b98dda2d716636cd186471da06eb9328352871b597938c107c5d0766"}],"relative_path":"trend_following/0035_0445_ichimoku","sha256":"a15868b4ab3f9242c1959d2384d409cde0e9818de8e4fd75d095c31ac7ce3fac"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0036_0451_macd_ea","category":"trend_following","dependencies":[],"entry_hash":"5594cdd2547d564e563e83d64b31a5802ac8c331e1612ed4978b9c29f1906f4c","functional_test":{"relative_path":"trend_following/test_0036_0451_macd_ea.py","sha256":"fb9525df6b2e7d43c42e6210e74ec6beff8fa96fff90b381b2daeddcd32c6435"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0036_0451_macd_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_ea.py","sha256":"728538ae69cb07d1d7492c8b1465daedd05781b601c787f1abf4919dd41c36bd"},{"path":"config.yaml","sha256":"38a40fb3e389959f065fba9b0de03d3be0b7a584f00f9212da67f20d8fa66977"},{"path":"run.py","sha256":"74a1df0dd52eb22d7a3b75358f9dabca5b7963264177525329340b6c6dc35337"}],"relative_path":"trend_following/0036_0451_macd_ea","sha256":"6b61c9608d1c3ab16b6fad590fec917cb5eae150931367e0654a261ecc2e80b0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0037_0456_channels","category":"trend_following","dependencies":[],"entry_hash":"9982ab94e6223be78e51975d4d8a95b2bb077341a3fd0d1fe76c173c576e8868","functional_test":{"relative_path":"trend_following/test_0037_0456_channels.py","sha256":"52561911d806e38d7454a8d4ef03ba61f4eb97f0d45c52f5c088f471abb894f3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0037_0456_channels","source_available":false,"strategy_package":{"files":[{"path":"strategy_channels.py","sha256":"d7c30f36e199853c1b18f0eab386b641b77c74fa6387da973d95a4e24ee9773e"},{"path":"config.yaml","sha256":"3b8310553b7ed7673d2979c0b32eba8bf0f5e8d0341bebb4b659a675c8660f38"},{"path":"run.py","sha256":"ef9c467b5ae4961361b8f9b2a73aab4e2bd8351bae825ef574f7044b7f868870"}],"relative_path":"trend_following/0037_0456_channels","sha256":"610142824b41511ab643b893901f5ef92ea17ecbd646606ab554842206f78e0f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0038_0459_trend_me_leave_me","category":"trend_following","dependencies":[],"entry_hash":"d87dbe73920ce29604a95db098bafed50f3965ff74b6fad1f7ce1ed06abe4ecc","functional_test":{"relative_path":"trend_following/test_0038_0459_trend_me_leave_me.py","sha256":"ddfa32f2cf93e411f4517c909a9bf85e846ba5cd22b769336c517e60515625b4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0038_0459_trend_me_leave_me","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_me_leave_me.py","sha256":"869ce037ef28d85aefb1b00c53d731f97df97dc9172b1a94830961818700d96c"},{"path":"config.yaml","sha256":"22c89f7d0766bf74d91ab0d9b8cd58169470cec53f6c5069227bd874a61e6a7f"},{"path":"run.py","sha256":"cbdcfad5b0a3940dca23cc8a8dd5ac83bf158ce10e6e683a8ebaf10d27d7ab4d"}],"relative_path":"trend_following/0038_0459_trend_me_leave_me","sha256":"2f90225339d4b91b022f36d8cb19ac4dfd3f90f05151cbbf8009f3b2290f0e36"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0039_0465_time_ea","category":"trend_following","dependencies":[],"entry_hash":"d5f3b1152a530c168ec7655780f7ad1165d97f4331e215806c67a8954fa96244","functional_test":{"relative_path":"trend_following/test_0039_0465_time_ea.py","sha256":"6f38728b58d61036ad53ac7d4272c49a443174c02d42911893e8eeddc96db7cc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0039_0465_time_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_time_ea.py","sha256":"c59945f94ec338dc1b40d621e7a577be8dfb2e4e5118f5976fcd65fa4032d848"},{"path":"config.yaml","sha256":"2621b57c54edfefdbab280fcd64f28012930b994e8b7a9acfbeba280992110ff"},{"path":"run.py","sha256":"b6dadcb24f6f5cef1f5178557ada5080f7cfeea55213d73532f8aed5e33e3bd0"}],"relative_path":"trend_following/0039_0465_time_ea","sha256":"1acec6506915fb9007a5a050168b70360b026bc298d74a1a2a212c88dcd3abb9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0040_0467_percentage_crossover_channel","category":"trend_following","dependencies":[],"entry_hash":"653983de96a39536654576d2fe61fd81c36f7a1dac50f101c977525ccf6dd1a1","functional_test":{"relative_path":"trend_following/test_0040_0467_percentage_crossover_channel.py","sha256":"d347e09fe6bc16a3a94197517491187f7ee5177e42683f19cfb82ec942d5fcd6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0040_0467_percentage_crossover_channel","source_available":false,"strategy_package":{"files":[{"path":"strategy_percentage_crossover_channel.py","sha256":"a8c02f3eb000ca19cf298d44da227213c9d6779cef784c11d907b30cb017364e"},{"path":"config.yaml","sha256":"672178a745a7fccef6ddc464f6230225c1eadcc4f497157cf8486d1abec266bf"},{"path":"run.py","sha256":"6c3f984ee70c5a92aa501de055f519bcd55c5dcf3e5d945d8ad2b2b8fcf58513"}],"relative_path":"trend_following/0040_0467_percentage_crossover_channel","sha256":"761885a0b1f26ad366cd37a740e944f9dc4f358b1f3918939a7ea8b065bb9b91"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0041_0500_ema_6_12","category":"trend_following","dependencies":[],"entry_hash":"a0c4fc49605e77491d3df0c7bffac7932a428bbf3f5040563dab1b0f34c9d44a","functional_test":{"relative_path":"trend_following/test_0041_0500_ema_6_12.py","sha256":"625e3ad0ebb947eb0b8fcc82d58d30ceaff8befdd740e4f921344c9dad154407"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0041_0500_ema_6_12","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_6_12.py","sha256":"ed4db354201f28b40691d1cca6acf920470cc7e0909b9c8f460fd68dbba7f3b7"},{"path":"config.yaml","sha256":"38e62720f14423ed250977465e21dd398d66934ba733d7be800cbc4595224e83"},{"path":"run.py","sha256":"ca8e2ec4569651f9e9e3de180ea13bcc544c082d7e3f638127cdb93dc1eb2660"}],"relative_path":"trend_following/0041_0500_ema_6_12","sha256":"8035935f2cd31889a408a0220c6cb52d2d1927d2cca2b78487dd49804b1c3e33"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0042_0541_flat_channel","category":"trend_following","dependencies":[],"entry_hash":"b443ebe6e32e18b67b08762b8d8a9a74f12d39fdfd24e85f5eccb10d150c5293","functional_test":{"relative_path":"trend_following/test_0042_0541_flat_channel.py","sha256":"8992a5daf4603636037e4e707bc10830a3b1c19082d55fb214c2a12dbc752e87"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0042_0541_flat_channel","source_available":false,"strategy_package":{"files":[{"path":"strategy_flat_channel.py","sha256":"44d4470dc11cfc6668c92c33cad844621d8d37ff9387b7c118c0fec45559ed31"},{"path":"config.yaml","sha256":"761df4331fda3726f1a48904d7850a4d25f280328b25e4453567611249629854"},{"path":"run.py","sha256":"852eb21f2950441862ccf98b05962bf1995ac7611ce498fca14152194d692aae"}],"relative_path":"trend_following/0042_0541_flat_channel","sha256":"37edf47733d4b26a74533b75f86721872424c979c1382d47e1a02e8aebd3476d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0043_0560_trade_in_channel","category":"trend_following","dependencies":[],"entry_hash":"673d99f796e6b6e3da970b0c3242c4bee8fa91210bf6e3eecea967312b0a9ea7","functional_test":{"relative_path":"trend_following/test_0043_0560_trade_in_channel.py","sha256":"3ebcf8282b2a3dcbe69b509c8f5e6811449fca985eeab02284a1adf03e31cb66"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0043_0560_trade_in_channel","source_available":false,"strategy_package":{"files":[{"path":"strategy_trade_in_channel.py","sha256":"48b44feadc08e984f24dd21dad7987a8d8cda54a07c6091a4a6c718bc8a3c97b"},{"path":"config.yaml","sha256":"181592977954ed270c231681b9edeb2b30088f207695f6c6e99929263d2c1412"},{"path":"run.py","sha256":"e506a99fcd59288d68980571a39ee456150ef9b3ec2b58d41489f3e03c429028"}],"relative_path":"trend_following/0043_0560_trade_in_channel","sha256":"6d6250b1a31499550f487c6446b1a3aa7aeb46e6ae27861546dfe18c365eddb9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0044_0575_eurusd_breakout","category":"trend_following","dependencies":[],"entry_hash":"9fad1c1b6f69b041ddf643d0afa9ab754dbba426c72bcc227b9231ad195aeeda","functional_test":{"relative_path":"trend_following/test_0044_0575_eurusd_breakout.py","sha256":"a9446c3722a557abc8954ac7828e9b5fe1beed8362e4dc160c1a12c5c7d5c0a9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0044_0575_eurusd_breakout","source_available":false,"strategy_package":{"files":[{"path":"strategy_eurusd_breakout.py","sha256":"ba7bb5c7ccc2272f0979c8e1e0488d275e1af96f88547eb4b6e40b234dd6547d"},{"path":"config.yaml","sha256":"e9de79368cd724c37fb0cd63b4eab44a762bd427925ebadebcf256a47638b88c"},{"path":"run.py","sha256":"75f28362679ab6fdb3946cbeec04b8680b8a51ecf80f9271e7f060e3313e0e50"}],"relative_path":"trend_following/0044_0575_eurusd_breakout","sha256":"d75ec609f03e98b58ed79eb3fd879b1b324f75f3898c1ac4832f2ae1632d508d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0045_0578_rabbitm2","category":"trend_following","dependencies":[],"entry_hash":"a5ac458715e65df81dbea84b915f7b086937f77fc13296daa811da1822cac5a8","functional_test":{"relative_path":"trend_following/test_0045_0578_rabbitm2.py","sha256":"965bac3dd98b0dcc75c3779c9d18e0d8541d8003f529e40965df229c5e769720"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0045_0578_rabbitm2","source_available":false,"strategy_package":{"files":[{"path":"strategy_rabbitm2.py","sha256":"72caae109a5a24e12a9104463604be24723bd0db3f29d30345d5308991dab0be"},{"path":"config.yaml","sha256":"671e994aacedb4e58314de951671217c3b3da42db700a463dfa4ab8743c53822"},{"path":"run.py","sha256":"0f06294dd1098a1557fa0193e0e2244f22e7ef54a8b1e80920e001ed3c6e1954"}],"relative_path":"trend_following/0045_0578_rabbitm2","sha256":"170a5be7e41a617d01c7e652617dfb5c81a0c89ea43f9dbe7206cff6adc8aeb5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0046_0579_nevalyashka_breakdown_level","category":"trend_following","dependencies":[],"entry_hash":"334a5f16e22b3d66cb71a3170a5ef3eb178d5c204c421f587c6a624ce0f6cb36","functional_test":{"relative_path":"trend_following/test_0046_0579_nevalyashka_breakdown_level.py","sha256":"51cfa409eccb1299d4f74ffa3a3c9005025a6a80006bbf639eab97765056f6ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0046_0579_nevalyashka_breakdown_level","source_available":false,"strategy_package":{"files":[{"path":"strategy_nevalyashka_breakdown_level.py","sha256":"75df6f41793472fc437826092842984b65fda5d9ca51db24f66b8c5cff6a0194"},{"path":"config.yaml","sha256":"272cfd6318ab1439d088a0f9a31c2042ef083fa79fa2904e9220b18b26a1eee8"},{"path":"run.py","sha256":"5cb126b0bbbc8989b86c12c3a4fdddfd24b51e923caed4cd88afa1ab17bac4a0"}],"relative_path":"trend_following/0046_0579_nevalyashka_breakdown_level","sha256":"9d73975890c34378a51f3e100bded58b7faf0f53ad989ae6a18b83d3664843cc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0047_0592_two_ima_cross","category":"trend_following","dependencies":[],"entry_hash":"1779f2557144279a98500d89b694c467ad905aafae9c4059d9f9b27f5bb931ba","functional_test":{"relative_path":"trend_following/test_0047_0592_two_ima_cross.py","sha256":"3a8b73d6ee3cb78b6c8488a0f6d69bc5dcbfb6c02cf6dd882b0a5c767b96966f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0047_0592_two_ima_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_two_ima_cross.py","sha256":"c73083c930149eef58c42e7287f11925ea6936a92e00a617fdfc7f57bb5886a2"},{"path":"config.yaml","sha256":"27269eea66ab85a9b836ff1721860cd2d7d84d71024cfcddc839bdc61ae907ce"},{"path":"run.py","sha256":"c18d9e8ed4916bee6b4e555d01f0d3f7b16e511a3aade62347388b2d291f7e3d"}],"relative_path":"trend_following/0047_0592_two_ima_cross","sha256":"d9102a3807fabfb0f2b5bfe1027fb8c5f69aecde462fe6c9a08714c624c49cac"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0048_0624_rsi_trader","category":"trend_following","dependencies":[],"entry_hash":"6aa47f618944a08cd44f72c1614bee6e3fd67e7ef5b75586323ae5e6fd67718f","functional_test":{"relative_path":"trend_following/test_0048_0624_rsi_trader.py","sha256":"43753508dd6da0db04d173c9744609e2aa1d2fab55aa8d211f5883b97e9152f0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0048_0624_rsi_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_trader.py","sha256":"98693730c740fb2b1709972366fb153d3e894f61c0d9f1900d69d4c13b60aac0"},{"path":"config.yaml","sha256":"fde2a9e73016ae8d3cda3cb2195370e35d69b488ee527533853311a432f096ca"},{"path":"run.py","sha256":"bedb1730f83d1bffaf2b060e5f599e588e7cf218e5feb548aa3f3368b098b88a"}],"relative_path":"trend_following/0048_0624_rsi_trader","sha256":"9249205136d685b00c34a8c08763b80d86ae956cde10a0f307dfc230efdd0e9a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0049_0628_macd","category":"trend_following","dependencies":[],"entry_hash":"aa119a4dab27a91c8e08f9b8be1dfaac4fe3dce020d282ab66e1591fef1d72af","functional_test":{"relative_path":"trend_following/test_0049_0628_macd.py","sha256":"55767e30bf0a5500c2e02edb2c3c3e62f42a196c0df69e6fee46fbdb0fdba035"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0049_0628_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd.py","sha256":"303a516e90f7dddf4836ee3646115f84fc6f6c985ffcc8063ed9b7c8be1d8ec1"},{"path":"config.yaml","sha256":"e16fa59fd3119c06c707b256e85a9769c164e94682b4c25143d0ab4fccdb28c6"},{"path":"run.py","sha256":"b2159fcc0a186241c45bcae20a568dee4c998110b9d982cdc076d0c8392ced84"}],"relative_path":"trend_following/0049_0628_macd","sha256":"5e490e73d8bcdbaec9a9590125cf151592d485cb696aa55287af898dff78991d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0050_0630_elli","category":"trend_following","dependencies":[],"entry_hash":"7a994e9ebf6a410513022887b43e686fc15e7a677762c09333666a245addf27c","functional_test":{"relative_path":"trend_following/test_0050_0630_elli.py","sha256":"868a1f54f2c7d4cd58c84cfbf730dd7fb25425bbc99385c78f5f7d9f51e791b4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0050_0630_elli","source_available":false,"strategy_package":{"files":[{"path":"strategy_elli.py","sha256":"9ef7a407ca891ceacc57ed01752d3074aa974930860f831b35c7d31da027f165"},{"path":"config.yaml","sha256":"774095318d6a39b1e603ecdf91749f5392390f2af74156c1d7bbd0f945a1f18e"},{"path":"run.py","sha256":"929202631ee7f4d9c588ffa0960234a016e1864d9e1d4a6bcf195c9f80ea18e4"}],"relative_path":"trend_following/0050_0630_elli","sha256":"868e4b7e89ce90ee7cbde9db9bb9b3d03508e02ea8d49dd2dbcd0208675e126d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0051_0631_doublema_crossover","category":"trend_following","dependencies":[],"entry_hash":"d36de7960f1d1d1734eba480b7058887c247437756e9ff8a032f7ec28f15c88c","functional_test":{"relative_path":"trend_following/test_0051_0631_doublema_crossover.py","sha256":"8ddf8eade5471bcaa2e54352bd659016e0bae2ca242190c0b2974968c962da47"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0051_0631_doublema_crossover","source_available":false,"strategy_package":{"files":[{"path":"strategy_doublema_crossover.py","sha256":"ffd7e3c4039977c26e3c807a0209f248eb3cc0a59f17c890b948f966f2f6e44b"},{"path":"config.yaml","sha256":"e898ec208e8bd627f5f64cc0cd0edaf280a38c56b3637e93da6f6c4d860c03ca"},{"path":"run.py","sha256":"4b2e44894068d6dccf7b11b1fc91a915be4b40dd6310d6c1cc14b6b27d1f893f"}],"relative_path":"trend_following/0051_0631_doublema_crossover","sha256":"c6532b4d664aa87693bae9d0e8166b5df4b91365477fe68811c186e5d72067c6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0052_0633_ema","category":"trend_following","dependencies":[],"entry_hash":"0f0190001a06e5f0f2615ed3ed0708c113c1b0eca78e4aa92e1cb412511b7467","functional_test":{"relative_path":"trend_following/test_0052_0633_ema.py","sha256":"b34c6060e5e5d278e9e7b2139ac97bbbe8ea05731da12d77e50986858b0083bc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0052_0633_ema","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema.py","sha256":"04c9b93507292e01b42a70370cdf317c006d4c6f9db62b3252d2ae9563365a7c"},{"path":"config.yaml","sha256":"42eb6c03fe4fb593e0607ff1755a59ad3651c1b64c5463de210336d24b7e3f73"},{"path":"run.py","sha256":"2f4c6c5d1039a594dff4d99226fe13f26369617954731931b6db0d9f1261a5ac"}],"relative_path":"trend_following/0052_0633_ema","sha256":"82059cb8393ea43aebb4289453898069034f157c66c70c8b72385a56abcd7211"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0053_0641_currencyprofits","category":"trend_following","dependencies":[],"entry_hash":"1671594496e0f11acd2409003dfa8bef3c325b90c02f686363e8f51e71d7c213","functional_test":{"relative_path":"trend_following/test_0053_0641_currencyprofits.py","sha256":"86a4fff0cc5efb8e728dd56bc793ac32009b4624b60b24ac25a7b27528a63269"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0053_0641_currencyprofits","source_available":false,"strategy_package":{"files":[{"path":"strategy_currencyprofits.py","sha256":"1e37ce72cb279cb2b09707bad5c31a838d3f81d61f3206291a025c44eeb0da09"},{"path":"config.yaml","sha256":"8b9bfe9860ca76312948e689e6eff7ce731b1e73528209204e23cc3b769ba0b3"},{"path":"run.py","sha256":"62b763e79d1d0edd8c18b423e7815fdf7930b7b2d6f58ec8333b4b189981980a"}],"relative_path":"trend_following/0053_0641_currencyprofits","sha256":"5f54f5ff97407025262a857ca8445ebed09ce79ff9ede579693630a735e7adae"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0054_0644_brakeout_trader","category":"trend_following","dependencies":[],"entry_hash":"9d0022ba83dad672119b452925a6329aab400866c662570138340861300b02ab","functional_test":{"relative_path":"trend_following/test_0054_0644_brakeout_trader.py","sha256":"0457dd0fd1bbc6ad0fa48a3aa3429aa50739107a920effbddb65c42a2fb36da3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0054_0644_brakeout_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_brakeout_trader.py","sha256":"44d16d7d599d003d34e35d0c7cf3b7c63c4e57adfe5f3bae061de4a9824a8e22"},{"path":"config.yaml","sha256":"c384e43181b6b8103edf679af28feca79914a8f5c22fdee649e08cec462a828c"},{"path":"run.py","sha256":"4a17888b28e5e88342be2c6a9c9de690bd5879f75eb5a38e244c97ccef0f670f"}],"relative_path":"trend_following/0054_0644_brakeout_trader","sha256":"3aeabdcdcdcc453e44fd027ca6498b090f68d0f04a71c2fc50bef0ca5eeb876d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0055_0646_supportresisttrade","category":"trend_following","dependencies":[],"entry_hash":"7ea992a954dab59aa4d0c14510b0b0e1f19d8e3a057cf0393367c0875f81c4f3","functional_test":{"relative_path":"trend_following/test_0055_0646_supportresisttrade.py","sha256":"f38a689aebf3955c79c819b80f7bac71c668297734d203db420bd6eb46f82f62"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0055_0646_supportresisttrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_supportresisttrade.py","sha256":"4447f110d7768691a7d37a75828d0fd345a81a4f4f42801762714cb15f64b824"},{"path":"config.yaml","sha256":"4998cd470f5984432df04bdcf403aebcd1568cb939c4ea41c543786037d48456"},{"path":"run.py","sha256":"bd39976c9bfeb36eb1208c9490ba6e3c017c377381eba1376c0d90dc3aef3223"}],"relative_path":"trend_following/0055_0646_supportresisttrade","sha256":"c51ea30f8af6254205b63990819758a8d360ba9c1d3b17894fe26e0ab8c190aa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0056_0648_get_trend","category":"trend_following","dependencies":[],"entry_hash":"d6af69c3df11d69098d88c72d20425bdd56ce70acd99a04070715678478cb41b","functional_test":{"relative_path":"trend_following/test_0056_0648_get_trend.py","sha256":"d413c97bfab59ab7f1cf855c84b6241e4125fd8f7f98a8098d419442063e2428"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0056_0648_get_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_get_trend.py","sha256":"df2b350a1e8e3a7efee6b7e3a7e7da858a1e5faa29cfddfb4611ee2551bf9f73"},{"path":"config.yaml","sha256":"47d337f253e7a3de3534bad5134867248815b6d39fa98074f09ec52c5fd5d312"},{"path":"run.py","sha256":"3ef5d3440c098c45f79c911d83059526d392bfd721ea0de8a8c1b780cd7ed952"}],"relative_path":"trend_following/0056_0648_get_trend","sha256":"e101f9f964fd2d23735e273442d90983720813ecb1de6957242ad024468326a4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0057_0649_true_scalper","category":"trend_following","dependencies":[],"entry_hash":"39ebe21dd39f7d0b87e7fffbc5d1ebc369807c3ee7cffe7b35ad9ce237bdeee9","functional_test":{"relative_path":"trend_following/test_0057_0649_true_scalper.py","sha256":"9b4092fe140a54324d0e15e00ac3d8720ed39babf4332772ee12b0ac074a7b81"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0057_0649_true_scalper","source_available":false,"strategy_package":{"files":[{"path":"strategy_true_scalper.py","sha256":"6114e8999ca1b07b04062cbd25ed8d3160230281e01e4e873005ec1d731bb5c8"},{"path":"config.yaml","sha256":"85b89ca5a617fdf1bfa2e105f48dbed0e565d671fcfd6ccf0e790063896c7ef3"},{"path":"run.py","sha256":"bd86ae7e438c58b150b3a2ea2af18666a0adb3c568bb55120f09c0e10ff9b063"}],"relative_path":"trend_following/0057_0649_true_scalper","sha256":"adb0cfad3f30dee2fb8dd98d63a1aedb19dafd9226e94b4b1258d3a4849ef419"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0058_0650_ais1","category":"trend_following","dependencies":[],"entry_hash":"2b6b3f9e96c2138e6f5773dee4a0d281c4a3d80fd34e3885aa8b0b2cb1326dda","functional_test":{"relative_path":"trend_following/test_0058_0650_ais1.py","sha256":"262d8af6704874868b27765cad99a3852f2ffbb63412da7d5f9903e6563366ab"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0058_0650_ais1","source_available":false,"strategy_package":{"files":[{"path":"strategy_ais1.py","sha256":"dd125a68f185f7ca9971b0f6a39911ee1a522906d91188f560225f9b0c7edc10"},{"path":"config.yaml","sha256":"44dc734c8ef0929166f717663c9a6ab782e45f7cf908127f317e016416236951"},{"path":"run.py","sha256":"bc444c5707bc8db51a8a737eb92de805597f326603b8801d0b00d6f26038f096"}],"relative_path":"trend_following/0058_0650_ais1","sha256":"550717bd498a16c0a3f8d45aafdb4f7d129819a4c1bd786e2db8b4ac64bb0ccf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0059_0669_hercules_atc_2006","category":"trend_following","dependencies":[],"entry_hash":"4fb8252da5af5dbf520b82c9563d06366ee1f050f6de1380b2e55e9614e3e080","functional_test":{"relative_path":"trend_following/test_0059_0669_hercules_atc_2006.py","sha256":"a387202db5c0183a43009fd7874ec3fb9d0c49b14efe2e7fdf812e1718dbd336"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0059_0669_hercules_atc_2006","source_available":false,"strategy_package":{"files":[{"path":"strategy_hercules_atc_2006.py","sha256":"c4148491893a70b7df2fadd50296add864fafbddfb925f79050334708dbfd19d"},{"path":"config.yaml","sha256":"e402e8c369bfbf308a33877628ba5bc03944fbce417f4c704b86ecbd067804c6"},{"path":"run.py","sha256":"0d86e106a8c5f55c0943053cb43d168af9275cce1283d7c8eb8a673d75493105"}],"relative_path":"trend_following/0059_0669_hercules_atc_2006","sha256":"e136db2de66fb75549bc8e382b13b878b33652e09f94c31b6ac6750403d8222b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0060_0676_exppriceposition","category":"trend_following","dependencies":[],"entry_hash":"3c84f61fecf8478d208e4359049272eb364bddb47db8c3e7c3da86c0b6cba044","functional_test":{"relative_path":"trend_following/test_0060_0676_exppriceposition.py","sha256":"bd8110ba1023b5910ed9f2436813cc4334ffa2479317f6c8ddf3d4f029069737"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0060_0676_exppriceposition","source_available":false,"strategy_package":{"files":[{"path":"strategy_exppriceposition.py","sha256":"c6b54f7ed5722e2d61126a710f5fda8bb1e4a2f213f499dc83904e99715ff629"},{"path":"config.yaml","sha256":"f1474d1cd5da90c0323544e3d5c25d0bb0647b80be46949b5990bc0329a40ef7"},{"path":"run.py","sha256":"d7c305043cc64f3a69a6538c3e564910ecbe7a7c9e455e483da0a176de3e8826"}],"relative_path":"trend_following/0060_0676_exppriceposition","sha256":"5968ebb0cde8b9128861f942cfd2211707be8e9473de83319090f98841607b48"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0061_0677_ema_cross","category":"trend_following","dependencies":[],"entry_hash":"6cb1b4572b3997cf5af66d9237d58a27b4ef3441c2a4cf649c637e544eca57b9","functional_test":{"relative_path":"trend_following/test_0061_0677_ema_cross.py","sha256":"34a0c66c004d4de2073547ec014306d797768ae391f1404174e8a34fcddd5040"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0061_0677_ema_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_cross.py","sha256":"3f0e0d061ec27dcb6a2773836981feeb2e5c86a755cc5cb2edb0287da271e678"},{"path":"config.yaml","sha256":"1c3c3e8d46240cf46fd1f873556eec6d9cff3c1aba3302686cf7a5fcaa68b6d8"},{"path":"run.py","sha256":"d2f59be2a96e01e4a4e0b8621e5a0e1f26fdc9532e94c5039753ed70759c96ed"}],"relative_path":"trend_following/0061_0677_ema_cross","sha256":"c1830098749d0153793ca5723df47f871ce25e9ab7a6b75714e6fef49e4a97fc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0062_0685_rabbit3","category":"trend_following","dependencies":[],"entry_hash":"43cd04148f6df1d02b530d1d8d41c957fdd6816f609510691739f9a74d02e6dd","functional_test":{"relative_path":"trend_following/test_0062_0685_rabbit3.py","sha256":"adfd88e974482b7010aa00ee7d6018a46b3f19d0c200270fb890a3b9e445d6c6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0062_0685_rabbit3","source_available":false,"strategy_package":{"files":[{"path":"strategy_rabbit3.py","sha256":"c729baac6ee284e6095311aedbc17c6bada3ecf802a70834d2b386d0450efe42"},{"path":"config.yaml","sha256":"d10d4f591a5fda36b4e9e722bbbec291f588f856bf5651c3b08e6a30866a08e3"},{"path":"run.py","sha256":"8f859ca9b62921ecdc8e7d555be9be8ea832e59d600cce82e1617ba2960a7ce6"}],"relative_path":"trend_following/0062_0685_rabbit3","sha256":"40bc159fa725c84b5d8e2f292ab02c4dac0e76532b03f44f1f614d23dbe37209"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0063_0686_ma2cci","category":"trend_following","dependencies":[],"entry_hash":"44b43872ea595785bbd403afa44703a7686bcbcdd617af6f24f1a66bea33abb7","functional_test":{"relative_path":"trend_following/test_0063_0686_ma2cci.py","sha256":"dbf55eaa57b43ec50c2e32625f7b5ce1fcd4f7330d8bdfae159d9123129598aa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0063_0686_ma2cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma2cci.py","sha256":"c7dbffe23b7688bf380be028dd519ec4c1424a9273a1ec487c8c8ce8b45dbfa9"},{"path":"config.yaml","sha256":"23cc565d36d2b3574a4e84ffb3b6674c98639fd14c3b33d26be07cf06fd6135c"},{"path":"run.py","sha256":"36fc349c05d4a6241d277e004750bc0f1ff329a4014c0a31e70f99dd7589c38b"}],"relative_path":"trend_following/0063_0686_ma2cci","sha256":"a06e8c76578c0c71e560f003a3533cf1519b085f85b5463214dd428395696e9c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0064_0687_adx_ma","category":"trend_following","dependencies":[],"entry_hash":"245ca1803e1530b7e6977f6c9660efd2367e958a0c2b467e48b973848b0d85d0","functional_test":{"relative_path":"trend_following/test_0064_0687_adx_ma.py","sha256":"b143e0e15318200dc50404e2506a5c9f80335956e9871d7b3c2d856862b77d2a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0064_0687_adx_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_ma.py","sha256":"48136c1578d5b27f23086048f0392bc7b647552f04c1edeeb25e7e4b3f2c512a"},{"path":"config.yaml","sha256":"6394d086d1b436242d8a1f0eed046392bc0eaa3f2df4a4bf64585a36545dc0ac"},{"path":"run.py","sha256":"1dd9657db850c19863599fcbcd287f35349a93341b541dd93f4a37baf61048de"}],"relative_path":"trend_following/0064_0687_adx_ma","sha256":"1dfb7792bbaa82cd25d096fc120145cbd9640be7c0be90836c7ec0dcb6d6bf61"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0065_0691_polish_layer","category":"trend_following","dependencies":[],"entry_hash":"6255db4fd34c0da6d70c66ec7c347047add82bbe298ef090d2a50f958ca22c4e","functional_test":{"relative_path":"trend_following/test_0065_0691_polish_layer.py","sha256":"53378d726eca85c89d0319f2f26dcf1a772813cc17c16fff709d06a7c1cc560b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0065_0691_polish_layer","source_available":false,"strategy_package":{"files":[{"path":"strategy_polish_layer.py","sha256":"560beeef0f4452a34056b260eda735e1d499df7a24636a1c3f532cad5ada37ab"},{"path":"config.yaml","sha256":"096c1c68db34e7af5f4afc658bf487bfbaee31c7257e6cde7902cf5d532cd814"},{"path":"run.py","sha256":"c450a61e8cda4a40edcfe0ce2bf4ad6355b1ac00e6905fe8eb5abe0f24ba419b"}],"relative_path":"trend_following/0065_0691_polish_layer","sha256":"b67bfc81931a1f4388e377b8bd4ba000f30cef495416e140cd53fa1feea4d588"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0066_0695_5_8_macross","category":"trend_following","dependencies":[],"entry_hash":"4a8c0194295ef0067f686848ffc27ccb63a7471b4d409c4a273071974216f091","functional_test":{"relative_path":"trend_following/test_0066_0695_5_8_macross.py","sha256":"c2e1a7b175e4d6aa11198a96e0e7ff40971756e2fc766ac55e0606ee85940f0e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0066_0695_5_8_macross","source_available":false,"strategy_package":{"files":[{"path":"strategy_5_8_macross.py","sha256":"7988a89722a7be19cbc6a34af8ffc27b0907c610ef7b85069f7d862842b2cd77"},{"path":"config.yaml","sha256":"20d926f4b202a124ebf30c669d26dc83bc68b8aa1a4ebf41e5983e3a9f364909"},{"path":"run.py","sha256":"5dc0e5bb29eeb0e608162bf81149d98eb66b62c176356853432aeb332ee89e2f"}],"relative_path":"trend_following/0066_0695_5_8_macross","sha256":"61d18c6959543f012683f149653fff975493ac0721b9290bacad37ec4a183b57"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0067_0696_kijun_sen_robot","category":"trend_following","dependencies":[],"entry_hash":"8bc11f819b39ee3d0b5ef4150cfd01ed4da14f535904796a4af5e04bc3df7df6","functional_test":{"relative_path":"trend_following/test_0067_0696_kijun_sen_robot.py","sha256":"b4fb02522afdaec2507919406797936ed25a33b0deb84dc3d91b0c9eca7a4e57"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0067_0696_kijun_sen_robot","source_available":false,"strategy_package":{"files":[{"path":"strategy_kijun_sen_robot.py","sha256":"a5cb04a1585d61dc6ee4cfad1575b2066ebd3dc152c08a454be50b4aad076779"},{"path":"config.yaml","sha256":"89c5544e54cac18cace4d16c098c1bf4edf093091a71482c5f6970baa8a44c31"},{"path":"run.py","sha256":"1f7eb923e955ce1e808a6e16ff528db648d6def2a533a298accc5c9b24c6330a"}],"relative_path":"trend_following/0067_0696_kijun_sen_robot","sha256":"f9e95962f04c129658ef45072d3791db796c1f33bf460d8a6643d74fefb64107"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0068_0734_breakdown_level_day","category":"trend_following","dependencies":[],"entry_hash":"2f238544166d3ce54f8bbdf1938e8ec992b1a21badb9f987e54c363dc21f3585","functional_test":{"relative_path":"trend_following/test_0068_0734_breakdown_level_day.py","sha256":"e32be9e6c15085e0c644dc26bace2b86e6c143566c65ee9ea1be41fe061b6f29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0068_0734_breakdown_level_day","source_available":false,"strategy_package":{"files":[{"path":"strategy_breakdown_level_day.py","sha256":"de56b5ca05c4cfbe10ff1a1722c813bcbbf84044130c4b0e3478fe1b0775fa87"},{"path":"config.yaml","sha256":"8b110bc0e28e11111bb6c1dfdef25a627b2a7e7a1f40f13d25806ceafc454d83"},{"path":"run.py","sha256":"a25387e5f61eeab35791fbec79404539be552a7d9ad7c87e063f6e339c3d8702"}],"relative_path":"trend_following/0068_0734_breakdown_level_day","sha256":"8a8c6d35d448f5ad82fc388e185f07e7d06f7047fb5aec859fdebffce1cc633e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0069_0735_ema_wma","category":"trend_following","dependencies":[],"entry_hash":"d3f34d37c2017cb9cd05f2a27589b3cf7e1531cd2203c8ee56b71510db2a0e2c","functional_test":{"relative_path":"trend_following/test_0069_0735_ema_wma.py","sha256":"d6fe42346a3a9fbbe2104dbc03b36b6d5f71bee37771d8fce49cea04d18371ae"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0069_0735_ema_wma","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_wma.py","sha256":"cef7f6f05585a1a79f5d0d8ca2815d9e9072447bcc8b1c2837db74609b568002"},{"path":"config.yaml","sha256":"2e4c40f7bd780270e83b0b050e137c5fa902a4b6271ada65ed85b68d1329d4c5"},{"path":"run.py","sha256":"0858c7ef6b03ab9e2533f6ddf8e17fb4a97d4a62cbc92b4e854dfd379069c103"}],"relative_path":"trend_following/0069_0735_ema_wma","sha256":"89d72f310ef96cf73a55a47ee2b3b3c5da66d6bba6b5fe9e5f3940c1cdea29f4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0070_0739_trend_alexcud_v_2","category":"trend_following","dependencies":[],"entry_hash":"6e9b0994b7406cb37071115a1b22aced5767dfd7f344c65ca380047b0d67271c","functional_test":{"relative_path":"trend_following/test_0070_0739_trend_alexcud_v_2.py","sha256":"e689049e63ade5b02991263f613322ab737925f6069470c9bc6d56287cac9361"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0070_0739_trend_alexcud_v_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_alexcud_v_2.py","sha256":"3a6fab72f94ab1a08f109e74101ae997235700ec7800d228e6c1dd63b50ce885"},{"path":"config.yaml","sha256":"0652d2ce255405c8b1a1a7ddadd34488f30c52ddf17fe9352d13b1a201b4c8c1"},{"path":"run.py","sha256":"c7576dcdc1fd55047aa4b7328af90b9cb47f7bf53d87df1db9a0856a08ec2d59"}],"relative_path":"trend_following/0070_0739_trend_alexcud_v_2","sha256":"f1a1893c2016c0fbc17af59594f947e5cfddc1caefd99c3130ad04deefee8434"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0071_0743_ma_cross","category":"trend_following","dependencies":[],"entry_hash":"c6bf872eff7f28f59889f9a98395a9e1a5d548c736152d3bcee59795cc16832b","functional_test":{"relative_path":"trend_following/test_0071_0743_ma_cross.py","sha256":"65b4568401e8236b7596d157c57de123342ddf70affb0e91b1d9aa5c14537aec"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0071_0743_ma_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_cross.py","sha256":"c73c83f4d23ccf51d9c7b9ae22736d2e8b98c5fd231f95f503860f41b9334c85"},{"path":"config.yaml","sha256":"703afb7eaf289cd6684fee8f91ceebefcbd4fc47c1d57899952312574832a4f8"},{"path":"run.py","sha256":"8fb3db310798ba9c396bce9044f33193283089396f9861364353c0a2c2241f14"}],"relative_path":"trend_following/0071_0743_ma_cross","sha256":"b93a8562a3318bb7941c6f20646dc2386242587c8516b8fcd7670bdc2013ad54"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0072_0759_crossma","category":"trend_following","dependencies":[],"entry_hash":"557a3ee04fa9d48eac54b2ed1b2493bb5f8e1d1e7ee5cd754f84f525b5e554cf","functional_test":{"relative_path":"trend_following/test_0072_0759_crossma.py","sha256":"bca8b6a2b67b9bbc8e22ec1200710bddc78ba273d3f968f595f2d87e362546d0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0072_0759_crossma","source_available":false,"strategy_package":{"files":[{"path":"strategy_crossma.py","sha256":"377308317ea8915580e143725fd87c548c09827dfb513b7077d1a134c0f0c04e"},{"path":"config.yaml","sha256":"a92953c9981fa736aa42e52690825cff4ba010872ecb0e526d7b2db17364f7b0"},{"path":"run.py","sha256":"55429d0c059f35830b7e42696c7daca2cbc1163c55e6250822dd7c0330b968fa"}],"relative_path":"trend_following/0072_0759_crossma","sha256":"23161c94807f8a49b7f24f6b16cbd3770a037b4a8d6386cafc927d15def8da5a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0073_0772_simple_fx","category":"trend_following","dependencies":[],"entry_hash":"640d1efffc766428fc464595f3856d3c31a206926dd67f379148f991db720d34","functional_test":{"relative_path":"trend_following/test_0073_0772_simple_fx.py","sha256":"749c5cdbb9fac853299944a613d469c780157c46ff784aaae38d8148f87d2ee9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0073_0772_simple_fx","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_fx.py","sha256":"c2b953de8e8fd04dd7f2fcebc7f6495ecdf37dc843eb09ab1492ea5edac5d832"},{"path":"config.yaml","sha256":"7d9ab3cf8a49e871f1905ab0e779782987ca47634780141f2340b89710571010"},{"path":"run.py","sha256":"41bf76487ca6415b5d79146085206c5bc490b098436430e37f70210729e4ae3e"}],"relative_path":"trend_following/0073_0772_simple_fx","sha256":"4189e681dcdaec062d8b72be30f305a46be55437f2278a6c842f778ec64b945d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0074_0776_original_turtle_rules_trader","category":"trend_following","dependencies":[],"entry_hash":"720edac1f25b3dd477730af81b1aaf774ed199caf084742c7229b64f19d5820b","functional_test":{"relative_path":"trend_following/test_0074_0776_original_turtle_rules_trader.py","sha256":"e61c7e5e7859dc2dcba6277a62ab9ac41623b8610fde5ab2aa5f095cfead5ce8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0074_0776_original_turtle_rules_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_turtle_trader.py","sha256":"4b81ff7d0ace1b4cd60dbf9e002938989d7b561f9816bff5db5199db7d0eab3d"},{"path":"config.yaml","sha256":"67bd186574cce543a6616316fbfa8e6215ab8dfd1c2b91027d3a99e5c43b6bbb"},{"path":"run.py","sha256":"678f6f7c7121e79467bfc93931a28f22c052684197a10b27fb79b2b69419826d"}],"relative_path":"trend_following/0074_0776_original_turtle_rules_trader","sha256":"22e0087c8c2588b0a2bb26658e90440b47b126faae5155998cdc98609f6cebe8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0075_0784_dvd_level","category":"trend_following","dependencies":[],"entry_hash":"3aa60332bdda12f4c960aeab2a558f728f801c87088bf480c0dfbc3b8741bf9f","functional_test":{"relative_path":"trend_following/test_0075_0784_dvd_level.py","sha256":"0e12504ce5ebe1b8d993061de2f46e289917be4d0ecdc67b707257b343c02d73"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0075_0784_dvd_level","source_available":false,"strategy_package":{"files":[{"path":"strategy_dvd_level.py","sha256":"13eb8d3a63c93deeba4131e76c690968e1e42786d858ac71e5014dfd2442d812"},{"path":"config.yaml","sha256":"7852a6ba175832581f0253cb980ba3fe5548781822d2d6c826ac9e9f1ca303dd"},{"path":"run.py","sha256":"fb8c090677e51a2c8a91d68be5088fe837419621c5c78b94b7beb5496c2b8a2b"}],"relative_path":"trend_following/0075_0784_dvd_level","sha256":"535bb464e763e6e0b6c86b9699c7c63eb9f4c2e60a3c37e2190e45b7ea3cd3a2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0076_0830_fibonacci_retracement","category":"trend_following","dependencies":[],"entry_hash":"1ce243ce15320f756bac237e46f8884de0a81ffc703e7b96f43b9bbf86335a0d","functional_test":{"relative_path":"trend_following/test_0076_0830_fibonacci_retracement.py","sha256":"59c2adf14dbfb519bff668a7f7af9cb1d5bfe37ad5e1ffe77589e8db76478103"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0076_0830_fibonacci_retracement","source_available":false,"strategy_package":{"files":[{"path":"strategy_fibonacci_retracement.py","sha256":"8b891239f7953d786f2f43bd192f5bc6e19ac6e9a521c5dec4e6577e2f01a6ca"},{"path":"config.yaml","sha256":"c5315cf5127037a969a359a257130d5b80ea121046c2445315f14ce997863a6d"},{"path":"run.py","sha256":"2b5b750e3f09c2f3ef23dc9348fad12326cf6c400c94c5d0b500447d0050b1a0"}],"relative_path":"trend_following/0076_0830_fibonacci_retracement","sha256":"1695d40492a2bcba76b431fe7d67d405b8b3083d3579469d74002891b62fea8c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0077_0854_pchannel_system","category":"trend_following","dependencies":[],"entry_hash":"f036326870233c5e1eb8ed2cfefee3f01426f739abe7b19f7b5eae879fe5951d","functional_test":{"relative_path":"trend_following/test_0077_0854_pchannel_system.py","sha256":"d69f22e23e7e0c5eb25e609bac528d9411e8b10ff5dc354de724b073310c54d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0077_0854_pchannel_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_pchannel_system.py","sha256":"701090a36578acf40e72fa3dfadf8bc29e32f70ffc1951468ae854c0798dff37"},{"path":"config.yaml","sha256":"c4b7685a4afe2eba094e620ad5fab4644f1c334ef9caf8b67f59179cfba7272f"},{"path":"run.py","sha256":"0216196d18c5c05a02ebd5d5232745ba0017d44703814cbb41ce2c271dfcd042"}],"relative_path":"trend_following/0077_0854_pchannel_system","sha256":"3bdcfff12fe0d75de9027eedc10b007df80540bb0741cae124bbe53805a4a7c9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0078_0855_donchian_channels_system","category":"trend_following","dependencies":[],"entry_hash":"d65b4fa5a0fe64b7368e49d9cae8b1125260f7f7b95fa5806fe3c7cd2855c3d6","functional_test":{"relative_path":"trend_following/test_0078_0855_donchian_channels_system.py","sha256":"640d65c41f0ea617d0112d4e70d67b375de390c1e969a33a5d5efb5ce08ded48"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0078_0855_donchian_channels_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_donchian_channels_system.py","sha256":"39fabff4c59f6212202caa3ed81f7efa7201046d2907978306b1a4386a1b1b5b"},{"path":"config.yaml","sha256":"d230f7e8e819a238875550c55bfdcd33301a095b7d23df2a514342a6fd4497d0"},{"path":"run.py","sha256":"3ade3a176a3b279536d70c2cb4fb548bdf138e9318262e8fda2c986c8e0a7a68"}],"relative_path":"trend_following/0078_0855_donchian_channels_system","sha256":"d3bfdb450dac457181b6b9311ca86f3fd32aa73dbdbed367479517bb3e1e8a10"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0079_0866_ma_l_world","category":"trend_following","dependencies":[],"entry_hash":"fbe6ad16f511a73eea6dbad41ad3347cea62b4d222cbfb624bf2ea68bdfdb031","functional_test":{"relative_path":"trend_following/test_0079_0866_ma_l_world.py","sha256":"d5e9760fc3687da2cbe1e8ee14ccf139a9d70a4b0e708d98f42a9e8805c9acde"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0079_0866_ma_l_world","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_l_world.py","sha256":"ba582df6faa3f082e90bd0640e2e4e36f0b5f00b76fc60767556bb97c15f7cec"},{"path":"config.yaml","sha256":"d1f3b90c25495b4e8275e68d911d00952b4b4266b48e9646e614ba3cd37ec0c3"},{"path":"run.py","sha256":"e23c433b2df58b8078f924db13b93503b16beb58bb580e40f8d0b00aed05ef72"}],"relative_path":"trend_following/0079_0866_ma_l_world","sha256":"a94fd1c46b383512b9b457abad14caf4c59b54b4b64b13bf402b9c11f4a725d1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0080_0868_longshort_expert_macd","category":"trend_following","dependencies":[],"entry_hash":"7e878291b847821d78ee7335488cac462f4b9a511d2bc7aac085b60f63bf0787","functional_test":{"relative_path":"trend_following/test_0080_0868_longshort_expert_macd.py","sha256":"e8df7d39386409f3a16cd399d9ad40909d427ab10a31c64f824c0013b615a818"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0080_0868_longshort_expert_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_longshort_expert_macd.py","sha256":"eecf072b3b966038041f432d80ce8f8427d65c02cac9c7860f77b50ebf861b81"},{"path":"config.yaml","sha256":"35d901e7a41907931b459371d3f1073e56e5587ba629807ec95ac84f71518024"},{"path":"run.py","sha256":"dd4c5e9f00e8ef0d3de5576338160388c55ed225427be8204c1b9dd3cc2312d5"}],"relative_path":"trend_following/0080_0868_longshort_expert_macd","sha256":"61dc69920c3ca18fde1b615ec0aeeab51cc65903b3a3b3d6e7293bcf4e2ef54b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0081_0884_roc2_vg","category":"trend_following","dependencies":[],"entry_hash":"5361662368a673169326dc1eaedaa5fe469c8708a4104af748a6dfe374250122","functional_test":{"relative_path":"trend_following/test_0081_0884_roc2_vg.py","sha256":"50209ff22a8babb42ae08f6329dac6e517eb04cc1807056bd85608ba8977f315"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0081_0884_roc2_vg","source_available":false,"strategy_package":{"files":[{"path":"strategy_roc2_vg.py","sha256":"05b8f6ae08dc0cf48f1b203a8a385ba6299f48ff37cdf173363bdd705771a076"},{"path":"config.yaml","sha256":"d65f524dbe4fc2cc1afc9bf178b24a8e52d3dbaf3db62fb7664fb6d157ea3c85"},{"path":"run.py","sha256":"61c384fdd0344d41c84d290d0b27efbfbb04d196bd51ccdbe1eb6a968203bd6e"}],"relative_path":"trend_following/0081_0884_roc2_vg","sha256":"7607ef5b587efe8ccbc15b589aa5cf168921d2bceba8385f45b7f7037d2c55e4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0082_0887_cci_woodies","category":"trend_following","dependencies":[],"entry_hash":"7d3e891f4db9eb83a3d42d81cff0a669bce822b9ffd6f1d5c9bd2ce8b5289d80","functional_test":{"relative_path":"trend_following/test_0082_0887_cci_woodies.py","sha256":"6115ef30c934e0f74542728a45d534b97871aa32bc435d349f6bb7954730b1e0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0082_0887_cci_woodies","source_available":false,"strategy_package":{"files":[{"path":"strategy_cci_woodies.py","sha256":"45aa9717b59f8b4053ecf4a0c87cb7eb3c2cbba33be0025248114d9be205aaac"},{"path":"config.yaml","sha256":"ce7f3be07518bb2e862aa76c325ca7e63c87f85a2f1d0073a523981c60e5ccc0"},{"path":"run.py","sha256":"d986d2814eb482d05d3ed1cbc990aa28ccd0823c2d605914303cb805fb0bf581"}],"relative_path":"trend_following/0082_0887_cci_woodies","sha256":"97c5f01d9e682bf9075df8696911d8ca422b7fb5c070796069d9df5c73e1a97e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0083_0890_trend_arrows","category":"trend_following","dependencies":[],"entry_hash":"d9cffdaae17f9d0715385ccb25ff3e7f4919c7211a366f0e919cdcea0a0cf63e","functional_test":{"relative_path":"trend_following/test_0083_0890_trend_arrows.py","sha256":"5cf059bbe1fa644920bcb03d6a46f2d404863a49a57936d10d0305919b1595d6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0083_0890_trend_arrows","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_arrows.py","sha256":"7bb81df349cc1ca682d3cbb89240ffd3c9dec23e89daea4b4e1106a3d1c13f01"},{"path":"config.yaml","sha256":"da10ff43808bae7e0210c2ed380bb18736d96fe2edc11b1d78a9f1ebc20d5778"},{"path":"run.py","sha256":"ba505446f4bacc46985cf31d5573217c5ae9e86e8bc00780bfd483a23582febc"}],"relative_path":"trend_following/0083_0890_trend_arrows","sha256":"f5c4a03f0862e464026ed143be7fe54475b65a5d841b62fc6798e82ed672b357"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0084_0905_wprsisignal","category":"trend_following","dependencies":[],"entry_hash":"41c80a003bb5f4747ad30a3d73e783695d1246d7ceb162b29ffe6110f3092990","functional_test":{"relative_path":"trend_following/test_0084_0905_wprsisignal.py","sha256":"bac0b6996831f09f16d1441b4035b2f1f035ad369cfd5e47de053e0171f56f3e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0084_0905_wprsisignal","source_available":false,"strategy_package":{"files":[{"path":"strategy_wprsisignal.py","sha256":"ba778e771cc21c83ec218d7e7f0e770bef728ee47da1075ce4d84a73d23f9864"},{"path":"config.yaml","sha256":"5a4c3d6f6bd39535c9bdd158ab76355bd76633dbbcfcb33f6f5442c2bce88667"},{"path":"run.py","sha256":"d3ae8addeb825bce97f0034cabf947a58996692b26c60b4d2736d7474efe4d3b"}],"relative_path":"trend_following/0084_0905_wprsisignal","sha256":"e12a5568e5ce01f9892f0da292719bd80d4d1ad020a0e2dcbe93ba10081fbe7f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0085_0906_supertrend","category":"trend_following","dependencies":[],"entry_hash":"e5a3166e8dcd11a541b534cf08f590229a49182a82a6e8927e2ace07bd7fde6d","functional_test":{"relative_path":"trend_following/test_0085_0906_supertrend.py","sha256":"5b30f962a618fbc945cc036c0a4d8807bdac8904c029571b4a769a1ce3bc9db5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0085_0906_supertrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_supertrend.py","sha256":"760c22c525eb5f7422626bccc242df50348385603d266ac3c009aab0f949c6c8"},{"path":"config.yaml","sha256":"b5ee4bbfc9bc15a9fd4436f8395237379e1fd47fa0b456ec92afbab48b1798b2"},{"path":"run.py","sha256":"a4fb69b8c9b33c06733abb5fc2d294ab397fea16d87c434dcd531aa3065147ef"}],"relative_path":"trend_following/0085_0906_supertrend","sha256":"c98a0f15b83531bb64c43dd11bda1a177390de7d8b05ecd9e6f7f2cc470370aa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0086_0909_stalin","category":"trend_following","dependencies":[],"entry_hash":"d9c564c5d2d5a75e3e11d9d7ea8c876018136b154954716a6407949693cb76dc","functional_test":{"relative_path":"trend_following/test_0086_0909_stalin.py","sha256":"bc4e7a17f54d472179ee8a8d6fdada1261d2f3599e5a92f8b89dc6174e68a36a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0086_0909_stalin","source_available":false,"strategy_package":{"files":[{"path":"strategy_stalin.py","sha256":"0c8f111d8b3fffe60c0c84639bbb7217246f772c4242a6acb506242d46ae3ed5"},{"path":"config.yaml","sha256":"612245271388145f3e09dddccd502952f19d2e3aaa0aab9521a168d6f0a91244"},{"path":"run.py","sha256":"83480351774044f17e2d28569601eb727b66af0a1cfdabb00356d26b632a2add"}],"relative_path":"trend_following/0086_0909_stalin","sha256":"fa06f35cf1482b0502475c89885b2866235db8f18446a88360e6611fdfbda5ce"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0087_0911_sidus","category":"trend_following","dependencies":[],"entry_hash":"130f20158c75f206a954fa7d2eef8481c152837181105191e3d8f381a1297389","functional_test":{"relative_path":"trend_following/test_0087_0911_sidus.py","sha256":"a581e69773341154cdf5f0fc9f50332defec2ffe32a207971eddae7322cd129a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0087_0911_sidus","source_available":false,"strategy_package":{"files":[{"path":"strategy_sidus.py","sha256":"952edc2654ca0e8b3c497158c2736b1429da365bea2f1ba0a6d6d2595ea2aa65"},{"path":"config.yaml","sha256":"16ea98946d626b8602cfa0b4d622ed96ad309a05d1d5e76aa783297d63ceac22"},{"path":"run.py","sha256":"e3e09bfde018db5229aca4f0ae46c5ad36e96e1be213b5a6cbe7472218849ade"}],"relative_path":"trend_following/0087_0911_sidus","sha256":"b7c1bee03f25446f22aab2a1888a88fb0124a3f973ebd3ca1ca62320fae7b933"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0088_0913_pricechannel_stop","category":"trend_following","dependencies":[],"entry_hash":"2be2d65b3826de3f0c9fbc158e0c56d77d930405c533159751cc3be8b9c5b907","functional_test":{"relative_path":"trend_following/test_0088_0913_pricechannel_stop.py","sha256":"e73dbe44ca3526aa33316019fea10976670f33833cc3f9bd6455ebe2f460fe68"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0088_0913_pricechannel_stop","source_available":false,"strategy_package":{"files":[{"path":"strategy_pricechannel_stop.py","sha256":"8fbe91c965acabf763bc14f78584f7e5dd66b56feea2617c935c2e4d39f45c4b"},{"path":"config.yaml","sha256":"58eee36851763229f5e07d7048b36c2acafab21fa12ed18d84781948e7a47534"},{"path":"run.py","sha256":"53fdce098776b60dc95a04b83ecbc2e0ec4a8e983114094313a54d9d179fc2a6"}],"relative_path":"trend_following/0088_0913_pricechannel_stop","sha256":"589f347c7a6364fb3e385d721ab44a9c214477c17820e73804d7e89cbf01d799"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0089_0915_lemansignal","category":"trend_following","dependencies":[],"entry_hash":"8b5676f088688c7d2f7d02bba85715f705bf31641d6adf87ee3e0e56c2dde788","functional_test":{"relative_path":"trend_following/test_0089_0915_lemansignal.py","sha256":"d06a392b723489526499a0e0c87af988802cf07fc16fa6698eb32343f4c28d4d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0089_0915_lemansignal","source_available":false,"strategy_package":{"files":[{"path":"strategy_lemansignal.py","sha256":"82789643598cc1a02616a1058b461f96a19aa4532916e360d9779a830b938afc"},{"path":"config.yaml","sha256":"b48cac42830becbf547fcb672d096b1916ddbdc5a12d188d0f082c6cfba5c1d3"},{"path":"run.py","sha256":"e059ffbb1c7101c35a498074d6178d8f0cf559f55303a314e7cd5557e70edb8d"}],"relative_path":"trend_following/0089_0915_lemansignal","sha256":"1b5bebc996534894a4206aa615d967fdf9f29e80ca22035ed7ec5d0f35fd6366"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0090_0921_bykovtrend","category":"trend_following","dependencies":[],"entry_hash":"10cd3ffc66c0dbc625fd00d9d7f7d0713ac3d8505e0716d81ea61c6db4d3a376","functional_test":{"relative_path":"trend_following/test_0090_0921_bykovtrend.py","sha256":"9199d15bb61acbef05bd16f93d293b03f8cfb39c9b1ac3450e7519644a4ffaba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0090_0921_bykovtrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_bykovtrend.py","sha256":"e7cec0bf6fa6af3a60dff08f1bfc4f7d4cf466736e80c499390788eb9d2a26fd"},{"path":"config.yaml","sha256":"22929f0dfafba1db448f5c6b9c35f13ae0e03826f343e359f67936aaea6bd8e7"},{"path":"run.py","sha256":"60bc7e73bf87549e5d91a50f0fc5e233534ae0a1f97ded169baa194e7575c421"}],"relative_path":"trend_following/0090_0921_bykovtrend","sha256":"2ec0ad0f9926fe3726d200711e95c208c50b61d09943e8d973b8345b7f317b1d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0091_0922_asctrend","category":"trend_following","dependencies":[],"entry_hash":"4e65a35868d22a4479243d333b8f44da567f59e4af4c29b9f6c155fc172dcf88","functional_test":{"relative_path":"trend_following/test_0091_0922_asctrend.py","sha256":"ca1907da5e0397a30587bd5d98d2756e8af201bc425ae8807072a2933d7241a2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0091_0922_asctrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_asctrend.py","sha256":"63adc516f2d9632f2afde33aefbd68cfe54c3f8dcf61c9645c1ff28a6a971fee"},{"path":"config.yaml","sha256":"37639a8e5cb50ab5cc7823b8c5a0ad76ebc9b2f97586c2d96ec4ff0ac39feb29"},{"path":"run.py","sha256":"aaed2679642e19df185fdc38a93a7015bd03b41024a6c0e247b4f70ea3a37e36"}],"relative_path":"trend_following/0091_0922_asctrend","sha256":"f0f7c8fd50d7225195c3f2c58b7e7b081a8f620880bf83e33cb930667d3c4db4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0092_0926_stochastic_histogram","category":"trend_following","dependencies":[],"entry_hash":"c034e4f40846d92857dc63e00bb7ed758c67b453d56ef9eb97e74e4805b683b9","functional_test":{"relative_path":"trend_following/test_0092_0926_stochastic_histogram.py","sha256":"519d010ede2231ef3214c0bb3adec46e621f06b9cd6f25c1f2b68416b55aa3a2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0092_0926_stochastic_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_stochastic_histogram.py","sha256":"c4c7e3c879ca30b4681dbba8bad5cc08d8f7210ddb3d5f6b49b8414f896597d9"},{"path":"config.yaml","sha256":"5477c7cee2db16f9192adaf55410446137bdcb7365cc675eaca2f8b6ec0113c9"},{"path":"run.py","sha256":"6fd52b2b34f653c2384fce2212b7f1221dfc1832c550565818e8b8cf65eae699"}],"relative_path":"trend_following/0092_0926_stochastic_histogram","sha256":"4556455bc94d640cea5610cde0f33a7d39f204a813cc81a5d2032d1ee846f929"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0093_0928_rvi_histogram","category":"trend_following","dependencies":[],"entry_hash":"d581a6cd0103a0cfb17f676355fdb92a58e13b8fa9ff342218ea7ff16b6655f2","functional_test":{"relative_path":"trend_following/test_0093_0928_rvi_histogram.py","sha256":"44a8a3094d0f18970a986f0d48388c9ecbf22193c9c3c43008f8ad4e6dc6d4a1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0093_0928_rvi_histogram","source_available":false,"strategy_package":{"files":[{"path":"strategy_rvi_histogram.py","sha256":"c7f0b743d82f95a91dd2b4ac4d4e4a3859e95b3519438688aa0de36763fb95f7"},{"path":"config.yaml","sha256":"c2abc9bb8ec8ee4111725caf456708aa89981ebc05917d28b17a9798133d679d"},{"path":"run.py","sha256":"df0af641f5cd44a74ebbcc20bd864477dcc981b97168cd7ccadb332b4d54b006"}],"relative_path":"trend_following/0093_0928_rvi_histogram","sha256":"29362c8b9cef49802322ce09706a2abe80c155de212c4b2239151b04c866c839"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0094_0966_digitalf_t01","category":"trend_following","dependencies":[],"entry_hash":"d63832443620c44c2bd4b37d94753c210aed8121f51427e3b46717334db292db","functional_test":{"relative_path":"trend_following/test_0094_0966_digitalf_t01.py","sha256":"91c96163cf24e9af036b034371885096ea2e6beacc83ca08c5246718f2a447ac"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0094_0966_digitalf_t01","source_available":false,"strategy_package":{"files":[{"path":"strategy_digitalf_t01.py","sha256":"fd6415f70179b040557b3d5fbdcb4f6575ecd994646fd72f2051af66bcb1a6be"},{"path":"config.yaml","sha256":"c0fd348eb3ab94d20a2c271e70af31bc36186fdb875eaefd7f3a8cd8397d3df3"},{"path":"run.py","sha256":"2a34d3904bf026c261b91d5a8f26e249a551738e5157b150b13e90479aa530d3"}],"relative_path":"trend_following/0094_0966_digitalf_t01","sha256":"4b8c1b30d16f53f1583422c44f56e0d062bed39ab3f85f572b215ab0fe152d4f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0095_0972_colorzerolagdemarker","category":"trend_following","dependencies":[],"entry_hash":"17af3280deb1e32a0c2cd63e18280043d7e25474ce7736b3baf39a08e6567191","functional_test":{"relative_path":"trend_following/test_0095_0972_colorzerolagdemarker.py","sha256":"182f61912e6c8dac80ff887ef774fbf5ae2140b5f681236c8bf708c73431eacd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0095_0972_colorzerolagdemarker","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorzerolagdemarker.py","sha256":"b10cdf40b14078375f3d528125f23441769445d7cbe6a8d60dea404c9d923d52"},{"path":"config.yaml","sha256":"3603bb232e392cdf3681c1259081aaf0cffecb7070c95303d80a6217c7db0d54"},{"path":"run.py","sha256":"c768e5fa89eb8965ec6aa51858ee6a64b6af6e2b58676b40782e32aaff21b47a"}],"relative_path":"trend_following/0095_0972_colorzerolagdemarker","sha256":"87b693b73f0706257c504975761e346178257ba6f5c6601543e1c2c388e88604"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0096_0976_laguerre_adx","category":"trend_following","dependencies":[],"entry_hash":"f5a2dfc727dbbf96a9c3d6435949ca93aad7c3e325186d3a88d201882c604c6e","functional_test":{"relative_path":"trend_following/test_0096_0976_laguerre_adx.py","sha256":"a9286f168aa13097364d5f7051b26242318f2c0ec859d6fee8d38198c61edc89"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0096_0976_laguerre_adx","source_available":false,"strategy_package":{"files":[{"path":"strategy_laguerre_adx.py","sha256":"817a68f422999245d2e44f5fb48d25bd04c9ad047bd24c1e6bc0494479260bae"},{"path":"config.yaml","sha256":"64d5fa58ad2d2b95649affc1d41c3aadbf9697ce01364b35b9eff8c614e3ac37"},{"path":"run.py","sha256":"312c2144ad129e2f736f782ad36996fa98714e6d9330c2b591099460c9db2e0f"}],"relative_path":"trend_following/0096_0976_laguerre_adx","sha256":"83e1209c136978c1a2992b5132dbb9da383b8b4ed6015c83c852749dd7ffbfa2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0097_0977_laguerrefilter","category":"trend_following","dependencies":[],"entry_hash":"b2026288aefd473e191e11b2cc7d2ee18519ca53656bb41f332e28e15bd43e02","functional_test":{"relative_path":"trend_following/test_0097_0977_laguerrefilter.py","sha256":"dbfca5da555946c610de7d8d2083f0cf971cf16c5c2cd4f0b0848ea52fc8909a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0097_0977_laguerrefilter","source_available":false,"strategy_package":{"files":[{"path":"strategy_laguerrefilter.py","sha256":"6691a16fd3238935b19b737808b0f434d87479a26be079eff42c483796bd39a2"},{"path":"config.yaml","sha256":"ba31c1a194b444d0e1e65d926ed4912b599eb7bd7fe1d8a54acd4d47af964616"},{"path":"run.py","sha256":"f1968123971f0bb9dbd2f331a3cf3c1f29d08e1288ac7b3ef5ca9d7c044794e0"}],"relative_path":"trend_following/0097_0977_laguerrefilter","sha256":"a793dc17c1ded8bb36e2222994b344a2d4ed0bf293a844707bc877a6ffcf1270"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0098_0982_derivative","category":"trend_following","dependencies":[],"entry_hash":"5af69882bd4cd00227ba741dd5cbf3241e5ace103073551cbcbe570b883c4002","functional_test":{"relative_path":"trend_following/test_0098_0982_derivative.py","sha256":"b40812456437ce5b461fa0b3b132deef90b2cbe8b9030544b2a052431f5befb0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0098_0982_derivative","source_available":false,"strategy_package":{"files":[{"path":"strategy_derivative.py","sha256":"a20073563d9efd7e5a64a15c4347aac31d560ee02aa5fe5bbc23864d7efa288b"},{"path":"config.yaml","sha256":"b7db4ad443a90d14cbc669ef2a80786cfd66329a4f2367f1c0b390fc37ec7c1a"},{"path":"run.py","sha256":"446083f119fa714519fab223e7d3d086945ccdda64632a166f010c9c5c90b662"}],"relative_path":"trend_following/0098_0982_derivative","sha256":"549551b4f99f60607f77c9c7ecd260e7f29b68ed76600fa9d909af716525ffd8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0099_0989_instantaneous_trendfilter","category":"trend_following","dependencies":[],"entry_hash":"698e0cabba6f15d5b6d68a3e682e68130d59aa04155dc999051173b3b59968bf","functional_test":{"relative_path":"trend_following/test_0099_0989_instantaneous_trendfilter.py","sha256":"9f221f8c0218b72d2050747485337129295de99e28efdc29e65a28ceaad6f541"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0099_0989_instantaneous_trendfilter","source_available":false,"strategy_package":{"files":[{"path":"strategy_instantaneous_trendfilter.py","sha256":"1073592bf272c058ff811d693ce71a12b10c2947549591001e06389fa500a420"},{"path":"config.yaml","sha256":"75a9b93197f162772dc054fb790bb0361c3ced1ec982065539ab2999a770cdee"},{"path":"run.py","sha256":"9b41cc9061998aa14736e4de6700c25255600cd45636f6819abfe844ddf559cb"}],"relative_path":"trend_following/0099_0989_instantaneous_trendfilter","sha256":"fd06a179c76b1f8177c8ee8c6b9232a3acb9acc6d821ad4fefa3d68ae6f06590"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0100_0991_colorzerolaghlr","category":"trend_following","dependencies":[],"entry_hash":"1603f5f6fdca6168f30d72b872f8924bedd43933e4be3ab8ac3626fae34af65b","functional_test":{"relative_path":"trend_following/test_0100_0991_colorzerolaghlr.py","sha256":"1c6bbfdc868108899ea725606d45d666c15274f0d0665f618a2b287115e3f259"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0100_0991_colorzerolaghlr","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorzerolaghlr.py","sha256":"43c3f8918fa1ce4ce1d6688dd68323c205f8399641e729dc0a06820ef349d225"},{"path":"config.yaml","sha256":"a3bd6de405673d37b616eadebc1dab0843288cdedd33ea66d285f9a14557ee66"},{"path":"run.py","sha256":"9d6fadd08f93c89fa898129bfce0b3057d9e6c69aea4db091403801dcd6b322c"}],"relative_path":"trend_following/0100_0991_colorzerolaghlr","sha256":"6f3f3a2e787aebdc7c9d3fac68dbf123a4ad7f89fd04426a0d6e5b9da0a05ee8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0101_0995_i_trend","category":"trend_following","dependencies":[],"entry_hash":"124d956c80325883a317be7a9d5412bd2b5d033cd558d14580383024fe3e8ab2","functional_test":{"relative_path":"trend_following/test_0101_0995_i_trend.py","sha256":"eb8f0c902efb4a16537195062b2b8e6ccf745d34c08d097b202ffc733effe2cb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0101_0995_i_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_i_trend.py","sha256":"6a7bbacbcf6913534c51d76af28c2120f215b5af5633e33e5e12ce9d56bb5138"},{"path":"config.yaml","sha256":"52171b2e680a30b7052731c7944de044fc15049b772c2bd5f14c35b01df294db"},{"path":"run.py","sha256":"55f7e7b61673ae105137a20485f22b164b56cbab16eb02916eb0ffe497c075fb"}],"relative_path":"trend_following/0101_0995_i_trend","sha256":"fb12a3a27d4f0f909eb0eb4ce15f930bd39e732d02f8bd728ebe63d0a8aeac76"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0102_1002_fractalama_mbk","category":"trend_following","dependencies":[],"entry_hash":"718235678871582e45a7ff37d0d5107877081a2f8e62f7271dca9224fb9ca9a7","functional_test":{"relative_path":"trend_following/test_0102_1002_fractalama_mbk.py","sha256":"78717f6aa827407ff019085724cd29ae7ee8a06a5524fa4db052d44a8051d5b9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0102_1002_fractalama_mbk","source_available":false,"strategy_package":{"files":[{"path":"strategy_fractalama_mbk.py","sha256":"823e31c9b82002d04b5e70571ec3cc06b658ca1b145b33367f0ecc4eb65f68d5"},{"path":"config.yaml","sha256":"d415a837bedbd888f8731343f61cb10e6c8e4a7553639d1dd1179c7a926cef44"},{"path":"run.py","sha256":"6e16c3deab4fccdc29dba1745d44acd7a3b82d0888375e22df62e34d404a10e3"}],"relative_path":"trend_following/0102_1002_fractalama_mbk","sha256":"0893ae6d65a1946b7e4696a73793573a770371d93d6707387fba88d37c4b22b0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0103_1011_ema_crossover_signal","category":"trend_following","dependencies":[],"entry_hash":"b3bd46ad576afc4fe66e20a194362ec814876e0113510a5ca097e99990abcb4b","functional_test":{"relative_path":"trend_following/test_0103_1011_ema_crossover_signal.py","sha256":"d99e17edd62b36f016b3ab503fcdc4405ca12a87a08302d5c4a4deddc7c3e3c8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0103_1011_ema_crossover_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_ema_crossover_signal.py","sha256":"105112a576a7010b519e0e738247ffcba5dbcf70699622b47b257331051e09b2"},{"path":"config.yaml","sha256":"47826728ce03a32e196e6f99b8525f0129e8fdbac12704c6b961c06778bb9a75"},{"path":"run.py","sha256":"6a794db7befda8e81221018dce4ebb9a1ba58b10167e7a7678de085ebf745689"}],"relative_path":"trend_following/0103_1011_ema_crossover_signal","sha256":"7dddbcdbcf55100acbb542e0ac51be482d6f21d62030e5e93ff6181c8697be52"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0104_1019_color_schaff_wpr_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"913aeb7ceb75010a82149a5a143b0824229052fc4c5e72275ba948293a62763b","functional_test":{"relative_path":"trend_following/test_0104_1019_color_schaff_wpr_trend_cycle.py","sha256":"5b4d70870b648241c11a7e616a9940054f23b547be0ee5b1f877129008371503"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0104_1019_color_schaff_wpr_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_wpr_trend_cycle.py","sha256":"adc17f2774e1bd72f555dd131eb09f0b06cb4638a2057fb40983d4375dbb7407"},{"path":"config.yaml","sha256":"f03a5ebb4cf8af3fd50502c3d7a45b4f40ca613e9b1be3b0c1922fc9c918732a"},{"path":"run.py","sha256":"b5dee53b949f4744ee4a5482a2a8fe0fe520e07b82b9398cca3ae422d0910139"}],"relative_path":"trend_following/0104_1019_color_schaff_wpr_trend_cycle","sha256":"46f47f94ce1f8f43b6919ec907fd32e340e5ca004d73145b531c5e27b180aa9f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0105_1020_color_schaff_trix_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"83ca13271d79814febe87642e29ce80bd5586d9de6c814f2a409b1d91a590cae","functional_test":{"relative_path":"trend_following/test_0105_1020_color_schaff_trix_trend_cycle.py","sha256":"9914879f40da97ce8e14c2b0aebcd880af407765ba264d3db57c27383839f9b8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0105_1020_color_schaff_trix_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_trix_trend_cycle.py","sha256":"b12658d47b8c12dc1e664ce0b27ee84e16b719d510045f550123e80d5d0bc749"},{"path":"config.yaml","sha256":"dd2f2899d40e9fb9f93f2b60a8c151d77f7f25240059647a52ce7cd11d7786a3"},{"path":"run.py","sha256":"c6f447b0f1109d9d90124580cd66539d6d6d00c4b2c8fca5852340e88020891a"}],"relative_path":"trend_following/0105_1020_color_schaff_trix_trend_cycle","sha256":"219b6a0cb45b86420ad877f39b2b4f18d3b8a73a255e0a8deae1ad89309e0f97"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0106_1021_color_schaff_rvi_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"b0e7e8738e3a80660d22113df1cb7064bf53ac1a9348485ca528e8ecdf7697e7","functional_test":{"relative_path":"trend_following/test_0106_1021_color_schaff_rvi_trend_cycle.py","sha256":"0f64f0d1b05dad54afe6bcab5d971ed4c25c7b03ce8efe0091cf2257f87ec003"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0106_1021_color_schaff_rvi_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_rvi_trend_cycle.py","sha256":"d972724dc7f10255908855fe729fd12391bb518ffa8a5241dfaa17d0813c8fcd"},{"path":"config.yaml","sha256":"cf5f5b5d069253f0dcae3767adcbb390a901382a64693d124f7f0fabfaf23071"},{"path":"run.py","sha256":"ed3ed0c676efd52faf2906f69d4795d6b365c3fb81053413b0e5526841fd33a7"}],"relative_path":"trend_following/0106_1021_color_schaff_rvi_trend_cycle","sha256":"899365370d228bfce9d155118652d9a412959d3a7ccc46a324b8c3d868c78219"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0107_1022_color_schaff_rsi_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"8c37be0461022f5d665adf7ada0aa06404b9454c12d7a39351c346acb07ccf25","functional_test":{"relative_path":"trend_following/test_0107_1022_color_schaff_rsi_trend_cycle.py","sha256":"44fccb7e0b5b2d542465bdc06abd7ba4156031a96e59cd063678677a0d02ee2c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0107_1022_color_schaff_rsi_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_rsi_trend_cycle.py","sha256":"78071f9407bb210919224d9d6ae0a8ef6ba6c552eb892e78a78b2a4f86f6e568"},{"path":"config.yaml","sha256":"6dd809d8ab497f6f85428775df1935076dcdfb18e21ea048cb2aa48156393973"},{"path":"run.py","sha256":"937d74c9fddbfe45f3e289eedf38a4b95ab6d0554dbb71986d5454cc5e497bcf"}],"relative_path":"trend_following/0107_1022_color_schaff_rsi_trend_cycle","sha256":"1c2c15940568cd21623c0588de60888d0d67fbf487c3ad8b21d2436e2f1d6cb8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0108_1023_color_schaff_momentum_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"3bdbb022048450ac6f796957578d946c7fcefd6f296fc95f76f0b4ee38fd9a99","functional_test":{"relative_path":"trend_following/test_0108_1023_color_schaff_momentum_trend_cycle.py","sha256":"f2e5473839aaebbad8feb3857a9ccbbd4247ad0256865dfc922cc48c06abc2bf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0108_1023_color_schaff_momentum_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_momentum_trend_cycle.py","sha256":"8751aa4e326e59a39a2567dac18f3a10e5577cee9487458b4f50118dde97982b"},{"path":"config.yaml","sha256":"0c874a2261800028069778f4a1f1e5a203b8ffe85fd8723534854025760e9439"},{"path":"run.py","sha256":"ee76a26d70e0e6f19e22201e107ca0d74ed574060a6551f31fbcc25ba93ef35d"}],"relative_path":"trend_following/0108_1023_color_schaff_momentum_trend_cycle","sha256":"001eb940394ee0d0e3381abb746ddfb942cd06220915b1235549dbb08c6351d8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0109_1024_color_schaff_mfi_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"91f0dadc335b01bc07d65fa23dfa1b778c7b3bb1fb52bdf847c220a797c01038","functional_test":{"relative_path":"trend_following/test_0109_1024_color_schaff_mfi_trend_cycle.py","sha256":"c0f9b59b3d12169687eb5444d3c10ee88f8945898d5732e998d2c67eca608b2a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0109_1024_color_schaff_mfi_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_mfi_trend_cycle.py","sha256":"4fae0e21d168abbe911b1cb0bba37960e78ffa27165befa020c2cdf9751687f2"},{"path":"config.yaml","sha256":"390fd732ed000a41bf0cb556bfe91bd6f91e34ff9985aa323c0b30ac5a978956"},{"path":"run.py","sha256":"d40f209ba3f834af89298c63dd74821889e410231ba07aa50c509185983a7ff5"}],"relative_path":"trend_following/0109_1024_color_schaff_mfi_trend_cycle","sha256":"2e890a888a1aa3a170bd08f3e74e09627c162732ba6d164bbd317589abceae4c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0110_1039_adx_crossing","category":"trend_following","dependencies":[],"entry_hash":"58269e04a833ae1df47e1199417e60a345f34acc632e6a4a39c036623751208c","functional_test":{"relative_path":"trend_following/test_0110_1039_adx_crossing.py","sha256":"a974f111df40af692da9cc727ea8012b7c968f7188582d61843a36d7ff12fd62"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0110_1039_adx_crossing","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_crossing.py","sha256":"253634ade22d56a5f94d45b8b9b3fe0e476abc0a26523ef2ab9a90f2f4374042"},{"path":"config.yaml","sha256":"1193ec8c3cafaa446166b6a135db1429c09ac0a5c88f79bdc14213c1b168cc5d"},{"path":"run.py","sha256":"0c429217a0bc580e01cda8176a73e10d05dccf5ec135f56a5755d674048e2f30"}],"relative_path":"trend_following/0110_1039_adx_crossing","sha256":"9f1718c35653380395235487ef4f4a0bdd2490dc3c08285537cc1a69f025ce6b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0111_1069_jbraintrend1stop","category":"trend_following","dependencies":[],"entry_hash":"43f9b9283f8b2e59d61b8416cfe005d6afead4eb17f152cd80d69942d72be368","functional_test":{"relative_path":"trend_following/test_0111_1069_jbraintrend1stop.py","sha256":"d9d8c04d38ec94dda69dd0dc411fc1d682997c6630ab3436d6e4d66e56b04fd2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0111_1069_jbraintrend1stop","source_available":false,"strategy_package":{"files":[{"path":"strategy_jbraintrend1stop.py","sha256":"2247611baf5d0f1a011b9eb610e0ecdf444896671636d45c2ae402a46d4190fb"},{"path":"config.yaml","sha256":"0d5880085493c93df5f9931293d7a3262a94eee7fd539f126cea037fe751a1e4"},{"path":"run.py","sha256":"702a3290adaf2855439912d25875751ac64dc74c8342a684a8414468000364bd"}],"relative_path":"trend_following/0111_1069_jbraintrend1stop","sha256":"34afda2d25d24d62d3ed3f49298386dcd26f7647f1feedc9c0155dcb506ba9a4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0112_1078_kaufwmacross","category":"trend_following","dependencies":[],"entry_hash":"69f578c4a54051b6e7b7150cb3cca92a45af47519aaaa9175b7346f193450b1a","functional_test":{"relative_path":"trend_following/test_0112_1078_kaufwmacross.py","sha256":"d362bb6508e2f76b019e5c8331eba5751b5a3194644c35fedce3f488b4b1880c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0112_1078_kaufwmacross","source_available":false,"strategy_package":{"files":[{"path":"strategy_kaufwmacross.py","sha256":"7ff9053481808ad7c213bf0f523cc02d395eb5d87e97d8f9b8d925e93ea0ed1b"},{"path":"config.yaml","sha256":"3b2c959d9d52958e369bc0ab3cd7868f483c39b4be449b33d5169606e88bb26d"},{"path":"run.py","sha256":"e3e83f9b0ee7186b70f00c39302c19a331dfe69d6ef891b35d66c0f68e4d1c7e"}],"relative_path":"trend_following/0112_1078_kaufwmacross","sha256":"fdae2575ab63e6d4daa9731ace0b67e02fb4788192661cbfa5a02873c645237f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0113_1083_hulltrend","category":"trend_following","dependencies":[],"entry_hash":"735c688a15c1c1401b9c5d67417cb68ebdf356869550804154afd8ff5acf0946","functional_test":{"relative_path":"trend_following/test_0113_1083_hulltrend.py","sha256":"043ed204acd88d81447f832144c26e0c2142ed4114a73076295b35964607c177"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0113_1083_hulltrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_hulltrend.py","sha256":"a1d3072200da7c75a4f5acb761ed0ca139fdd3922ad055b97730cbdc57fef58b"},{"path":"config.yaml","sha256":"21a22f5a1ad2ffbcffd84513de3db4163ca583074e4162822f130df5ff7fbeb7"},{"path":"run.py","sha256":"4406b2c384e98f8ed7961ef55f0ee939e988aac70a0882d8ca0db92550d5edc3"}],"relative_path":"trend_following/0113_1083_hulltrend","sha256":"b8b0b09be3e9080c189cfda74d646ba2969ec3237910e24c555103a501af0d37"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0114_1085_trendmagic","category":"trend_following","dependencies":[],"entry_hash":"1107abd30ea135680212501032c8261c68f44a00521b232bddd8573898132a5b","functional_test":{"relative_path":"trend_following/test_0114_1085_trendmagic.py","sha256":"f0da2ec7028987fca8de991d46d94ada247658757ae805f35c8b9caa2589462a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0114_1085_trendmagic","source_available":false,"strategy_package":{"files":[{"path":"strategy_trendmagic.py","sha256":"3a8368b38936973a9d1cdb636fbd60bc2be8be9781319c6500a597739ecd7c9c"},{"path":"config.yaml","sha256":"c0ee0612aace338bc9dc0219ebc08ddfb3a8a3b09248d14c0b547ffe326dc956"},{"path":"run.py","sha256":"4a524d81a819a396cd863267a601daaf520a7420ec7b33dfb10f622a7adfcb4d"}],"relative_path":"trend_following/0114_1085_trendmagic","sha256":"ae11af553c4220449032a2a8f5b347b34117ed342b88bf3254d373611614e750"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0115_1103_altrtrend_signal_v2_2","category":"trend_following","dependencies":[],"entry_hash":"4e3a402d899651b8ba00e2a7850ac1c19e2affdb82ff1c047ee676a3915b16b8","functional_test":{"relative_path":"trend_following/test_0115_1103_altrtrend_signal_v2_2.py","sha256":"b9cfd173701c8ee00e38857e25098bf38e77ef7b08d9e7aecc4b36a343f3dda8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0115_1103_altrtrend_signal_v2_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_altrtrend_signal_v2_2.py","sha256":"68eb0bad15dddfe98de2760526dc70ae1b12bbdfc6620c16c8bc1c2a1a252855"},{"path":"config.yaml","sha256":"c56088383c17e8ed9de08976081f7af67d89224c8e0c10a6a451c7186dc9dbe9"},{"path":"run.py","sha256":"035042a08cae708b836234c7c00edc93db2ddc2dcbc354c16d6185e5bf3083ad"}],"relative_path":"trend_following/0115_1103_altrtrend_signal_v2_2","sha256":"508ea5898c575522f6d98751e64355dce9a84321c7be23be577a8d51f0410148"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0116_1107_macd_sample","category":"trend_following","dependencies":[],"entry_hash":"97e4a84bb546d6535e62f02f50e71a5b0764093d19ba02d64a640e7225ba64ef","functional_test":{"relative_path":"trend_following/test_0116_1107_macd_sample.py","sha256":"5c9ca318cc6301d1fbca2e71909738713c57d3c6953b8535cc22b10ca46844ba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0116_1107_macd_sample","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_sample.py","sha256":"e0869bdd7f1fca7201dbab531ec072007c94eeb2905c1af75f08d19ba756ea78"},{"path":"config.yaml","sha256":"b8d2ccbc9fa72a15469d16e6a26e0e65301dd28c9adf3cbdf5295e64f6de020b"},{"path":"run.py","sha256":"cd051dcf85ed074d9769691312e1b70f81b91197a2f3daac442a6fc5485af52b"}],"relative_path":"trend_following/0116_1107_macd_sample","sha256":"bd1fbd81f551103345f3541eb7da68b99ec38d498c7619bf018beb815a6b4426"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0117_1128_macd_waterline_cross_expectator","category":"trend_following","dependencies":[],"entry_hash":"e76a6056de4bb60c6e859b57f4dbafa092611388b1939f423f2c036c18729032","functional_test":{"relative_path":"trend_following/test_0117_1128_macd_waterline_cross_expectator.py","sha256":"4514f3185e56dbd6dc434cc3c4e2fad359fa382bae2e1cec9f51449867db0191"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0117_1128_macd_waterline_cross_expectator","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_waterline_cross_expectator.py","sha256":"f2f0d6bf013067f91d2e48cdf6e05ba1f8e7894ebcf5aae3963d9ae8dca51b4a"},{"path":"config.yaml","sha256":"3827a5e33e5cc93cb5160e0bb214ce032a70ba081e6a96db87ee34aaabd61385"},{"path":"run.py","sha256":"7c4cb06d4fc4e9f8af31e0bc6e777d1112cba56572a3519bd1bb8ba382fad0a5"}],"relative_path":"trend_following/0117_1128_macd_waterline_cross_expectator","sha256":"67e2607e3826c629bbfc6cc5fae6c438b4e7ea830d78d61b3b4641908e3c9ab0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0118_1129_breakout_bars_trend_ea","category":"trend_following","dependencies":[],"entry_hash":"5c7271659ec13c7caefc2fe344f20b37aab725725e929197d2888c3a06ebf0d4","functional_test":{"relative_path":"trend_following/test_0118_1129_breakout_bars_trend_ea.py","sha256":"f049494f5e9d3087e3067dd39f0a02847df8d20c0bedba1096da88b56211416d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0118_1129_breakout_bars_trend_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_breakout_bars_trend_ea.py","sha256":"4241835966a023891293c38aee07f4fa6ed6d2e7ef2ccb0fe5341df3dbe419f8"},{"path":"config.yaml","sha256":"49e5360f801c780f783d2b8be6be66a9c52eba9d291a9f9b2e6ada7a92562282"},{"path":"run.py","sha256":"1a70a1ecabc1044a0222e71a9c6ee1d1ad1f5535c7e635e20aac532e2a630831"}],"relative_path":"trend_following/0118_1129_breakout_bars_trend_ea","sha256":"1dc7ffd64c7a6e353490be3914e7ddfbca48e63dc5455e7f6394ac35369102c6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0119_1140_ea_malr","category":"trend_following","dependencies":[],"entry_hash":"b400387ceae01ef854e72cd685d7abcf8522cdd711ce683d1e320bbe043f5057","functional_test":{"relative_path":"trend_following/test_0119_1140_ea_malr.py","sha256":"482f492329ffa6ad2eb1a3de4925fcec75ddfd888eb2085136aa9f9b41503b80"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0119_1140_ea_malr","source_available":false,"strategy_package":{"files":[{"path":"strategy_ea_malr.py","sha256":"1c7d79254bd92a6a2b712b138a8be185f2bde6c3e69137139d8a7ae7d15dbb50"},{"path":"config.yaml","sha256":"5869ec7658cfe97b0307c489dffbf43e25794a4fc4fddebce14645545154631d"},{"path":"run.py","sha256":"beae906cef23b554c04e0883e8d132a3bcf65c6ea7262289a68dd192bff60cdc"}],"relative_path":"trend_following/0119_1140_ea_malr","sha256":"2d75181a1046e0d061fc76be1cdc4597afb67e69d13dd3685657b9a70720dd30"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0120_1159_up3x1_krohabor_d","category":"trend_following","dependencies":[],"entry_hash":"cdd721bc724ab8825c2bae2bfc4e27c271e74c53f2e562524b0464531b14795f","functional_test":{"relative_path":"trend_following/test_0120_1159_up3x1_krohabor_d.py","sha256":"d4f08a1dba7e9fbef99d3409d45e24a49f3f8f0b4feecf73fea9312f54c33a4c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0120_1159_up3x1_krohabor_d","source_available":false,"strategy_package":{"files":[{"path":"strategy_up3x1_krohabor_d.py","sha256":"aba692ec7c2bbb45c41bdb415c6c01e7ef77fa751ecce65328ca2366c47b1f2e"},{"path":"config.yaml","sha256":"93ff858f21b7d5885e7b6f76b819a1a3710c503f574b23afa037f2f172e61ead"},{"path":"run.py","sha256":"47a090edc91b3f6b5888a13299e9e6696fb34c7f3c95292d19b803a4c116a3a4"}],"relative_path":"trend_following/0120_1159_up3x1_krohabor_d","sha256":"0919642a4d3c0751074fdfc12ae2366f84ce717d079379647b334904cbcb5dde"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0121_1162_trendcapture","category":"trend_following","dependencies":[],"entry_hash":"915f95b586df58169a52c097ff8fb7c48f1e7df967436f6a0ba176130f22b7c4","functional_test":{"relative_path":"trend_following/test_0121_1162_trendcapture.py","sha256":"5df73fff6a7f9327a722ffdf05ff86e80bac87c02109fd62d0eb485635bd64cd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0121_1162_trendcapture","source_available":false,"strategy_package":{"files":[{"path":"strategy_trendcapture.py","sha256":"707c1a51c960d699a09cb5d3248423ca82b76356061f04d0301b7fab01704808"},{"path":"config.yaml","sha256":"2e1518717a785fe11cee8e1278d4cb7acc6cdd549a7a7b942fee716ebb3d167f"},{"path":"run.py","sha256":"e0d5f597c8501c87410bf3069611e03cde2c6abbe8154267d2987e7b03c9338f"}],"relative_path":"trend_following/0121_1162_trendcapture","sha256":"cdb0d223ea3c14feb7f4030b7675e932b355829ce6a359ec5f978ad1bd3d54a2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0122_1165_tradechannel","category":"trend_following","dependencies":[],"entry_hash":"e9b2d51aa4b38fe603ed94cdb63c66a0e42000673e44e8c01c4d767baf483a26","functional_test":{"relative_path":"trend_following/test_0122_1165_tradechannel.py","sha256":"9a2885be1489c3bf34ef2ef0fcf111aa4ac17b3ce5cb7a5680bcaf7da63b8861"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0122_1165_tradechannel","source_available":false,"strategy_package":{"files":[{"path":"strategy_tradechannel.py","sha256":"3a02acd908ec9b6dcda965f0dd2074a720a9b5a8284be0e8310c49533b8892fe"},{"path":"config.yaml","sha256":"570fc715394d8287778f114d8e879ca9cb7aac9817be6b6d526b89d2d6b981d8"},{"path":"run.py","sha256":"745762644397e27b1501a3a430ad0084d5da99211635ff5151942430bb54dbb2"}],"relative_path":"trend_following/0122_1165_tradechannel","sha256":"e5ebdeedd89c20d64c25b804a6951d41f9646fb0ff5c28f0eb79c9864f175627"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0123_1166_ma2cci","category":"trend_following","dependencies":[],"entry_hash":"0b387f0338243c1d794d5b591af94ba2acdd84fb601573b1ee03fcd25a98c1c4","functional_test":{"relative_path":"trend_following/test_0123_1166_ma2cci.py","sha256":"c054263146a8541d2895f692bd96ca535bbf1aeeb185b6ba4ed27bad1b904445"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0123_1166_ma2cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma2cci.py","sha256":"3e2f3b46f3c5891133b6977ad3625b8e5212096d35639281111fe932be2155a0"},{"path":"config.yaml","sha256":"fcae3f57691fe6b65b97aa5cb02f63bdc411562112a89a22175e5b7da76c0e4e"},{"path":"run.py","sha256":"70cbd97b3a4896ffafd757bf17fb54c0445f18c45d378bb4085232af278f0df8"}],"relative_path":"trend_following/0123_1166_ma2cci","sha256":"4f6e7f136af08cd3cf6b2467d31db0810c8ab34349af221ea5dc7e34ee84fc5f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0124_1172_ea_marsi","category":"trend_following","dependencies":[],"entry_hash":"5f7b745315b631dd21d76c56503a6c7486ad88df75f726c5d3d660b8f652908e","functional_test":{"relative_path":"trend_following/test_0124_1172_ea_marsi.py","sha256":"ed1a590a81bdd4d9895974a3fdbea86bec5d669916781e8947246548df158049"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0124_1172_ea_marsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_ea_marsi.py","sha256":"32db4e7a74dc5d095c545d99b3b89158aed23e0c21139ee403a807d0bbe057f0"},{"path":"config.yaml","sha256":"fad5ae4d00ea4ee50ceb111216f9706ea2bd868278aea44c894117ecdccbe046"},{"path":"run.py","sha256":"a21e4e3cdf2775a6ce432798ed912038c47531464c9e35dff9e7489798192f26"}],"relative_path":"trend_following/0124_1172_ea_marsi","sha256":"970bd9ee2550cb99fa4fb836f8e7af9acc7e774980fd0c507711f3624cdb3dfb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0125_1188_2ma_rsi","category":"trend_following","dependencies":[],"entry_hash":"d97cebd000a97e4ee1352fbe44698820a2da38bada226baf492d5c06354af0de","functional_test":{"relative_path":"trend_following/test_0125_1188_2ma_rsi.py","sha256":"0a90d50bf937607bac0511fe83242b91802cd8550a4e09da7534d0c7b48d6430"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0125_1188_2ma_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_2ma_rsi.py","sha256":"e4f91eb44cf33cbdcf18f403eadeb086385a500471d1400aebe59c6dc93d3518"},{"path":"config.yaml","sha256":"5fb63cace9c35db1b9774312d23399640e946d0fa928a4e2e8b6a131d89abe0c"},{"path":"run.py","sha256":"1263c8ce6dfd5bb705499c81e5b7b948c791ef4824bf45049ce8b8ae35f7bcde"}],"relative_path":"trend_following/0125_1188_2ma_rsi","sha256":"282b9eb2ad3174914c483216b6041c1810cd4fbda272f69ed1f1e3146b115ba8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0126_1189_adx_v1","category":"trend_following","dependencies":[],"entry_hash":"2cc9cc1a127c24c0e3ad15783a432aa20db4328ec902a8436e4f67b4e6e7a8cf","functional_test":{"relative_path":"trend_following/test_0126_1189_adx_v1.py","sha256":"55de1aba5ada025f996b17e041deab498544701c661179ccb8c1d48762348249"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0126_1189_adx_v1","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_v1.py","sha256":"bf21608f796dfc32ec4bfc3d81a25e6b2caabbb3b5273178727560f4b5ea095c"},{"path":"config.yaml","sha256":"299fe80e4251e5553c74067a60728ac5412c1e1eb447220c1cfcaf260108cac9"},{"path":"run.py","sha256":"2a2771fbd7e67c8b0324874f1e6614da8e3764fd8971b93e61f1edf5b8f5bc60"}],"relative_path":"trend_following/0126_1189_adx_v1","sha256":"60864663d713920b0764840557f9df70709462955235f44e45f213ede2109e08"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0127_1192_bb_dema","category":"trend_following","dependencies":[],"entry_hash":"ec1af95bfd365ea82b6f35088cc63a25f2e953dae5a89b163949bd8106e2b8b1","functional_test":{"relative_path":"trend_following/test_0127_1192_bb_dema.py","sha256":"1ccc9a74b82e16b221196332528782eec771c4ca03f945c05925a08fd162fdb0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0127_1192_bb_dema","source_available":false,"strategy_package":{"files":[{"path":"strategy_bb_dema.py","sha256":"9fd34047b70cc1e1d92175fb7d66f67bc92b5468d5fe9bdd6934e0a70595feff"},{"path":"config.yaml","sha256":"1b99f74abc0831d85819e3671fddbdc86be2e4c16dc445063517f71ccc1640ab"},{"path":"run.py","sha256":"50f2daaf0e8f50315951b9d99f2ff2e495ab65b4bf53ae132cf47c4460b96f24"}],"relative_path":"trend_following/0127_1192_bb_dema","sha256":"ea613368da0f686375d6a7a68f5e7e7af426717f29159e69c51328f50dd5184f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0128_1193_dual_trix","category":"trend_following","dependencies":[],"entry_hash":"0efc5f2f271797c9d3365d710fe6657b644d6424e2fe43578ef01a772c8658f0","functional_test":{"relative_path":"trend_following/test_0128_1193_dual_trix.py","sha256":"be3cc155add945f83a63826749bf0cd4ffeb04223267b6d2ad63a265556c7c13"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0128_1193_dual_trix","source_available":false,"strategy_package":{"files":[{"path":"strategy_dual_trix.py","sha256":"379960164164c1a43a433a72da6903ab6396b1eabd579549acc105373b6c61dd"},{"path":"config.yaml","sha256":"a14c3729b9b5c23db00bf861d74546eaf035731f25075c8e0796a4cc02ff4872"},{"path":"run.py","sha256":"df2b508252a2a4cf37150618ecb970c25f9b88d8da11958198c47bce7085a930"}],"relative_path":"trend_following/0128_1193_dual_trix","sha256":"2240598d62f011d43d58304dd6f06e1f84d5d60d69d1b73666d2d6f77562e2d5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0129_1201_puria_method","category":"trend_following","dependencies":[],"entry_hash":"21bea6e45dfbb2445091046c85c6ead5053a75097867b743f7194a1ebc25d7ad","functional_test":{"relative_path":"trend_following/test_0129_1201_puria_method.py","sha256":"49ea7bea1346939f93192965a154f494d976fdf3ee64cc43acbe9164c29c93d2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0129_1201_puria_method","source_available":false,"strategy_package":{"files":[{"path":"strategy_puria.py","sha256":"3280251256c883b6aabc1084987644ab087354a6e71243964fc5fedbd97184ca"},{"path":"config.yaml","sha256":"3db48e08dc720b37c7d39981ff46735f383793e73b952f8706ce8a5e94c4c9fc"},{"path":"run.py","sha256":"ca01ed490b24aa4419691505539fedd4c9796b2e621316031d7fce1c36defe49"}],"relative_path":"trend_following/0129_1201_puria_method","sha256":"5d5c6a069fd254a2f8a425d5a5124162553c2aa8565a2d8c0b0b9a8e9e36d84d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0130_1202_rkd_ea","category":"trend_following","dependencies":[],"entry_hash":"c0531376861c382ce555fa9893f644493e6268a3f215bb8608c0a5f2d6290816","functional_test":{"relative_path":"trend_following/test_0130_1202_rkd_ea.py","sha256":"e936654bdfbee6568fbf35487046cc8c0fce9905a1c7944a7db28724129f890a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0130_1202_rkd_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_rkd_ea.py","sha256":"ec4a3e172a584ed620aa894be2140cc03e06656510140beba935b604452e61a9"},{"path":"config.yaml","sha256":"f0b26db0f41d49c120a007ada4f477a381946297fd59517b676d6521d00d699d"},{"path":"run.py","sha256":"535217e69af87dda387e902ea3c7b63cda7bad07438e25afbad247ed9c745343"}],"relative_path":"trend_following/0130_1202_rkd_ea","sha256":"f79db71338d502183b9b987a88f51dd23ed32ca4801dc70e0d3627193426426b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0131_1210_candle_trend","category":"trend_following","dependencies":[],"entry_hash":"7ac0f527ec68961b9bc3a80b1ee5e2da0f2d5e192bb24c5585971210ea4ea378","functional_test":{"relative_path":"trend_following/test_0131_1210_candle_trend.py","sha256":"90a76d52f74a63a9322ed461505dfcc0e3c1b668ff4de0ed0c5fc541adde0ff3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0131_1210_candle_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_candle_trend.py","sha256":"5c1e7b211a055dcebeec28e4b703db6bfee58a195de86d7bb936601a76c2933d"},{"path":"config.yaml","sha256":"75473d60f1c8aa1d84fc0093d6b968829310b2422f3259de76204344c0326e76"},{"path":"run.py","sha256":"d34027b7f22e3a6868273124c56e707590023cbec322388db8404d95fecaed5d"}],"relative_path":"trend_following/0131_1210_candle_trend","sha256":"38548e9e7ad8dedc38935aaa492cbaee3f24f17f0339efb4ea1219749421ba1c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0132_1213_mbkasctrend3","category":"trend_following","dependencies":[],"entry_hash":"fbcfff203f40493a8048c19cd178cf21d7e2522630dcb9224daae58df3d92c18","functional_test":{"relative_path":"trend_following/test_0132_1213_mbkasctrend3.py","sha256":"ac48e399b258e5e323db9825be7134eb4a4cbbe65cd7bc0d4d911681ce9a348e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0132_1213_mbkasctrend3","source_available":false,"strategy_package":{"files":[{"path":"strategy_mbkasctrend3.py","sha256":"6a917f5fd1de9b1941ea143ed69963c07484dbe5c817e5d9ecb3d1e88187800e"},{"path":"config.yaml","sha256":"c2b2ec6a9e76b415c967764e412fe76220878afe1ac758dbdebddb6913781b7c"},{"path":"run.py","sha256":"752f608340b6886646fd70ae5796263efa6216061b05ffdcb6db0895a0b302ec"}],"relative_path":"trend_following/0132_1213_mbkasctrend3","sha256":"2d232de4b25d6dc7774f3fe4ae47753907a5da4201f7720dd3f67de12194d23c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0133_1219_multitrend_signal_kvn","category":"trend_following","dependencies":[],"entry_hash":"69658494ae0cd3ad2bbf6791f28653b91f9dfdbb3ec29d67650db362bc0bd4e6","functional_test":{"relative_path":"trend_following/test_0133_1219_multitrend_signal_kvn.py","sha256":"5e23efdc98af071c060da945e1f90cf4529a051eb1861a702a68b8e7dcf20c22"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0133_1219_multitrend_signal_kvn","source_available":false,"strategy_package":{"files":[{"path":"strategy_multitrend_signal_kvn.py","sha256":"a47651e067ae31af5b5a61c6db748f48ca94ec9b14148ca4250622ae5c0a6609"},{"path":"config.yaml","sha256":"cfea78d8ac612bb601c53a555120bf4b36e0003b8801a0dfade2d93620c03ed4"},{"path":"run.py","sha256":"27e6e588419b26a5db3593c33930aab98b41eac3a67f7fda5322f10504a812cb"}],"relative_path":"trend_following/0133_1219_multitrend_signal_kvn","sha256":"444bf7c3dafda8e85b798c4a94e6d21377e3a7f8c09b7a59ccc1eb1f9a69c35c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0134_1220_colortrend_cf","category":"trend_following","dependencies":[],"entry_hash":"190a991d6608d250b85b569c19225ccfbe3e9112642ae36f01955ed7f2365063","functional_test":{"relative_path":"trend_following/test_0134_1220_colortrend_cf.py","sha256":"574b3c2e20bd17708831fa81b635bae7ce6ae67ed1bda65b96a4c45f4694b7dc"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0134_1220_colortrend_cf","source_available":false,"strategy_package":{"files":[{"path":"strategy_colortrend_cf.py","sha256":"d9894ad53210e261468ad61c7d95667a5835ed4ee35cdc8cef607550468d549c"},{"path":"config.yaml","sha256":"a3ce2ca7e74ae65fa51533a71af8807ba1679a0b1f317a1259070c2e14b44026"},{"path":"run.py","sha256":"3fae51fcd37f180b861ffa88046b41e710308b002b588019d0b19a36866089c2"}],"relative_path":"trend_following/0134_1220_colortrend_cf","sha256":"d79f1eb1c47c27faefcd6450d54f674f2818ba4d6b4934cd97087e2fe3b025e0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0135_1221_color_lemantrend","category":"trend_following","dependencies":[],"entry_hash":"fc355a7d37a48c277c72e6e511e863a40029bb4edfdea57585bb8cf5a898d595","functional_test":{"relative_path":"trend_following/test_0135_1221_color_lemantrend.py","sha256":"23b4752092fa3b81477a2b6dff95b9e0102f5cba4e79c95945671b6aafb127de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0135_1221_color_lemantrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_lemantrend.py","sha256":"1182dc3493bdb7140f58e28fb5104d823207b1b748e681c30ece947888fa681f"},{"path":"config.yaml","sha256":"90b19ed9c77b1f94c10705f018103a9a70122c88fc6b31486fc23a69d2f94037"},{"path":"run.py","sha256":"340ff8553636e3857c95feeefd72ef759af0905518a92f93b0414eb645ac0124"}],"relative_path":"trend_following/0135_1221_color_lemantrend","sha256":"eb3a77ebf9e9bc5d6def32a2f708d41ae2ed00ad571e8e7de91e3ad1f7857dd9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0136_1226_adx_smoothed","category":"trend_following","dependencies":[],"entry_hash":"d2f37bc0aac7d98426305ee0c6a25fdc7156d624f830a9ff97502d4e32e62d71","functional_test":{"relative_path":"trend_following/test_0136_1226_adx_smoothed.py","sha256":"bee6258b929a5856c373a1018e990981494a9c0e4eb1fec1fa9d2d4ffec70ff7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0136_1226_adx_smoothed","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_smoothed.py","sha256":"5aea2544ab76df9f89a7aca6849ad1aab770dab63ae09c58c7d684c6c28bd474"},{"path":"config.yaml","sha256":"6bbeb6f03b161c65e66abbb97900a2b37f981ec00c42a0441e1be854d0286ed7"},{"path":"run.py","sha256":"4f0ad1befc2ffdc3c349ee68e87f6a080c8d274c8b0ef669ea3d7165f5bf3888"}],"relative_path":"trend_following/0136_1226_adx_smoothed","sha256":"0b0c2b31b261a0d8944077d59376555c1483e0a033d74848702fb8eb3701b847"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0137_1229_vortex","category":"trend_following","dependencies":[],"entry_hash":"75730b33dd74aa2c096f479d84ce18f6cb6573260bfa5238c1ff93334867a9ec","functional_test":{"relative_path":"trend_following/test_0137_1229_vortex.py","sha256":"bb35d9423c64109008a44febb4b04dcffd606d825b0c17c8110b91c3a9566926"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0137_1229_vortex","source_available":false,"strategy_package":{"files":[{"path":"strategy_vortex.py","sha256":"1d862f312ac48289c888241b6968a9dddeb366a4a4502f2533476d12143089dd"},{"path":"config.yaml","sha256":"bba77448f0dc409a791a9d6f9975e739b9d57f42ad442623e8bf791ea318755b"},{"path":"run.py","sha256":"b78b8b836d6266598c4a6ab7e5844e2ae75c27aad67e1468f829354aea8083a3"}],"relative_path":"trend_following/0137_1229_vortex","sha256":"efa255dafd0991b08d0a1efc7945119c3758da578dfe2f77c66de07a8eddc223"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0138_1231_trendvalue","category":"trend_following","dependencies":[],"entry_hash":"de1ad19fde6ac5a1a8685f68ff7d0fc92e37c70c458150d7f66db6252121ba28","functional_test":{"relative_path":"trend_following/test_0138_1231_trendvalue.py","sha256":"9b8cbdf78616d21869dfcc15d70077cd003473f937b92a40d3a409c97edb99fa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0138_1231_trendvalue","source_available":false,"strategy_package":{"files":[{"path":"strategy_trendvalue.py","sha256":"9412ebbc7ea9f0bb00fa01685471144810885f5aa9edd1db737341d4e62255d1"},{"path":"config.yaml","sha256":"76dbd1ab9f118e5c7fd2003c866e2d4ba186f773e9e35316019908667536d70d"},{"path":"run.py","sha256":"e934cc2508795a572be1d0c9e666a4653bb97dda869e5d9a5c910240d52105a3"}],"relative_path":"trend_following/0138_1231_trendvalue","sha256":"d89e280c2cd937d8b639bb966b261aeee582137f353b3ef369e8d53f62f6339d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0139_1232_supertrend","category":"trend_following","dependencies":[],"entry_hash":"8863399bded66c7b9669dc1f854fa3eb967e80a8c3d6677b302b9c8d9518f802","functional_test":{"relative_path":"trend_following/test_0139_1232_supertrend.py","sha256":"289d7a969992cc2ea30f89f38f9af2cc02f36f25b3566d10087b2a18970ce035"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0139_1232_supertrend","source_available":false,"strategy_package":{"files":[{"path":"strategy_supertrend.py","sha256":"2bb1a57ccbe5fd003ba31751d04dc548f7b90cad7b306aaf119b185b7bebbd6c"},{"path":"config.yaml","sha256":"a10d52e6b260f32df1fc0e79e8e40bd1b596b815f21aafade23fb810ac470a16"},{"path":"run.py","sha256":"58108125b8b489f1531392c9fa7806ebe426d8b37193d10a074ac0532e6092a9"}],"relative_path":"trend_following/0139_1232_supertrend","sha256":"376207eb54093757fdf65fd7e77a2779c588a4706227395f1b5cbffe0d0dbf02"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0140_1257_atr_trailing","category":"trend_following","dependencies":[],"entry_hash":"d3fce669fc0e56b90a1d8e5ea87fac8cb3b8e12aa565736877669b626a73a0cc","functional_test":{"relative_path":"trend_following/test_0140_1257_atr_trailing.py","sha256":"a7e506ec8f97db88fff41afbdbfbe597ac2b68797ea1c276d90952909e1d65e3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0140_1257_atr_trailing","source_available":false,"strategy_package":{"files":[{"path":"strategy_atr_trailing.py","sha256":"55a59a947281180a9af06f1b016791a90c94dca0414300b5ffd7aea873b2b794"},{"path":"config.yaml","sha256":"1675f84024740bb7e39bb33401014c75c30c184758eb1661530393bfb6b3dfab"},{"path":"run.py","sha256":"cc061c9eff3e5725787aa2dc4b4b1a4619817de0710a61a8a16ce1d8370e3395"}],"relative_path":"trend_following/0140_1257_atr_trailing","sha256":"57a883868aa9ef09e61260b5b880393476128d0ad3b68af5af9d68250881a365"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0141_1263_trend_continuation","category":"trend_following","dependencies":[],"entry_hash":"16f75f5c96fddced47102fc48f33b00eb08d85641df6495e16b1905ac7e9109f","functional_test":{"relative_path":"trend_following/test_0141_1263_trend_continuation.py","sha256":"1434eebd3947da2f1f1724708a548db961e43a5612526a478edb567f0986dcec"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0141_1263_trend_continuation","source_available":false,"strategy_package":{"files":[{"path":"strategy_trend_continuation.py","sha256":"0e2f9c6225f6e201ebf76a42173d9395d651a9d3400d5f05a95e882fb81d0455"},{"path":"config.yaml","sha256":"a4cb7a817e76c32fa046987e47dea6994157e4ee07a5d82b7c628649da2234f5"},{"path":"run.py","sha256":"f8a3a331e8076cb6bec16a2b50038b576881ecd56d3123805673740e4c286847"}],"relative_path":"trend_following/0141_1263_trend_continuation","sha256":"6638d5db008ced5fb0f24a500fb240666d34c8bcdf331a3e17a458b2ffe8c271"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0142_1266_adx_cross_hull_style","category":"trend_following","dependencies":[],"entry_hash":"0a11dfec1688ed2092142db1ca71c3e597a979811e4f856173af8e2d02124b65","functional_test":{"relative_path":"trend_following/test_0142_1266_adx_cross_hull_style.py","sha256":"44fdd44a4d8e3eff8acf599e3dce14a613e41538bd94bc0d60042b43c251650c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0142_1266_adx_cross_hull_style","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_cross_hull_style.py","sha256":"dd63c4d178ef8f01f9ec23d83d3ceea1f17104126f9c68160e1f1373a36d894e"},{"path":"config.yaml","sha256":"9996dae15272ff225db86652c3559a2fd1a5b32ccbbe2c6a37c41c3c878fb076"},{"path":"run.py","sha256":"e43c65d525fd06ea35de95e6a5d382e081593031b3090d21961ba8aac23d260a"}],"relative_path":"trend_following/0142_1266_adx_cross_hull_style","sha256":"9c9b506cac7310c874be661703850f3b7f8cd9ee5641a752159fe42ec4fc8333"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0143_1267_color_schaff_trend_cycle","category":"trend_following","dependencies":[],"entry_hash":"b10c72bdb01cda4ab53826ce3b37dcf9d1252625278601145e739be6cbae85a0","functional_test":{"relative_path":"trend_following/test_0143_1267_color_schaff_trend_cycle.py","sha256":"af6f1cfb02774059d3f55c6d8184d2c50467478059f653d482aaae1aa509c5a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0143_1267_color_schaff_trend_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_schaff_trend_cycle.py","sha256":"21e0d8eab72c056840d173ad0a6ff77d8b975bff538ea3ecae3f6ac3b48952bf"},{"path":"config.yaml","sha256":"fea2d612d9f53220b513075215ddc50a210509cac0b46a7afa5f2a3c3907d38f"},{"path":"run.py","sha256":"24826a27b10c54058993bb024f4971f76055c9ab2ad67e786d1d73cc93ff8eb4"}],"relative_path":"trend_following/0143_1267_color_schaff_trend_cycle","sha256":"1b65037aceddf0729f99d777032dbee59b5caf0f1746792b78c9d9649890f160"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0144_1268_rd_trendtrigger","category":"trend_following","dependencies":[],"entry_hash":"41d2595719f6dfdf21d128a75fd2c13702742ffe3876c38ed9b6ec221342320a","functional_test":{"relative_path":"trend_following/test_0144_1268_rd_trendtrigger.py","sha256":"afddfabed25385872b41e11c868071a72e9075d2bc8d356be790f59fcb036ad3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0144_1268_rd_trendtrigger","source_available":false,"strategy_package":{"files":[{"path":"strategy_rd_trendtrigger.py","sha256":"6a824218d007d9861699901ff744dbb04b3e172dfde9b5472514c5883610e165"},{"path":"config.yaml","sha256":"847667f318ac4ef1fb947cd6204f425d7d9e2cc981697b6abdc0fbdfcff3d1bf"},{"path":"run.py","sha256":"645a56dc70488edf92b834ba69d3038e41e9ae67c8fbc48d87bb182768aa620b"}],"relative_path":"trend_following/0144_1268_rd_trendtrigger","sha256":"dd019c020eb77c611ab93f8d91c86d8c4b95671e26b0abb409ba64b667716e72"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0145_1271_vinini_trend_lrma","category":"trend_following","dependencies":[],"entry_hash":"cc375e0a9413aee5a6884da1db8725ade414581132ad08172c885bcce21815e4","functional_test":{"relative_path":"trend_following/test_0145_1271_vinini_trend_lrma.py","sha256":"db792e075d85e04b444efd7ebcdc2f9668f157b43205557a79c51607aad259d3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0145_1271_vinini_trend_lrma","source_available":false,"strategy_package":{"files":[{"path":"strategy_vinini_trend_lrma.py","sha256":"379bcc84308978ce911464864bba72ba4efabf61b87cd3337c3e3fe049bd52f4"},{"path":"config.yaml","sha256":"1b5e9021bbda1baeab7758856b09cd808784abb6fda6a1436d2201ca2cd7aaa4"},{"path":"run.py","sha256":"28efb8cf1bcaff62075e60f46a3cbdb370effa1b060b6675ff90429a08fdd1be"}],"relative_path":"trend_following/0145_1271_vinini_trend_lrma","sha256":"af03f96d139512f5ef533ebcef090bc4b1544324a1fff3f634f0444cdda5641e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0146_1272_vinini_trend","category":"trend_following","dependencies":[],"entry_hash":"c75d99e2f77b8ec37272ce528695219960c91faec4dac7173cb769b50183ebf6","functional_test":{"relative_path":"trend_following/test_0146_1272_vinini_trend.py","sha256":"a1d2228ff50f35a109b3ed7771e088a20b6b6111d82f898e8ff001653af5c74e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0146_1272_vinini_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_vinini_trend.py","sha256":"2e5855757a28048347e38ba0fcfd803d484228aea135560556ed9703c662cb8e"},{"path":"config.yaml","sha256":"bd75f33ef098459b084c15fb5324026b72f4e0b452c3c3b9906750954bebcad1"},{"path":"run.py","sha256":"448b14be468514e52b538c644053242b36c8d06266bd4d6dde5aff49120ac589"}],"relative_path":"trend_following/0146_1272_vinini_trend","sha256":"be06a589f7a7ad5f9438953309fb0a31113ab8fe290966ed99e395ed134de561"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0147_1275_oshma","category":"trend_following","dependencies":[],"entry_hash":"7d97a0f83988e3ab88188e0e61210f3a256bb546b094e9916ee10b4b0ce62a8b","functional_test":{"relative_path":"trend_following/test_0147_1275_oshma.py","sha256":"0182d73ec1cb0ecea4db6579f871c650cc5c7adbe0b96cfc15a055e92e550586"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0147_1275_oshma","source_available":false,"strategy_package":{"files":[{"path":"strategy_oshma.py","sha256":"962b7324db3f2fbc4f409eb0784d18d663bf05369769b817701659b5b067ee4d"},{"path":"config.yaml","sha256":"2e778983cd4ddffea38573b051d076d9d0a08fff0b195f4670779fa8552f7b36"},{"path":"run.py","sha256":"351ae18f459fe447f78a98a576e806d4fe16c380daa5275e5667dd4ad99b9236"}],"relative_path":"trend_following/0147_1275_oshma","sha256":"52dba90df4c0c9f7cd5a4886226a418ffb08b09707afad17b6104485ace00ee2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0148_1283_xma_ishimoku_channel","category":"trend_following","dependencies":[],"entry_hash":"313e2f8e914d04de3676b3da286c18a26b8df9c479c4abc3e90d4e428e0ac67b","functional_test":{"relative_path":"trend_following/test_0148_1283_xma_ishimoku_channel.py","sha256":"8fb2dc84ca1a86beea613ef1d84c8bf41bfccb6da191c8d613fd3bf0c2bb66e5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0148_1283_xma_ishimoku_channel","source_available":false,"strategy_package":{"files":[{"path":"strategy_xma_ishimoku_channel.py","sha256":"b964f404e90d229e3a6620a17aaa49e3207bc9514e85467663635040a535367b"},{"path":"config.yaml","sha256":"bd0c6e4b25f4c20b8b08d8d23b63dd066d2f6055c1f75780e0e846d5d8feca19"},{"path":"run.py","sha256":"4648d749d171acff8e75da94b701217d69362ce121bd9f814237fe41aa091673"}],"relative_path":"trend_following/0148_1283_xma_ishimoku_channel","sha256":"ef980dfb31faa641bfa28a8fa41cd82cc7d6fadd50e22c6ea8196942b1e99ef7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0149_1285_rsi_cci","category":"trend_following","dependencies":[],"entry_hash":"6bb8505d9185e5f7737a148066dfcdcef34c748d3d44cb3b59b0b94a72672247","functional_test":{"relative_path":"trend_following/test_0149_1285_rsi_cci.py","sha256":"3ee8a76337d17b264d30d805e20de7595914c2add5a904c10316745d7f93343a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0149_1285_rsi_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_rsi_cci.py","sha256":"222925770281e738ac3bacd2cafcb58f3e4e54b6a9b7327f2b42cc41f2cd0308"},{"path":"config.yaml","sha256":"cb707c0e2de065cd9b93bb3f9704f55a7dffc4847fb98716342224baa4c076cf"},{"path":"run.py","sha256":"5e942f11feeae33ac2550dd3d4b4a52752799811dcc565007be93d3afd22ae34"}],"relative_path":"trend_following/0149_1285_rsi_cci","sha256":"a07b6e1834578b4154b2f99c5ebf6de136baea456a3c16563be286c47eb71210"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0150_1288_ma_rounding_channel","category":"trend_following","dependencies":[],"entry_hash":"4554600c6486e358885795004d48072feaad601c9409f7a46e6db0e0bab75fdb","functional_test":{"relative_path":"trend_following/test_0150_1288_ma_rounding_channel.py","sha256":"e9cc5e23bbdd5d74791d2befb6cb02430f75f2e8a5c6f9a58ca09a9b8f8845ee"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0150_1288_ma_rounding_channel","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_rounding_channel.py","sha256":"9c65f75547371b564ec37d256c2eaaf51601024545468b1088bbfbc248517aba"},{"path":"config.yaml","sha256":"881d870dc9508639daad772e038e1a2930fb7ded54ba0f5e2dc9779c322d4a8c"},{"path":"run.py","sha256":"d00cf043a1842af1c9d6cd3c4511ad8bec35ee30c2b6115919652632abb9efd4"}],"relative_path":"trend_following/0150_1288_ma_rounding_channel","sha256":"97f7138c07ea4e38c6ff0c957fe9c541149bebdcd22256eb9ae582439385e88f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0151_1292_candles_xsmoothed","category":"trend_following","dependencies":[],"entry_hash":"37c3ba1ad5364f16cf52f27cbabb837f0ef4d263f94909ca47b6c825eb944042","functional_test":{"relative_path":"trend_following/test_0151_1292_candles_xsmoothed.py","sha256":"2fbc6abfa665674e85b78200f7e7c8d86637a81ea6f019581f96c8bac214c67e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0151_1292_candles_xsmoothed","source_available":false,"strategy_package":{"files":[{"path":"strategy_candles_xsmoothed.py","sha256":"34aaa210d620e898aeaab69f6a25e86816fa248d3fecd81c8f4c69f22ed3f804"},{"path":"config.yaml","sha256":"a75418bd86bbc2a04d1e4fe5512c626815631e853248ad5b54864f1dc95fa2c6"},{"path":"run.py","sha256":"818fe07b29d3c7ac3848c5f34c6c0a08b7bcfe862b13dfad09511fe3a2bcf5bd"}],"relative_path":"trend_following/0151_1292_candles_xsmoothed","sha256":"20d257ffa6a5f6fca7c868e07917bd2e4b4dbcb0992f2e5c53c771fff371b23d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0152_1308_engulfing_cci","category":"trend_following","dependencies":[],"entry_hash":"bd53660339da502f222b0baf532ccb895a361de8885dae5bb5bc469ac0857657","functional_test":{"relative_path":"trend_following/test_0152_1308_engulfing_cci.py","sha256":"f92cdb41b04943f1967a7f9e422edc70a4dd3ba5c7716da8fa55908a1156ebc2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0152_1308_engulfing_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_engulfing_cci.py","sha256":"afad3f4aa7b349f55834efb53805573b9e07de331735316004e1805f2510e575"},{"path":"config.yaml","sha256":"036fcf99f88b548be32be98b687134b860781317fc534f3501b1e3f6e654d0ba"},{"path":"run.py","sha256":"cdd5a68022bcd4ee751afce3a42b825f26ec7f2af0d46fc0887d2ddb7c14c69d"}],"relative_path":"trend_following/0152_1308_engulfing_cci","sha256":"7a2c21af4730e84bfd622fc8eeebc1a9030f11a110f75445a6ac4662b0f22a66"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0153_1309_engulfing_stoch","category":"trend_following","dependencies":[],"entry_hash":"8cd19d132fca389b94baa5020e175167dafa33b815f48943798951b5bdb647eb","functional_test":{"relative_path":"trend_following/test_0153_1309_engulfing_stoch.py","sha256":"a4f1946b670483638e851b90e2e4f4a1c0f65702459e8d48c1a8e1601a8cac71"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0153_1309_engulfing_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_engulfing_stoch.py","sha256":"4ab0c80e470f487f7df71ada4565abc76bdc54e820299c175df2ca56e78d264d"},{"path":"config.yaml","sha256":"cf9cd49167616cec45e0d5240d8b1d30eb3ba54d6ddbc7ae4218b41da339fc2d"},{"path":"run.py","sha256":"7c7b6d581ebf5434d8aac35f66dfb08fe40689e8b27753d32bf772f4fcae885e"}],"relative_path":"trend_following/0153_1309_engulfing_stoch","sha256":"33f5a09758267968353df533e1384acb9c5e29f4e9c10017bd56eb7a5c98fb2c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0154_1310_morningstar_stoch","category":"trend_following","dependencies":[],"entry_hash":"58579e18b045502d41ffbed674bda5a58a111024a1a487a4b47afd5e8ef563ae","functional_test":{"relative_path":"trend_following/test_0154_1310_morningstar_stoch.py","sha256":"97152b18f799916595d52af70bbdeb1ba71d17c5d5390c5881c18d99d144249e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0154_1310_morningstar_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_morningstar_stoch.py","sha256":"3bf503e8e2778da04ff675fed21505f45abba7457cf1faf8b058e62971c3c609"},{"path":"config.yaml","sha256":"8c3f1eba0071962c96623f49e58425633de56b488e6fd4a1870c46dedb20d2dc"},{"path":"run.py","sha256":"73b23004312b389aae1c8e557c3abc634f809e32b82cf168677d21175bbf79ae"}],"relative_path":"trend_following/0154_1310_morningstar_stoch","sha256":"687a9b18fbd98ce4dac01eb9fb14896e16b298f5acca0381b8f2c1d9292290f1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0155_1313_morningstar_rsi","category":"trend_following","dependencies":[],"entry_hash":"bae7d58d2be4b68ea3d8489c02faaf8e7feab8984ca7924cad386c9ebe5e5ba4","functional_test":{"relative_path":"trend_following/test_0155_1313_morningstar_rsi.py","sha256":"97540a34bc34fe2e270f637698fd86003e7223166073a617edb4aee3c62e6f35"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0155_1313_morningstar_rsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_morningstar_rsi.py","sha256":"d767d7c53cbb060faca228355eaefd2866ed4a73a6716a2d487c04b38f66ff9a"},{"path":"config.yaml","sha256":"88369be369628032326ef3b3c48fab48b6a5ae2db8b50ca2ffab885ee53320dd"},{"path":"run.py","sha256":"94bd28fa4b4f2bb7b51685a20cd72c0ea99b378a90b1961f05adee2fff9bdfcd"}],"relative_path":"trend_following/0155_1313_morningstar_rsi","sha256":"b071a74f0c09e57e4e108e125bb94a0ad3066536d9d6f17a6716c7af6f162601"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0156_1314_morningstar_mfi","category":"trend_following","dependencies":[],"entry_hash":"7681013bc78ebeebeb7754210577620667a14bff1b7ae24eb342427dc46dccff","functional_test":{"relative_path":"trend_following/test_0156_1314_morningstar_mfi.py","sha256":"ee9f7be0c18fae7cbb87f5ca66e8129a053032ca895e548ecf10567110ddc1ee"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0156_1314_morningstar_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_morningstar_mfi.py","sha256":"e54bae316bf9a7d0df67f8add9e0e7b56792f213206daa0e9a4f78937cd2963d"},{"path":"config.yaml","sha256":"26c4311cf1ac205ea2d8854286ea5efdb711d2cc7e3f38ac97f7d5bcbb621198"},{"path":"run.py","sha256":"aa7e2637080c688ad5b4828c49cc59921bfc3c54a88bfa0ba27920787b6db7aa"}],"relative_path":"trend_following/0156_1314_morningstar_mfi","sha256":"b8040298c8e25280519922e672f10b5ade7583d1d0ccde847d04ace3af15f848"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0157_1315_darkcloud_mfi","category":"trend_following","dependencies":[],"entry_hash":"adb234e560a235a20f9023947a4ed5cb9069aa7fde0258fa634afc4ad6778fa1","functional_test":{"relative_path":"trend_following/test_0157_1315_darkcloud_mfi.py","sha256":"c9835446476e3dc27f8b2dc67c3c8625887e7c31eeae75a2003c816a8e2a0775"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0157_1315_darkcloud_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_darkcloud_mfi.py","sha256":"648b6a730e55cc64d92909e29f7a6ca6b5e6a315ac7b4ebfea072b0647c02200"},{"path":"config.yaml","sha256":"143eb71032cd52c83c46e74cfc97a1cea01e8fa751364b416bda5ef47ad49b4f"},{"path":"run.py","sha256":"2d9c95fd04f7fda58f827bc34b2cbca4b8b37f9fe89ea4946bead541816fb9ef"}],"relative_path":"trend_following/0157_1315_darkcloud_mfi","sha256":"aa04c71b1e3d7239683c35070f303bd0494f5a8f8aa4ab5f0d25c8cf66e042a7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0158_1316_darkcloud_cci","category":"trend_following","dependencies":[],"entry_hash":"28b0096277418014fe8209094485cd59dd40d7ebbf30928f7273d1afe8145d84","functional_test":{"relative_path":"trend_following/test_0158_1316_darkcloud_cci.py","sha256":"bfb1114aa2b4afec7921e6d1dc594d9de41f32a1fbf7f6380ec319636c19902f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0158_1316_darkcloud_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_darkcloud_cci.py","sha256":"1a14efa5153c499258a6d9f7057b1f28a7e75b1c13d20951fb4a059e5b518960"},{"path":"config.yaml","sha256":"b54dd581db1777d502db58f8415ded4199834f1f183466fbc1ce24c2964f30b7"},{"path":"run.py","sha256":"736eccaae4467a09ea22a7ebdb1636bfd6f63950f39970321bf32be12c68cf1a"}],"relative_path":"trend_following/0158_1316_darkcloud_cci","sha256":"b382d37e4281d9a077f2df80d5a8e163d690457c8fc2889b34b65727f242ff71"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0159_1317_darkcloud_stoch","category":"trend_following","dependencies":[],"entry_hash":"53e5e1d2b0cdb8f555458d922dfc926af47bd0ba24d0126707e00534d44e3af4","functional_test":{"relative_path":"trend_following/test_0159_1317_darkcloud_stoch.py","sha256":"6548ac1a7c0e3c4566864f62b064ed132f272e9521882ea1faccb13e87f2de2e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0159_1317_darkcloud_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_darkcloud_stoch.py","sha256":"b18df25e518589bebf5a819993569b351f53b1996bf48e564fbd66177cc205c5"},{"path":"config.yaml","sha256":"e27f99cfcde2241dc4f5253d70f99322704346628457f1046d0937ad2d0339e1"},{"path":"run.py","sha256":"11d2b2f703c4656199bf3d849995567bbca64a9a31e8542ac742e5c44b274bab"}],"relative_path":"trend_following/0159_1317_darkcloud_stoch","sha256":"ac240234d415b26d3b2d6e97ef704a6ad1d05ad92e82b7fc7686bf56a97ef8f9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0160_1322_meetinglines_stoch","category":"trend_following","dependencies":[],"entry_hash":"9815381439f5bc6a95237888c0111cd975218738db9d4cee8c6fdcc91b71b79b","functional_test":{"relative_path":"trend_following/test_0160_1322_meetinglines_stoch.py","sha256":"996afbcabbe25b77b25735d82277882664451d9bd4a8c7ff1b6361eb498db4db"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0160_1322_meetinglines_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_meetinglines_stoch.py","sha256":"57576376c83b79f3e1e1817483a64db05efa275f13e35dd18819886754cfa0f2"},{"path":"config.yaml","sha256":"ba4c4e49e300d747412cc46b8b6f8c6d16fee4b179d6752297d84874d188b8a2"},{"path":"run.py","sha256":"173a88a2df3f9be8ee2d1922f0bf38411253a3bc73bf70d790181ac3edc47656"}],"relative_path":"trend_following/0160_1322_meetinglines_stoch","sha256":"cbff0db5686ec196c29c7e22e05030dcb8a4fb65c2d34cd5ff78aeeba4f08370"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0161_1325_hammer_cci","category":"trend_following","dependencies":[],"entry_hash":"3f38790169bb650dbe6f19a0a1bd7cf0a42be2229401b830490630125c1c238f","functional_test":{"relative_path":"trend_following/test_0161_1325_hammer_cci.py","sha256":"a53646871a6a7d3668a132b0f8e2ec573bfbb1259d5d3bacaeeca640e210b045"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0161_1325_hammer_cci","source_available":false,"strategy_package":{"files":[{"path":"strategy_hammer_cci.py","sha256":"fb950d33d7b3c21e1a5bd84f6b7022b7a6ff176925eb99e02a2fb66b41303719"},{"path":"config.yaml","sha256":"1497e2325b6b703a3819aed9e346efc17c764aff26f7d05097335c9a8bef0ffc"},{"path":"run.py","sha256":"9ef74f217641804297159fc98d1253f44c2507ac1ca99e507399fd9665d93337"}],"relative_path":"trend_following/0161_1325_hammer_cci","sha256":"7bba761dc7e1228e4bd6bea705ab6552b784ed93f87215acf3e3d162b04011d2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0162_1326_two_ema_time_filter","category":"trend_following","dependencies":[],"entry_hash":"ccb3caed9f57e364337393a892700d4fffd9b113effc7f91bac16555e6555623","functional_test":{"relative_path":"trend_following/test_0162_1326_two_ema_time_filter.py","sha256":"9daa252e7ba417495f24cf81883832b96ae3b3ef73177048b19c603199bb98e0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0162_1326_two_ema_time_filter","source_available":false,"strategy_package":{"files":[{"path":"strategy_two_ema_itf.py","sha256":"03905bfbe1cde3e62e8b65c0cef93e3d6632051ae08cea3a51afc10aba68d65d"},{"path":"config.yaml","sha256":"c89ccb8cca6002cbaad63972e0bd50f94799b84c82580d0e1a0a0bcd5a2cac6e"},{"path":"run.py","sha256":"4c895e2c254aa4b94db332dfb6f6a5b6c4b83ccc25a8721ebcaec1ef7ea7998d"}],"relative_path":"trend_following/0162_1326_two_ema_time_filter","sha256":"5fc92c435e0b1ef570f840d73f37733d28d1fd867ab4f2d785d072aae67e9968"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0163_1327_macd_cross","category":"trend_following","dependencies":[],"entry_hash":"fa6aad69222f2c8c536c11cedbba5b57e2b7460020e84e4ba9223b679f80fc84","functional_test":{"relative_path":"trend_following/test_0163_1327_macd_cross.py","sha256":"bf96c0ba5aa6d0f827655e623c86707c02337139295c31746061fdf024cd2e41"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0163_1327_macd_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_cross.py","sha256":"81d3dc024c93e2ef0d9820b5e39dc4c6f38d067e1eabe80163e74325d986e4b9"},{"path":"config.yaml","sha256":"41989fda0ffc2ed03ddc9b343b42b8917fa7a7e51674c663b7a4ed59bb1dd3eb"},{"path":"run.py","sha256":"f7327df4c924690a7e3ad040af03fe85a7ed1edca4d40fb4a6a4248a62510536"}],"relative_path":"trend_following/0163_1327_macd_cross","sha256":"490344e1244e4e60e4a151a485ddd7b97fe3a65fb63bd3841dde22fd3e653286"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0164_1328_two_ema_cross","category":"trend_following","dependencies":[],"entry_hash":"4278c25b93e3c219837c19705b531a5524a23b927099cb79bc10b2f234faea71","functional_test":{"relative_path":"trend_following/test_0164_1328_two_ema_cross.py","sha256":"55aeb4bda55c581b43414dece15e6367fb7800b4da514a1a36349f7a260ba28c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0164_1328_two_ema_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_two_ema_cross.py","sha256":"52ba46bac8be15e0ee8ce1234637fc1cf50f47d3c4878849f4028f032de459e2"},{"path":"config.yaml","sha256":"f4d28d3750736df27a63400f979c7b5d7f49ba2899dd18c6766cb262870e6e27"},{"path":"run.py","sha256":"c4e3db664ff17cfd5c009496d7efedd9459c5079eb10e3933a8a60b4706c0b2b"}],"relative_path":"trend_following/0164_1328_two_ema_cross","sha256":"a9dfacf8f9046ad8755fc78cfdd7cc2cc977b7a89547839446a56a0d62b359a7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0165_1329_price_cross_ma_adx","category":"trend_following","dependencies":[],"entry_hash":"ff9551e65e4f74d128f52d7f1b41f1d44221377487190b50b7f9fb8971d320a6","functional_test":{"relative_path":"trend_following/test_0165_1329_price_cross_ma_adx.py","sha256":"dbd123e27330fe0f992f85c2d1f5f0e610a159651adca9abcc874e5883fa1998"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0165_1329_price_cross_ma_adx","source_available":false,"strategy_package":{"files":[{"path":"strategy_price_cross_ma_adx.py","sha256":"2db3496701a1d1669bc69af37d51e6de0c04dbac260923764a3a0f33916c829d"},{"path":"config.yaml","sha256":"785dd005745bc0b87b5e93caa8bea848d9008d85d884d410a6007bf9cc69b27c"},{"path":"run.py","sha256":"7c671fc39e393eb59f8029e955afef56e9f00a0e4ff3a7c0527ab6650e1a4ac5"}],"relative_path":"trend_following/0165_1329_price_cross_ma_adx","sha256":"1234de213b1780b2b330673326b9e864737fc818c5f9f6512bbb09f19025fcb6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0166_1331_price_cross_ma","category":"trend_following","dependencies":[],"entry_hash":"48ab86dbbfcc94a3418d58b4cbd137c9f9b26c3f32a798d1960fa4897bd801ee","functional_test":{"relative_path":"trend_following/test_0166_1331_price_cross_ma.py","sha256":"c89eab60abae2f75f50d36f686fd37bdac5db18960461ceadf76a7b22c6717c7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0166_1331_price_cross_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_price_cross_ma.py","sha256":"e712b371640073783c83af50b57638145a4bc41da78862052430efe2b326f764"},{"path":"config.yaml","sha256":"2519b552efd4b64585f992b9d640ee7fac126efb539dc7bb371e72bdcff13c0a"},{"path":"run.py","sha256":"6740f92f81abdabbedad0f1e592b430f5f3c6125735cd842059adbf4f9f0f890"}],"relative_path":"trend_following/0166_1331_price_cross_ma","sha256":"72eafcf9a8394291318ef6bffa1871878580db988c293c09e390a6fca74cb295"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0167_1334_hammer_stoch","category":"trend_following","dependencies":[],"entry_hash":"b5e028a699171015fbfa4a8c6b16bd1075cbbb7231bd1cf255cf47f499379fa7","functional_test":{"relative_path":"trend_following/test_0167_1334_hammer_stoch.py","sha256":"323021a26a3b495b8cd928d337cbb1ea13632f1737b4394b394e3b759f0d4b44"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0167_1334_hammer_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_hammer_stoch.py","sha256":"9ff900133b6cf71ff2a9c5b68fc8619c221c7f2c15b759cb251b59bf372bd954"},{"path":"config.yaml","sha256":"5f893795a864e03bb9ad2c5927a3ffd1a1f7aca4c15f4d15a1e6ee7fc1e241c8"},{"path":"run.py","sha256":"2cdfc3a32da8b3f13dd50278927111aa49d1b071e4cdfc8194cfbcabcb23af45"}],"relative_path":"trend_following/0167_1334_hammer_stoch","sha256":"46c8404c05b127712eccaac6fcb1d131458d7fc3f3151e66441eb48581085ad3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0168_1338_harami_stoch","category":"trend_following","dependencies":[],"entry_hash":"481df75e4d01a039e0dd16baceb9412167c683b7a42638e40396a5f6d1ac9144","functional_test":{"relative_path":"trend_following/test_0168_1338_harami_stoch.py","sha256":"0b2a65f77e6b731ae929e84e2330a1c14cf3fa478db98a89b835dfbeac1b52a9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0168_1338_harami_stoch","source_available":false,"strategy_package":{"files":[{"path":"strategy_harami_stoch.py","sha256":"97ed5100ed52c2fe35e8372042f72e94479117f136644d32cd30915a5a26eb2f"},{"path":"config.yaml","sha256":"dc351a2d8d82979b10c44c68ebafe8e075fa7fba848e91db6c372320fee0f7f0"},{"path":"run.py","sha256":"471a4fe03ede54f1d4fa2ccdf444f1dd5fd5eb71e385f618554b3031de70d95d"}],"relative_path":"trend_following/0168_1338_harami_stoch","sha256":"eeed2b436dbc56576bf1c7dcc40b9c3b9b85bf95b9aff6d8760fad1485be35f4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0169_1340_engulfing_mfi","category":"trend_following","dependencies":[],"entry_hash":"e1dc2cce2b1bca605a5bf0837fd38e2a947c2669e655da40495e881623e8b05b","functional_test":{"relative_path":"trend_following/test_0169_1340_engulfing_mfi.py","sha256":"fac8e948a70c6f1a0bd7913d28282570f9578a5f9c319acc7e1c8a7fc9a14061"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0169_1340_engulfing_mfi","source_available":false,"strategy_package":{"files":[{"path":"strategy_engulfing_mfi.py","sha256":"7b6baeb290bc5ddb1709869b10224fd612f577dd0fbc8ca14e222b998fd98298"},{"path":"config.yaml","sha256":"b4879c83e42fb84e89ae05db14abaa1979a0643e59ad6a45a5ad1ca5522463d8"},{"path":"run.py","sha256":"6fe20a158ab6cb3ca284ed92b9c27bcdabd827cabb0bf53ddfeb94d898f58e3e"}],"relative_path":"trend_following/0169_1340_engulfing_mfi","sha256":"90c1033577674ceb404393e162eeba06bfacc07813b279157ca2dfa22b67ac30"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0170_1348_alligator","category":"trend_following","dependencies":[],"entry_hash":"639b7069e22aa1da1251eee70a868221de10ea71139bd7b31498b6331117180f","functional_test":{"relative_path":"trend_following/test_0170_1348_alligator.py","sha256":"f083cb2e0bd7470ccf21618d7cfa381dc43f58b29bdbd98e9eb87b8715534f0a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0170_1348_alligator","source_available":false,"strategy_package":{"files":[{"path":"strategy_alligator.py","sha256":"3d18eb448b608a8227dec85746889f4064bc1851210fadfc89517a8f56413b04"},{"path":"config.yaml","sha256":"4af7e3310b8c936a0a380eaa90e930acac0b1f27d062191a7cf32e6d937bd064"},{"path":"run.py","sha256":"00b8b2c2476ca87fcd7028a6776a3b6b1712acbb4accd942d70a1283831caf89"}],"relative_path":"trend_following/0170_1348_alligator","sha256":"9197dc84f6ae4ea7613d228e0c0011c2e8020a678970ace0216e339e2b35d288"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0171_xauusd_trend_pullback","category":"trend_following","dependencies":[],"entry_hash":"06caedfb1a22870d840d3f0a1802471919188d8d597ebb1c2456da876147ea7d","functional_test":{"relative_path":"trend_following/test_0171_xauusd_trend_pullback.py","sha256":"a54ced0c7826b995fbd16ff8c109b5d67d2b10796960f3280574eff9944f407e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0171_xauusd_trend_pullback","source_available":false,"strategy_package":{"files":[{"path":"strategy_xauusd_trend_pullback.py","sha256":"8bf7cf3ca01d6a844675ae541da83ae5e56c91374b32baed307e33d366b8a8a7"},{"path":"config.yaml","sha256":"dd84b3916d3f832f97a71aa874d909febf19f66ba1a9a44b3f47c6ce6d28dd20"},{"path":"run.py","sha256":"51f0ce7a2ba1c4484ddff3fc7b6bb3705d14e0c29e215b0dc2d660d7991f2725"}],"relative_path":"trend_following/0171_xauusd_trend_pullback","sha256":"ba4c05b4e365cb52e32e60a9be207a5427ca371f3f3fea3bfd2836f6dbac6768"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0173_stiffness_trend","category":"trend_following","dependencies":[],"entry_hash":"46f8ca15b9dbba6867528723ee2dc3fbd5e00322e7f3363abddca50cdf27744b","functional_test":{"relative_path":"trend_following/test_0173_stiffness_trend.py","sha256":"403cf1675e2a02dd9a35f1922fde76452a16b289dacd0b66d118af5489b11bf3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0173_stiffness_trend","source_available":false,"strategy_package":{"files":[{"path":"strategy_stiffness.py","sha256":"6558b31d9e962411ae6f67113e463d9d085cd108d4ebe734ca6363618e250ffe"},{"path":"config.yaml","sha256":"ba30eba170751a2ef844fe68925755836dcdd468613be4b8200e1f9e677e8ffe"},{"path":"run.py","sha256":"152bef91b9c6dcd0de346d5ed1515e7c5c46a0ddf6b924b1cd79ff43f7b4d576"}],"relative_path":"trend_following/0173_stiffness_trend","sha256":"582ece81a806f45273f8b4225b558ea22f3f2866c885b770fe4ac44773917a28"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0174_death_cross_reverse","category":"trend_following","dependencies":[],"entry_hash":"191b7f613f4785bdfd5053725efb34bf5e43f6292599308172797fa20a080acd","functional_test":{"relative_path":"trend_following/test_0174_death_cross_reverse.py","sha256":"6d78dff7ca82dec64a9fef23217100bc32cf966daded19ee35fc92a443e7bca6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0174_death_cross_reverse","source_available":false,"strategy_package":{"files":[{"path":"strategy_death_cross_reverse.py","sha256":"a600cef4690bb096ba975a6379e7ccfaff73882468c11eecb65d92ed801519c7"},{"path":"config.yaml","sha256":"517a67c0589133d1974773fb65afdf205fcd170a5a446bc33cb21465fe1cf7b8"},{"path":"run.py","sha256":"99f920bd517a14ee14cb0c3f77d3a55427ebe581ac1ab587d04f6d26bac5d871"}],"relative_path":"trend_following/0174_death_cross_reverse","sha256":"c9c7bb0e4bcd75a03adfdec30f66a98897735cc20abbeac9e4437b71b2933097"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0175_golden_cross","category":"trend_following","dependencies":[],"entry_hash":"6c9a065a8f52840b235284403ca48e0439b6dc417ea7ea094dd275839f1a8980","functional_test":{"relative_path":"trend_following/test_0175_golden_cross.py","sha256":"1ae35462308db2b0f1cb5da0b759c0f4e1fc556a742841f2b83c798b5a3a456d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0175_golden_cross","source_available":false,"strategy_package":{"files":[{"path":"strategy_golden_cross.py","sha256":"09238d7314a61e8922aaa0018284dbdbfb76b15865439e43215d92faa81bd8c2"},{"path":"config.yaml","sha256":"8b28688779f309ec01470ce09e65382b5db3d7763cd825b8596e6a535b5e67ba"},{"path":"run.py","sha256":"905c9a3116172458146f66845ff5500f2eaceda3b9ce837cfb93b841ccb740d3"}],"relative_path":"trend_following/0175_golden_cross","sha256":"93cbe64c22d07921779d03eb81ab0eade1b795753313e29fac12a3bd36635594"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0176_persistent_rally","category":"trend_following","dependencies":[],"entry_hash":"89bee3d16db35bcb3646eaff78ae959ffbec0173d7099ad252edd81a68f352bf","functional_test":{"relative_path":"trend_following/test_0176_persistent_rally.py","sha256":"04de1f1b152e380ce6154f26764bed3b4616e7e6a130790ae500eedc243ffb3d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0176_persistent_rally","source_available":false,"strategy_package":{"files":[{"path":"strategy_persistent_rally.py","sha256":"b3f31712b7b6be03b1467ec9eb3f30d3f3a079a267085ea46c50a86056f11606"},{"path":"config.yaml","sha256":"1c825ec31b59e0199aae8e6d41acabbc0c489a8154926ca3cdbdc22224d64bfa"},{"path":"run.py","sha256":"1a8c43c5d8332ac0aece6799f5d9c32478885384d7fc8c2d9fc0ec41791f20be"}],"relative_path":"trend_following/0176_persistent_rally","sha256":"9f00be280422b64843bdd6cb31c35220b031be663008b7fda68ddf2447f3a07f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0177_0127_macd_cleaner","category":"trend_following","dependencies":[],"entry_hash":"98f83926ca96512a077dfd016a86c6f6d947563924e6065d42409dc4e31aa40d","functional_test":{"relative_path":"trend_following/test_0177_0127_macd_cleaner.py","sha256":"3bdcf82d1b00e8b6aeebfb43a3b23ccc34a08dbd19ae19e1b371bd3d6affb5c8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0177_0127_macd_cleaner","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_cleaner.py","sha256":"8ab5103c64ee338f80bf31a21a5ae33d6f06e25a5fb733918b0f904d3f8e8bc6"},{"path":"config.yaml","sha256":"25fa7037b97caff591cd224966a6610101bb82843590db4eb3fb266061db95cb"},{"path":"run.py","sha256":"77ded37b85353d3fd14357aedcd2784acca56917399db20f5c60d916fee58146"}],"relative_path":"trend_following/0177_0127_macd_cleaner","sha256":"26a6415af54f963c8a7243b0797127294ae01f473eddbda7efef5524ae611c77"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0178_0134_tdsglobal","category":"trend_following","dependencies":[],"entry_hash":"7c024232fbc37e97399390aa43c77813b216eda55de88ed20dce02c155225d1b","functional_test":{"relative_path":"trend_following/test_0178_0134_tdsglobal.py","sha256":"5c50879ec200225de1072bb168030c0fe442dd508e6ff8d0f9b3abf0e24d89e2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0178_0134_tdsglobal","source_available":false,"strategy_package":{"files":[{"path":"strategy_tdsglobal.py","sha256":"a218f5459b43bdd6275fc164f3099b5149833705e0f53d255f6e781733441a37"},{"path":"config.yaml","sha256":"867389dde9261ebe1f1207d768266ba1e4225e421b4043f69b50ab4a9194a1dd"},{"path":"run.py","sha256":"4dc6233d7b37237908ec9a1a931090dbc3a6ca1388b16dccd80ca7010bab09a5"}],"relative_path":"trend_following/0178_0134_tdsglobal","sha256":"239cd6c8a64179036f4a1981323158c3ba0db2e34e4f7b934cb67010cd130143"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0179_0135_puria_method","category":"trend_following","dependencies":[],"entry_hash":"cca1566c58b88b7f361f13bba5d5b31602333a6846ce888a042e20dce0ff09d7","functional_test":{"relative_path":"trend_following/test_0179_0135_puria_method.py","sha256":"63b9bc561b999c9557d88b528e97be10a65f1432b0c98645518ddcd78b85b3d2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0179_0135_puria_method","source_available":false,"strategy_package":{"files":[{"path":"strategy_puria_method.py","sha256":"72093db795fe4009668661eec5f75da8915f49b373bbcddd4813d1c310d8b67a"},{"path":"config.yaml","sha256":"cc1cb4038257a37a6ce4874bb988c59d11c94ac3d7c01ce1bf450cf38dadb2a1"},{"path":"run.py","sha256":"f14d209f6ea209fc3f85b1158d9a5b3e77726541b62bb5f3d097959f6cec5983"}],"relative_path":"trend_following/0179_0135_puria_method","sha256":"17e6b4f0ea07124f45891228586201a7eba6cf8cacfcddd0d2f64f2c0435e9e2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0180_0137_bulls_bears_eyes_ea","category":"trend_following","dependencies":[],"entry_hash":"ef7abc201efcfa92cf6d305b18c06dfa8f972af3166efcdb34bb79abc1969dd6","functional_test":{"relative_path":"trend_following/test_0180_0137_bulls_bears_eyes_ea.py","sha256":"1350897ce752f2b4517a8bba2e7669a5e716248328b0513a8cdc3bcf746c104f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0180_0137_bulls_bears_eyes_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_bulls_bears_eyes_ea.py","sha256":"389fe0174b57343f0db5cfd6d5d693797ca11f769bf2d395b5c0f4c473433725"},{"path":"config.yaml","sha256":"f1929ab2ef078f3e93776796fa6670064ed23d039bfda28a780b0feeb406141e"},{"path":"run.py","sha256":"fd2b45d1ed41272b4f512becd5227a548341acd2dcf3d2d23bc269eced28b9ae"}],"relative_path":"trend_following/0180_0137_bulls_bears_eyes_ea","sha256":"e42a7e10ecaa8a93abf09d2296912f2bfaa8b621f7a2e2a6c87b8473687ce6a3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0181_0140_macd_no_sample","category":"trend_following","dependencies":[],"entry_hash":"0e657fd2d70c77c77b79511542d0f0bbb0e20b544b51d4715d8f7177a6ab5921","functional_test":{"relative_path":"trend_following/test_0181_0140_macd_no_sample.py","sha256":"dfac8b85f7121a92ff97f4194c0b03a7346816e017ec2460a71960370f576f2c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0181_0140_macd_no_sample","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_no_sample.py","sha256":"29d5f072f2ab9a49e45d5af523b753be4715f826ce6d3c259b7ff9d5d20702a7"},{"path":"config.yaml","sha256":"cf681b86c33e9bb308304d93b4671e5ad433e0e2cc1878d23e375254dd7d91e8"},{"path":"run.py","sha256":"fe11c4cfe28dfd60e82c1c980805212a53c200c856bbc39593eaf1f3b5fc037d"}],"relative_path":"trend_following/0181_0140_macd_no_sample","sha256":"2c27e5862f9a4748e10584026dac32c15f688ad4f58917558955739918d3a9d0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0182_0151_precipice","category":"trend_following","dependencies":[],"entry_hash":"1702dede3e8218158349f5e3f977206d72cab8f54e31e0a2b0c235de76693f02","functional_test":{"relative_path":"trend_following/test_0182_0151_precipice.py","sha256":"edcb1f9369a95913fa1794af298ed834cbe0a145502429d70f1d1076c8647687"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0182_0151_precipice","source_available":false,"strategy_package":{"files":[{"path":"strategy_precipice.py","sha256":"c554a617353b89b1badffd44d492e694c7b3211a2ebb7f4095e13c46b901550c"},{"path":"config.yaml","sha256":"bab2b9ab907c80cd1cd59673168e68329c55715d3ea1b6464126f85cb5e4fc4a"},{"path":"run.py","sha256":"fc568ea55423ce441bafcbeb00e758e30962e32f8e034041637dd30dda275c6c"}],"relative_path":"trend_following/0182_0151_precipice","sha256":"6f9f74c3fa725fcb31805edd88155b6625d727da4cde2f55a71bf41366d603ad"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0183_0165_alligator_simple_v1_0","category":"trend_following","dependencies":[],"entry_hash":"4a5f7c1c8f08e6df7d9847b8f217b61698b51b4b9feecfd797589c432334ae32","functional_test":{"relative_path":"trend_following/test_0183_0165_alligator_simple_v1_0.py","sha256":"c2b90b5178dbf728f7a12253fabb32ae28b0262fa71c493b7d279e38cb4c9481"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0183_0165_alligator_simple_v1_0","source_available":false,"strategy_package":{"files":[{"path":"strategy_alligator_simple_v1_0.py","sha256":"de18b7c7c17eac954928b25387f8f5062dc9c533c391fdc2bef71028f48e5acf"},{"path":"config.yaml","sha256":"1dc01b328ee09ae9935d1af1895ac0722495347227721c8c368a39ff4a160021"},{"path":"run.py","sha256":"fd8f933e2879f44fcfe9b35ad22e20f00478bcc2ca71e299b98107f9183718fc"}],"relative_path":"trend_following/0183_0165_alligator_simple_v1_0","sha256":"a229c8d1697eadd6d8cd6aafaf7bda5a2a14100baef28dd8805f8bd84fa6a456"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0184_0175_probe","category":"trend_following","dependencies":[],"entry_hash":"3370c1eca305c2cd5899173f2c082f0171cc340ca2eb89c83960b2db3b0f31aa","functional_test":{"relative_path":"trend_following/test_0184_0175_probe.py","sha256":"d05a98b68ed5fab5db9a9632647629c57f15f2781f047108bc9e66d535ea8b4c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0184_0175_probe","source_available":false,"strategy_package":{"files":[{"path":"strategy_probe.py","sha256":"32d0e9b7ee69016e62adabcfcd872594ae938b69ab118bceeb4ee9981316e693"},{"path":"config.yaml","sha256":"adbc32db4cd2ed7b41015529c0476e0d3ab39c632bc45218f0ce64300ab73b44"},{"path":"run.py","sha256":"ab6c169ef38ea7df2bae214ce116634dfa4e5fb05ca29d43593733bee5a398b2"}],"relative_path":"trend_following/0184_0175_probe","sha256":"f362112da61559dc6a4397f120001c784c01a9f3419a7c6b880a487a4505647a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0185_0189_constituents_ea","category":"trend_following","dependencies":[],"entry_hash":"dba5cf1c90046d879e396563b4dc459975431cc5143aaa58a536cc3cd97c4e20","functional_test":{"relative_path":"trend_following/test_0185_0189_constituents_ea.py","sha256":"3662defd44223668655a4c4b0181da6da38f7e42ad627dfa321fdb96a398897a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0185_0189_constituents_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_constituents_ea.py","sha256":"759aa912e88fadb2358324142a2e8518a63b132a350aa6535f37e5807305e366"},{"path":"config.yaml","sha256":"2333eaee6b2633af98842584b7f3484432ea0a5f6f7b4e4af398a628a322fba7"},{"path":"run.py","sha256":"9034f0d072a2999b47db51e73c1d6ab258107a90fc9a322e813d830ff5803311"}],"relative_path":"trend_following/0185_0189_constituents_ea","sha256":"b94c74e4702145e4336307c400d74273f7965cb1bc7d9f1133f7e145b84ad0e4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0186_0193_ao_executor","category":"trend_following","dependencies":[],"entry_hash":"c1c6969b3d13664d24625f8847f8654f1d33e05c134587efe2432e9b3da25c3c","functional_test":{"relative_path":"trend_following/test_0186_0193_ao_executor.py","sha256":"79728c07555f90c5c29f30b8c4c2dbfb2719785e04cfd0a1325db6ba257cff8d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0186_0193_ao_executor","source_available":false,"strategy_package":{"files":[{"path":"strategy_ao_executor.py","sha256":"acae3c5f230745ee7f0e7f8496dc47037cd5dac522a553709bebb3d08a01a8c2"},{"path":"config.yaml","sha256":"2c2059f4ea6a49213d7b816d7a318620ca272409098322714777b7346e86afa6"},{"path":"run.py","sha256":"d21577ec9fbdd9269d701bf4ccb644351e8d2477913d7fb84a4a3703aba00339"}],"relative_path":"trend_following/0186_0193_ao_executor","sha256":"f9ab7ed0e419ada0b80392e7448fbb7e92636a93182d421a5a8c746544b2a55c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0187_0199_glamtrader","category":"trend_following","dependencies":[],"entry_hash":"1c125b980d29eb2f1a24928bf71e116d0c7187cc6a68638abfa857a7001cf5da","functional_test":{"relative_path":"trend_following/test_0187_0199_glamtrader.py","sha256":"41f25c1e2b78e9b8fbaca8b652d3989bb94ced67f29cd58dc60fababc0377ad0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0187_0199_glamtrader","source_available":false,"strategy_package":{"files":[{"path":"strategy_glamtrader.py","sha256":"b251dc066365d8e10c7349d24464bc50d34e9f03dd8bce299a61b081fe3b3362"},{"path":"config.yaml","sha256":"35a1fe290cdf31a6356a59d63c692ef4fa9270d832cf90c70632313177998a0d"},{"path":"run.py","sha256":"fdf97de01f7776c8c01e01058d87dbd2e9cc62608718fcda8fd8111339eabc9f"}],"relative_path":"trend_following/0187_0199_glamtrader","sha256":"f7853a3efd4ddbacc863133edc3bedaf5ab35e663b011f098a87cac8f5b406fc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0188_0239_bars_alligator","category":"trend_following","dependencies":[],"entry_hash":"5707e5d029d1f718008e406d1966f405cd86e329ba612c2bca8e3aa5f9989164","functional_test":{"relative_path":"trend_following/test_0188_0239_bars_alligator.py","sha256":"99ffc4f0262742d2301d39e48c7df9b75b3a92b5cfdc6a53b62b7206faa4631e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0188_0239_bars_alligator","source_available":false,"strategy_package":{"files":[{"path":"strategy_bars_alligator.py","sha256":"f5525c6ae4906ecf1dc535a2f3b40319a063b269389be4d9c288f0f4e56a5b5c"},{"path":"config.yaml","sha256":"57e9747024ac2659a85bc41a673b6e92f4cfb6138fc3806d6711dc06fb5752ce"},{"path":"run.py","sha256":"c405b2610b98a36a68f5db30a54ab565af9e1522d680296cdca83142a6093ebf"}],"relative_path":"trend_following/0188_0239_bars_alligator","sha256":"9181e46c2042e940cb421f4dc0953c711e6b862c4bb15f071bc745a0ecc97d03"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0189_0244_gordago_ea","category":"trend_following","dependencies":[],"entry_hash":"bc93cd073f91a193e2edae0f482920ca3cd903647fb6e15e8538c3e33e12eb6f","functional_test":{"relative_path":"trend_following/test_0189_0244_gordago_ea.py","sha256":"8666c699926f7cb0bf0733c7ce55fb02a54ac7b2402c35677a96afca2d96b456"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0189_0244_gordago_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_gordago_ea.py","sha256":"69b59bd2ad96aea37c8582d78846bd54dea6cea5a5e93ca8a69af757ba0d344f"},{"path":"config.yaml","sha256":"f56ecf94e3bc7c18520ac32180beb67302bd778ccd15e4d35126555a7bee945e"},{"path":"run.py","sha256":"6ca10dc71af8ed52d455e8af1ba587cee7b55d42ec41de08bd37b4fa9b6063fc"}],"relative_path":"trend_following/0189_0244_gordago_ea","sha256":"e0298a5bcd4ca258d6163b0ae10de504841ce4882d5974f1a0d117b5a4f681f6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0190_0263_neuronirvamanea_2","category":"trend_following","dependencies":[],"entry_hash":"629848849aae3b3323e7e5bf7dc4c7ae925fec5b593706c6bab536ae8d7a6190","functional_test":{"relative_path":"trend_following/test_0190_0263_neuronirvamanea_2.py","sha256":"9c10c69025babb66e2c7fcfb1fb9326d9bed73f667470a119f254761ba5c07e0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0190_0263_neuronirvamanea_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_neuronirvamanea_2.py","sha256":"5cf5b111613683605f0b18cc0454e0541c467d046d1e01e9a8f3ed38fa9acb1a"},{"path":"config.yaml","sha256":"c4717c9daf12f9f0cf91f966bfee5b94f253bb66769de41b84b4b7257094f554"},{"path":"run.py","sha256":"70056b89f054c24f7815e44a74b9b2e7c4e5c8d42a17b9eb6035531a2fc66f40"}],"relative_path":"trend_following/0190_0263_neuronirvamanea_2","sha256":"a6584524547f675bcfc5b03ee9218f90c2a5d0443eea098d119b10ef191a47fa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0191_0272_ketty","category":"trend_following","dependencies":[],"entry_hash":"d029f5b6b0a594ebfb039fbe160b877df935e8124483e28fcb8898d781ef4ff0","functional_test":{"relative_path":"trend_following/test_0191_0272_ketty.py","sha256":"9b10288934d4fb0d6c749f1949ad12b96b06da226de9a5d996a6834081923e82"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0191_0272_ketty","source_available":false,"strategy_package":{"files":[{"path":"strategy_ketty.py","sha256":"c0b43975bc4ea668f2885cf747f069dd0dae8d058d3818534d504cbe20dd4644"},{"path":"config.yaml","sha256":"c91f919431d3bc82bdc9eb27e0617d6b5cea3ffa7b561190cca9ca403ee9178e"},{"path":"run.py","sha256":"aa032e7822cda9a874cd3006319304ce41b8ed47153cc65ebd9b70741f2c79d7"}],"relative_path":"trend_following/0191_0272_ketty","sha256":"d4bf1d1df7e6707b80858390595f2cf728a63742f8d8ceba4963a57ae481d200"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0192_0305_zigzag_ea","category":"trend_following","dependencies":[],"entry_hash":"fb33ac9b7d387557dc3eafd51f66333178c28e9369bd428d87f17d995c11645d","functional_test":{"relative_path":"trend_following/test_0192_0305_zigzag_ea.py","sha256":"63255ce1301f4acb0d54e0b157bc6008876d8a3ce158a759654b5950372bb8f4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0192_0305_zigzag_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_zigzag_ea.py","sha256":"8c4c652cbfe5596fe41bc6578505e3f8dec6099c8cd304020b9c72118733d508"},{"path":"config.yaml","sha256":"307a869c3409c9566f50fd60fb3d1ad992be9ebc9572296488434888da63eb2e"},{"path":"run.py","sha256":"6f5eb36c366689f4f6ddde15c674d8c65e0a55ca93e523116068e36e083aaf3b"}],"relative_path":"trend_following/0192_0305_zigzag_ea","sha256":"769cd6fc074e299c7bf496015533516d8170977e85b0d65e49dbdbb3fa1cfa19"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0193_0395_expotest","category":"trend_following","dependencies":[],"entry_hash":"75ab8bc19426cd22cfeca3a07e62fd548f3dcfac9e05df2b5d07ec637347cf4d","functional_test":null,"mapping_status":"package_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0193_0395_expotest","source_available":false,"strategy_package":{"files":[{"path":"strategy_expotest.py","sha256":"26db226a246fb637fb88bdc93fabce9266f51c180c1bf04a5600b9e5d7a3f52f"},{"path":"config.yaml","sha256":"4f42d6312bd404cc66bdb1548668d42c320323e9263639259433f46504e9b049"},{"path":"run.py","sha256":"43fff0b398ecf895a2102e0a71c0b15278c40ad21ee9189f54a5cbe4ca7659e9"}],"relative_path":"trend_following/0193_0395_expotest","sha256":"16856a68ec008abad0b1064ecb0b2ab5fc6cf45c135bb54683ef0d64473078df"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0194_0417_fx_chaos_scalp","category":"trend_following","dependencies":[],"entry_hash":"358d3c1da5a34bc27b057df3e653ebafd1f3fbb0b4a798c4336c24490dc21354","functional_test":{"relative_path":"trend_following/test_0194_0417_fx_chaos_scalp.py","sha256":"e0712a5bd3680ec5f19b5d55b9eb2c64efe7fb306e96a9c9eaa80fb94ec7a8e8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0194_0417_fx_chaos_scalp","source_available":false,"strategy_package":{"files":[{"path":"strategy_fx_chaos_scalp.py","sha256":"cd2bde8823305a844826d9794394c785b73d3687bc3f88d4b07d977e494585bc"},{"path":"config.yaml","sha256":"feebc535fb0cddd03c63509fc829db48efc5729fb00def3904559f94d75a27c2"},{"path":"run.py","sha256":"7b846626735aa9df7d25492c47900872303eab06b2e59a82afa95edd45a0ffd4"}],"relative_path":"trend_following/0194_0417_fx_chaos_scalp","sha256":"ffef56be1180199a9efa916fde0e4c80c471e96e796f68c37497a2f7e25ce596"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0195_0454_macd_simple_reshetov","category":"trend_following","dependencies":[],"entry_hash":"8085e50245f66dc854c5c4233181a755d9c6a63fc188f048d34854b008961fab","functional_test":{"relative_path":"trend_following/test_0195_0454_macd_simple_reshetov.py","sha256":"cb4cc69952dde5934bbc2af33a0123ea07979e5d0c967efe813c9c0b506dd519"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0195_0454_macd_simple_reshetov","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_simple_reshetov.py","sha256":"d3d63aba880a7115ffa8fc42e08c8638b15232557c5672d0a0d9c7474998fc01"},{"path":"config.yaml","sha256":"1fdccdadba65137416998759732c9f0bea98bd9041d56cebb069c32656719216"},{"path":"run.py","sha256":"00e07e74091b0c08b943eed331452780dde55dfbe467ba3d52df24cfe8770146"}],"relative_path":"trend_following/0195_0454_macd_simple_reshetov","sha256":"36d0eeb55fa8cb10a9bc8b43caaf32715b5bd482de9a72c9109af7a706e8c42a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0196_0455_umnick_trader","category":"trend_following","dependencies":[],"entry_hash":"093cba606c760d8eee1c276e67a301dfba3f88f536efda9f0a4231f7c2772b27","functional_test":{"relative_path":"trend_following/test_0196_0455_umnick_trader.py","sha256":"19c0fc8a140051b36bd52301bf03c83ed1448fd7ff28bd252de6289efbac4f7b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0196_0455_umnick_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_umnick_trader.py","sha256":"0bbc2c53ef1ccef727b6c7b1453513ec1a1fea7a0f8d0f177e8fd2e357b4be4d"},{"path":"config.yaml","sha256":"8e4cdc964deec3a2a499b6c95a2229af9796f0d29fb1017594ad517683b8cc44"},{"path":"run.py","sha256":"63807903813b96fbec1383b968304ca6da082e9b76aa0b324d2c94908cf1a390"}],"relative_path":"trend_following/0196_0455_umnick_trader","sha256":"401514ca4caa609969a81ef156415467d788b29efdc4a8cc75c47b59b0375a71"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0197_0479_arrows_and_curves_ea","category":"trend_following","dependencies":[],"entry_hash":"d9d5065bd261b1fbc83d8be326d08ee572aed73072516de7899e148045875a3e","functional_test":{"relative_path":"trend_following/test_0197_0479_arrows_and_curves_ea.py","sha256":"fc55f216fb7356faabfced8ecf2e0880cd5f8ecbe1544699488994c10023d9ad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0197_0479_arrows_and_curves_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_arrows_and_curves_ea.py","sha256":"983b4364196d4a32e5da59b7db8c0a1b8d753efea11534c4169a54675c27c124"},{"path":"config.yaml","sha256":"727619643b1b8ae9697c128910a62f575d9318a39bf98dd2bc692137db00a409"},{"path":"run.py","sha256":"3ab1eaa67af1b5e81cb93a00726e9cb5922ece8294d646cec0378ee7cd1cc03d"}],"relative_path":"trend_following/0197_0479_arrows_and_curves_ea","sha256":"45ed0d17ff468a60bf2a5de4d98e2ed612588213f41fd679dd78fe05d419b0c2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0198_0494_sar_trading_v2_0","category":"trend_following","dependencies":[],"entry_hash":"84dc2186290287c5270497d07435844637a77a052e0c75065d6b400e17bb780d","functional_test":{"relative_path":"trend_following/test_0198_0494_sar_trading_v2_0.py","sha256":"da7f363168b020dd0c425d14f9d3839d7b5a71daeae3b22bfa3608d7e50078ca"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0198_0494_sar_trading_v2_0","source_available":false,"strategy_package":{"files":[{"path":"strategy_sar_trading_v2_0.py","sha256":"8b54325788f75972f3dac9cc6f782b12f64446a9bde07545e28f1225681f42d9"},{"path":"config.yaml","sha256":"b311b6783bab2f8989deadfa6033d9a6f57b42238357d59dec37be3c1fa24b49"},{"path":"run.py","sha256":"e98c31f92725259e2246ef085639cf34c332145f9d8d9f241122008cbc9e5dec"}],"relative_path":"trend_following/0198_0494_sar_trading_v2_0","sha256":"8de19f2585373c72501ea518f4ae7562219c4f3e8c561f13888487fde0f9d03a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0199_0497_ma_shift_puria_method","category":"trend_following","dependencies":[],"entry_hash":"c38d818b77ff579133c1fb80b013a1f97e47bd9b0b6df928e55133a9ba1555ea","functional_test":{"relative_path":"trend_following/test_0199_0497_ma_shift_puria_method.py","sha256":"de0de46434e1a8aaed0769ba3609c2238804db2a1a426434890b435222714e6b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0199_0497_ma_shift_puria_method","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_shift_puria_method.py","sha256":"9853e6a2d4188fb272aa0c88fd0a3313b4daba246bbd21f3478fb7e909a1892f"},{"path":"config.yaml","sha256":"02ad38c30b4bf4ae6deb165d66507bf61d4ba982709730e7ba12501547731efc"},{"path":"run.py","sha256":"4b2df963f5e16ae3a77541eab6c167c5c334eac38ef156b36394039883f66282"}],"relative_path":"trend_following/0199_0497_ma_shift_puria_method","sha256":"1ff66f40bd1d45d5c1ac2e1a6af2f0561af7ee1ca815f4f6c227e569b06f0009"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0200_0498_momo_trades","category":"trend_following","dependencies":[],"entry_hash":"34ae3dfe38a76d04fceded6a3027c807d9b0c75d3a69a99d880bb366fc4d6476","functional_test":{"relative_path":"trend_following/test_0200_0498_momo_trades.py","sha256":"839fa010221446dcd825d35c85a20246d38e446a8606eb9679f460c9bae19f9e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0200_0498_momo_trades","source_available":false,"strategy_package":{"files":[{"path":"strategy_momo_trades.py","sha256":"e0bd50f8737ce95eed5029f0bf0e8a0f5ab544856f368c9429a9d9e840a5339d"},{"path":"config.yaml","sha256":"985ce633d68dcb9b7e6f3a56a53f0bc2a585b9d5a96c7d0a51f5260296c5589e"},{"path":"run.py","sha256":"eeca1799be0effe826e1fa5dfa78a8495014f8f8ed9d9fb6d71d12b6ee2ff0e5"}],"relative_path":"trend_following/0200_0498_momo_trades","sha256":"2d04b2ca8428cbba8ea1bf139beddb2552d9ce89be4b41dd587549672d0d24fd"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0201_0499_ichimok2005","category":"trend_following","dependencies":[],"entry_hash":"22c1d5bff4675c167ecba1df66f7abedcba9c2df6cc5459f2016e53da3259387","functional_test":{"relative_path":"trend_following/test_0201_0499_ichimok2005.py","sha256":"3823bf96d484b7fe2acec1bc586dc5aaab26088e96a413bc02d551d8457d770c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0201_0499_ichimok2005","source_available":false,"strategy_package":{"files":[{"path":"strategy_ichimok2005.py","sha256":"fc5107a4426e49601eb448e77ef9c52f8295581c97bf9383e0d89f4122136e2d"},{"path":"config.yaml","sha256":"bb5390acc7252b8ece300dd318216627bfd373384012ccf871d5191e1e71cb46"},{"path":"run.py","sha256":"c498002c1a83e8e645da60580b3af1b21f255d522a59402f21dd48e8081ca7ec"}],"relative_path":"trend_following/0201_0499_ichimok2005","sha256":"cdc2af154ea46428940153266d9cd493708929d3ccd68c97d32908952725c9f0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0202_0509_beergodea","category":"trend_following","dependencies":[],"entry_hash":"fa4e15aeb3cf016e89485780bc9e4ffa5640272971e7dd93deb8a5fdf27c2fe1","functional_test":{"relative_path":"trend_following/test_0202_0509_beergodea.py","sha256":"d9c74fb3c059a3c18d101fe211810ad34255963724726ad9e388668d878181a3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0202_0509_beergodea","source_available":false,"strategy_package":{"files":[{"path":"strategy_beergodea.py","sha256":"f4ab8acd2fc125412645c159a2e5bedf8282b54de0a157b4e44493b4647ee6f1"},{"path":"config.yaml","sha256":"1bab233f36d5840b5f3b405fd667b184a57c94d70c063519465e1c81b19399cd"},{"path":"run.py","sha256":"0ad6bfe59bb5a411c2b50c9e2868adf6719d95d8f16482149c12963ae3729aa7"}],"relative_path":"trend_following/0202_0509_beergodea","sha256":"df8758092452fa069ca50848a45423a3d22f8b7e3142cfba2b4746ea0eafd143"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0203_0525_osmaster_v0","category":"trend_following","dependencies":[],"entry_hash":"ba8ba584d8b0025f68d3843e4f1eb89ad1eafdd6a4f4959ed7a254c2c75e37ec","functional_test":{"relative_path":"trend_following/test_0203_0525_osmaster_v0.py","sha256":"ba4bf50ae53ba951cfdc46da5efb245bc07f9c12fe327a1cc9f645c9be70421f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0203_0525_osmaster_v0","source_available":false,"strategy_package":{"files":[{"path":"strategy_osmaster_v0.py","sha256":"e5780bd4d4064f6b5c4f8466f9c025f3cdb2ba4a3552f9c9a0e2e4988ecd0c0c"},{"path":"config.yaml","sha256":"3d77a89b9a5be995fbc1287170e768a2bf085d0121e830761268e30e654bae5c"},{"path":"run.py","sha256":"ebe56b8326d70e6cc369fc5822c1ac34c2cb08aeb2f5775d0971dc2ed8e5b8a7"}],"relative_path":"trend_following/0203_0525_osmaster_v0","sha256":"1e1ef556a7cac79a3ce968e2a75b661ce69d5650331d785d9ca6780bef2af31d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0204_0528_js_chaos","category":"trend_following","dependencies":[],"entry_hash":"ae6b453bc24ac8788b5b9a7dd814f0c4120f03b7bdfaae330064e4819ed1ebf5","functional_test":{"relative_path":"trend_following/test_0204_0528_js_chaos.py","sha256":"7e653be1d80a4f233398c291266f98bd75bf377bf75b16958cfa98f4d30ebb61"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0204_0528_js_chaos","source_available":false,"strategy_package":{"files":[{"path":"strategy_js_chaos.py","sha256":"f4a22bf48bb42cc1bded4169da5741f1cee8f18f318504b65131ff71d89f611f"},{"path":"config.yaml","sha256":"ffab052c1acaae558651b04bc5968dd08feabfbdefa4f024105aa3d5b880a2a9"},{"path":"run.py","sha256":"b0e7c9e52cc48cfe04ad6336565828252517f1c03a9f8fccca60991f9aa79c5c"}],"relative_path":"trend_following/0204_0528_js_chaos","sha256":"d52c07a0e30f24c86d65ba02ec61e81a139d6807a621d696947f49261bdf8ffc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0205_0532_disaster","category":"trend_following","dependencies":[],"entry_hash":"9ddb422c7ae1e359b2d956b131cd165fcda2f100021a0ce9b2dab88c900b2901","functional_test":{"relative_path":"trend_following/test_0205_0532_disaster.py","sha256":"ce6370eaee4cdaf3926860aae304874103fa1965ece86b6b7d724eb3efeaa28e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0205_0532_disaster","source_available":false,"strategy_package":{"files":[{"path":"strategy_disaster.py","sha256":"f7572228bb2eb100fa7558a9f46e449210a886e772947e6955c689ca025a1d13"},{"path":"config.yaml","sha256":"5f557521eebfad7acca9f184fa56c7d1299d6c132a290d8d9c2b54403ad498a0"},{"path":"run.py","sha256":"963a4e72000541eba167d9666302cdbd9d2823b40564c8c6f67f12ce3e866b10"}],"relative_path":"trend_following/0205_0532_disaster","sha256":"3091c5c58905423074617f4aa16a257b6edb642f6972abe8659645cfbe595a17"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0206_0533_mamacd","category":"trend_following","dependencies":[],"entry_hash":"2efa30fcfa415227d9050a1c8b362a61a7e6c645b58b82de4dff9d674f56c6ae","functional_test":{"relative_path":"trend_following/test_0206_0533_mamacd.py","sha256":"8538a0a7ec6cb04a0edd97093d76e370c895a5b6fdbf6ce19914e4cb33fe0fe2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0206_0533_mamacd","source_available":false,"strategy_package":{"files":[{"path":"strategy_mamacd.py","sha256":"3658b99a50763e1007019507ec3d1158a6399b0f499ece7e840a24e1029a56be"},{"path":"config.yaml","sha256":"89441cef94c402c14a14e9b9dcc995a67031e6cb714079af1582d4a2569b217a"},{"path":"run.py","sha256":"e188cffca0f739edc7ccc6f7166cd4c4f4fe89b7bb36c31b811b5f4250169f5c"}],"relative_path":"trend_following/0206_0533_mamacd","sha256":"b8a419983bd04cc5dfbb6027abfe551938040ea57f766a388d993b6d21bc757b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0207_0536_nova","category":"trend_following","dependencies":[],"entry_hash":"027a7d0d55b0993e752bc3cc612508f6fa6f6246872bcafc96fde10ea880856a","functional_test":{"relative_path":"trend_following/test_0207_0536_nova.py","sha256":"835dfc7d9fe84e2e0089db09c5e0dec9ee0ad84d935bf89b81ac887688cf9007"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0207_0536_nova","source_available":false,"strategy_package":{"files":[{"path":"strategy_nova.py","sha256":"8b257cdd852bca31c3c35866bae4e61c215b091f85194109d3c86e019a3ea9b4"},{"path":"config.yaml","sha256":"5b524750a371fd513b44ddec73da62f993dcb49d2c934213926fd8d1e0fe777b"},{"path":"run.py","sha256":"2d20f468564c443972f3816205b024fa969ccf3066c9dcb29c7f8f359e6ce339"}],"relative_path":"trend_following/0207_0536_nova","sha256":"adcb027416c075b46746078e31f674ccec40fd37f015f5fbf56ce8438ab496ff"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0208_0539_alligator","category":"trend_following","dependencies":[],"entry_hash":"2982f58965cce26753f1435bee1f78382926332ccb35b71f6bbd608046aa76a0","functional_test":{"relative_path":"trend_following/test_0208_0539_alligator.py","sha256":"1b81038000e97fb6fe7a410e3d355be0631cb6b95bac7c57564c49f4ce1ca0b7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0208_0539_alligator","source_available":false,"strategy_package":{"files":[{"path":"strategy_alligator.py","sha256":"4781eeee6a79d45ff8c89993b6a307a374a5a33fc595f1d59de9526d5a6f6084"},{"path":"config.yaml","sha256":"b6888047fe365f7c7c49b74d3536fbc498db5b5b12f45e21858e540eaef0b55c"},{"path":"run.py","sha256":"490070fc55c854f9606b7a7b2848838c4f271bc8e6e47f81b59fd8ddda241cc7"}],"relative_path":"trend_following/0208_0539_alligator","sha256":"99ce9ef2d520a1ceef6d5f72ec31efcfc7706f325d8acd8d88fc97a38bf73412"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0209_0542_vortex_indicator_system","category":"trend_following","dependencies":[],"entry_hash":"860adfcf97789cbab383d41e11fd2e9d0235b305c4ccc807c1245f308cb1c702","functional_test":{"relative_path":"trend_following/test_0209_0542_vortex_indicator_system.py","sha256":"dca9ed57a6880a8d687688f17e4a740ee9c620f62ad6fd913098e4d5690da981"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0209_0542_vortex_indicator_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_vortex_indicator_system.py","sha256":"9158424e634644546c4807835e56c0189628093cfceb68c44245c83bf3e64cd4"},{"path":"config.yaml","sha256":"9dbfed5ebabf8ee76b21318780f508e08558d02624c8dbed579befc57933766f"},{"path":"run.py","sha256":"d817d637e2b35d25fb787ec1eacc8d848f2f368643a32ea8a574241ef26e7ba2"}],"relative_path":"trend_following/0209_0542_vortex_indicator_system","sha256":"15d20aaad7046beaf59f5ceca5eefaa88d3f95b4f1edfd8ee6ea2adc823fde8b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0210_0545_mt45","category":"trend_following","dependencies":[],"entry_hash":"4646b05eef67f5fac1c1cd9173fbb53fa5a0c04070c689b3edc4e3ce9aa4e697","functional_test":{"relative_path":"trend_following/test_0210_0545_mt45.py","sha256":"a59500110b1e2e7b385f404873f3ac313671cc16b04dd94ebcbaada85d6302f3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0210_0545_mt45","source_available":false,"strategy_package":{"files":[{"path":"strategy_mt45.py","sha256":"c48ec22c589a4a98d5267098989391d417301dabbf171f6684fc0fce30669b86"},{"path":"config.yaml","sha256":"e2d3040b77983a7fc195cdd260334eb3e1a3fafd7cfdcc37ad8b653e9679ad0d"},{"path":"run.py","sha256":"8da6c0696228fdff216a7c09eec1d45b50e3ba143fbcfbcd70e86917d6ade93b"}],"relative_path":"trend_following/0210_0545_mt45","sha256":"01e46c5f475b2e1db93734f0ae3f096ac6db9e26275addd5b6ec2e11ffec9ade"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0211_0551_burg_extrapolator","category":"trend_following","dependencies":[],"entry_hash":"d6368147eebde9b9dd8d718d41ca62e4009cc2ebc71d0f7683d5bdcc3c207cdf","functional_test":{"relative_path":"trend_following/test_0211_0551_burg_extrapolator.py","sha256":"ab7dc20c3c510cb77a53222234c1079d35a575572fc6ab347afcdbc6e149cbaf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0211_0551_burg_extrapolator","source_available":false,"strategy_package":{"files":[{"path":"strategy_burg_extrapolator.py","sha256":"9b38ee25f147967ab2697864ad5637e9e64437a5e969f1fb667378d8c32990ec"},{"path":"config.yaml","sha256":"928a755c807cdb8a1a0eae330f0fd33013547fafe8a73c1d363f937b4fcef470"},{"path":"run.py","sha256":"79a83be9e71d26a887bcecc3bcfbe2c049a21fc8ea818c67b9a923808078e936"}],"relative_path":"trend_following/0211_0551_burg_extrapolator","sha256":"bee556afc194fb140db79700607c36c4c57199e529808d78dfd7814a47c94c7a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0212_0554_up3x1_investor","category":"trend_following","dependencies":[],"entry_hash":"e8e11db84d8bd88c7ccd32e43cfc62e82a612f3a2bcec596728c63eb5b040b73","functional_test":{"relative_path":"trend_following/test_0212_0554_up3x1_investor.py","sha256":"6fa2632c00e8c3434038e5ec7809896b6b18bbc7b5fe301502c3f5987bbf69ad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0212_0554_up3x1_investor","source_available":false,"strategy_package":{"files":[{"path":"strategy_up3x1_investor.py","sha256":"8f2f8f9dff91d6c67bf309306165d3f27a20e05db51b8fb53329cf7c3e05c10a"},{"path":"config.yaml","sha256":"187253f5e8ed4f78163d998436046d78f93a5935059305f82cc22782dc4c6698"},{"path":"run.py","sha256":"dd408f166b2d28863f8eac582263c926e7ec4ba17ba5235bf427c76b75a02f33"}],"relative_path":"trend_following/0212_0554_up3x1_investor","sha256":"4cfe6b5ea88ff18cd1b53e9bb1ff444c01e3414184de2070cec246edcecd7298"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0213_0558_nevalyashka","category":"trend_following","dependencies":[],"entry_hash":"3f0c7ba90770a808cec4b46fe29fd8adbebbff723f9da88e35bccb9f2fecc2a1","functional_test":{"relative_path":"trend_following/test_0213_0558_nevalyashka.py","sha256":"c69f39597be092b981b5bb69ad6e26b4f97c1221c6027756a4b6a348a257f8af"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0213_0558_nevalyashka","source_available":false,"strategy_package":{"files":[{"path":"strategy_nevalyashka.py","sha256":"69eaddd3314c82d25d987a43cafdfbc9f8256123b07ce4fa4445c11fd1d8fbb4"},{"path":"config.yaml","sha256":"3cf8d9810d9a2550d9ffb24866f825bf5d0d63f04ac3d17299278cf56f7834ae"},{"path":"run.py","sha256":"95b9f1f9a9b0781a623659bc6baf34d0afe7611f117555e3f97a148caa3a2c66"}],"relative_path":"trend_following/0213_0558_nevalyashka","sha256":"be8bfb657985f283ef5345475f3e4acc1a69bef944fba6c6a7ff9b11a6d60416"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0214_0582_intersection_2_ima","category":"trend_following","dependencies":[],"entry_hash":"e8d9e186323af0ec4e1b6a933cf04587738c90d964852b325201f7f8b106c53d","functional_test":{"relative_path":"trend_following/test_0214_0582_intersection_2_ima.py","sha256":"8b6ded4b5d9ed9d36adf18cf8de38dd9ef9eb5428f09549ce7ce6eb8051774a2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0214_0582_intersection_2_ima","source_available":false,"strategy_package":{"files":[{"path":"strategy_intersection_2_ima.py","sha256":"21469e05359bea8f0d5f8eb9316dbefed5aac503c02722f7cec7bc4a15efb789"},{"path":"config.yaml","sha256":"9ea470dafd4ff7a7247fd0a9822c488dd58e900578e2579fe5f824994ae99d95"},{"path":"run.py","sha256":"eaa99163df315d3f3d42bd307b9a0a0c87a9324a332d0e58876ea93f0f2c94df"}],"relative_path":"trend_following/0214_0582_intersection_2_ima","sha256":"61c604efce6a165991141d1f2de1ec5433bf8c0a25f8203fe8e7d1cccdfd2a19"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0215_0589_vlt_trader","category":"trend_following","dependencies":[],"entry_hash":"2709772a644b22400730cf117051043c738b11676e68c7a87d3886efa31fced0","functional_test":{"relative_path":"trend_following/test_0215_0589_vlt_trader.py","sha256":"8e35a2e2cc2e445a1517caa45b8a12a61d9cb2a7477da52e745b0d6da75ee06a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0215_0589_vlt_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_vlt_trader.py","sha256":"7aabca0b8a8b32cb46dc3db24d3596838940e09632cf71e1592678d6225d9557"},{"path":"config.yaml","sha256":"50016a312651869ea5a23ccebb49c53a7687029311d1e5cd2acb7c17cecadc93"},{"path":"run.py","sha256":"2bb8a33dae87b44246690d1ebd029d5c4c6e645ea17b27678fe1c42bfb1893dd"}],"relative_path":"trend_following/0215_0589_vlt_trader","sha256":"32233bce2eb7f16fb8ef367f49ff35265a4a94a31f6d0a74fd6c6ffddb4cdf5f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0216_0596_pipso","category":"trend_following","dependencies":[],"entry_hash":"8cb0c8de1d43a6320048eb0a26886d68fd0b58984ae3056238031fe242a286e3","functional_test":{"relative_path":"trend_following/test_0216_0596_pipso.py","sha256":"4238e4e0910a8ffca9d1408495351661f244c3125f1570153ecb7e47037da542"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0216_0596_pipso","source_available":false,"strategy_package":{"files":[{"path":"strategy_pipso.py","sha256":"0f546090bab3af392c4a592e2463ead41e8b1dcde5dce2eb5073c227af0db3ca"},{"path":"config.yaml","sha256":"f7da2d0b41cc5a30fafe91113c001356de0e17f34f31cd162aeee7642a276ed0"},{"path":"run.py","sha256":"593b69f387ba8591e35c176634ec6a954214b796b71f978d406e977be7bf9594"}],"relative_path":"trend_following/0216_0596_pipso","sha256":"e5123286611ba4716ee0eeebaa7d2e13cb27291d27fb9e28a70c493b630b2c09"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0217_0601_cheduecoglioni","category":"trend_following","dependencies":[],"entry_hash":"fdef58f0f76a2af7ba8e28b130606eef59c248b72a55f24fb25283a7acc3684f","functional_test":{"relative_path":"trend_following/test_0217_0601_cheduecoglioni.py","sha256":"5bd2d2d6840bf051bcc943457e91eadb5cdd36a5d2feea2f0b2001cd6731c528"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0217_0601_cheduecoglioni","source_available":false,"strategy_package":{"files":[{"path":"strategy_cheduecoglioni.py","sha256":"02e9b0ae9a9a883aad5505a3e83951297d25fe6aca5c27462e5296ed5d8bb1da"},{"path":"config.yaml","sha256":"c2ed2ab5d236e58b08b812c199713f3fd9f1b1845f5689ffa8d01232768242c2"},{"path":"run.py","sha256":"9e1245f4af80768a0fc9bc8d841771b8021927a7069c1a86c33a072a4c71d987"}],"relative_path":"trend_following/0217_0601_cheduecoglioni","sha256":"1fe9a03f0d57fca0054ce5af1abb4efaeaf64cd4a263f1f2cfa4d068048c8480"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0218_0611_morse_code","category":"trend_following","dependencies":[],"entry_hash":"94078f95adb37921fa1973cac40e450637d7660b89164a631caef600b2ea2cc6","functional_test":{"relative_path":"trend_following/test_0218_0611_morse_code.py","sha256":"252f1f3fe71de27dd0b2aef18599d12fe5102e7702f51e9f7d7f22ffa44142ee"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0218_0611_morse_code","source_available":false,"strategy_package":{"files":[{"path":"strategy_morse_code.py","sha256":"4a82f295b30fab36735324ead61f9eae852450106aeab474d18f1d0aec4584e9"},{"path":"config.yaml","sha256":"86155fc840fb959886234cec82133288d3d6e11f54efabda6ec86f265e2174d0"},{"path":"run.py","sha256":"8857754e525722c7f98c25e57888bd5192f16c780f0db30eb3877896a47b4068"}],"relative_path":"trend_following/0218_0611_morse_code","sha256":"ecd98c000966b4ebc34bb29cfdbd73d6d94882b04c5a12258538876a02bcceaf"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0219_0625_nup1down","category":"trend_following","dependencies":[],"entry_hash":"9ba6a92944995b04e5d446449c34e2bda75afd1d9ddc155a16549b0811d2efa7","functional_test":{"relative_path":"trend_following/test_0219_0625_nup1down.py","sha256":"6d4a6db759b3a848add3c9047718979b28be047bc773f7fd3f479c9ea0b0b9be"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0219_0625_nup1down","source_available":false,"strategy_package":{"files":[{"path":"strategy_nup1down.py","sha256":"b6273ab6a4137e1368419e42ef98ca225966566dfc78147804c69709fc002d93"},{"path":"config.yaml","sha256":"2b70d93a048bd75c1bbaf52953ba4d416dd0227a99d7d80703e3c2c1f2e15c72"},{"path":"run.py","sha256":"865453c7fc3c84d5985ac58e961dcade1ff5a5334d8fbf641f4b08ad80e1a864"}],"relative_path":"trend_following/0219_0625_nup1down","sha256":"391ff2fb5d75f00bf40377fee094d43c652dbb143c2753f8e1eab9bbe5ceecab"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0220_0645_t3ma","category":"trend_following","dependencies":[],"entry_hash":"016f53484a5f7061a1824e95c083b8830e199bcb8158c2efb303692e3ff956c0","functional_test":{"relative_path":"trend_following/test_0220_0645_t3ma.py","sha256":"c8ce60f061fce06ede13a96a4c9870dba565c06fcfc9e5ff43b8ff8d37cd0700"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0220_0645_t3ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_t3ma.py","sha256":"e88c59f01ade3145e1b6b48b7f2e779ab77e21b0a52e9fd24dcad13dde555c04"},{"path":"config.yaml","sha256":"9358798357765a8afda0b257551d06c1f4917117bafe14a71df04d9962300f4f"},{"path":"run.py","sha256":"0320fda81d3470d0c96a5a938d9a9a48a4c821106ef168ea49801c43e172d152"}],"relative_path":"trend_following/0220_0645_t3ma","sha256":"8a9a4e0e16f8d463e1a03bfda4e21687c30242f2d490ebf75b180dc822d9f547"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0221_0651_e_turbofx","category":"trend_following","dependencies":[],"entry_hash":"e0e129cd87d9aad3fe890223f92fe209e00abc3053b1490850899fca4210f4cf","functional_test":{"relative_path":"trend_following/test_0221_0651_e_turbofx.py","sha256":"1abd30408d9d25ebbafcfc42b1c10ce859f7b85a4d847a7400a4ab47c8986976"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0221_0651_e_turbofx","source_available":false,"strategy_package":{"files":[{"path":"strategy_e_turbofx.py","sha256":"7ddb29e1e1db32cb2189d3972a868022dbe4140b9f07c8956aaa4d80032e5f14"},{"path":"config.yaml","sha256":"59a674c3f59a0d2d2f5916ab60c577cff2a96be1c477eb2b43485ae784dc96ed"},{"path":"run.py","sha256":"5908a3c88c07302101bb83f410dbfc776be722aadb23747d10a8ac8b243c275b"}],"relative_path":"trend_following/0221_0651_e_turbofx","sha256":"3650857e4344bf309412cda81764be0e76faebee1ae775d6eece7600b76a8367"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0222_0657_simpletrade","category":"trend_following","dependencies":[],"entry_hash":"0f75e08c7ea71394d51f3afbad0ba5b3361ffbb82dfcdd9da9d7943571442efb","functional_test":{"relative_path":"trend_following/test_0222_0657_simpletrade.py","sha256":"9228138e16c9aaa289b3d97fe7307c335b6e7c4ca7217e0f4cb4ad24a344a622"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0222_0657_simpletrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_simpletrade.py","sha256":"a885de85b4fa06acb84410239a7e4b78993fab193d16d3f18968b277bbce06ac"},{"path":"config.yaml","sha256":"293c699cc2c437f26f843077d64db1fe1e54b3cf467c2b383f3f5a8381ed1a6f"},{"path":"run.py","sha256":"4ab055830cfb3f9177eb2c32f3639fc6acc0e2be2899a30d079f0085696f5cbc"}],"relative_path":"trend_following/0222_0657_simpletrade","sha256":"cbd403afdd3471d8a028d8a9d043d15866fda95a0c7d708f3d24a409ed6e59e1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0223_0659_big_dog","category":"trend_following","dependencies":[],"entry_hash":"45f66b8e0aae3406457652d83931a5342de51d172b3512f18c76bccfbde18869","functional_test":{"relative_path":"trend_following/test_0223_0659_big_dog.py","sha256":"fadea0cef52d11d8975f27db423f37bfa0906077ddb8c8cde71a2d520de6e268"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0223_0659_big_dog","source_available":false,"strategy_package":{"files":[{"path":"strategy_big_dog.py","sha256":"57e8a777b49d466c3b5ed74c09e04faa191d095b96b6c4eec749caeb60ee3f37"},{"path":"config.yaml","sha256":"9ad25ed68e2a5d8424bff78f0436bc0f3adf6bceac7117e5702a89fdebc67bed"},{"path":"run.py","sha256":"c2f7cfec01e6545f65675bc91fc8ab82b88ce032d36267fae7d88caede50702b"}],"relative_path":"trend_following/0223_0659_big_dog","sha256":"f849d0b9d0009259a52b936ddbf56d6a0b948c37576bfcc7a8b7206e9a5e777b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0224_0660_autotrade","category":"trend_following","dependencies":[],"entry_hash":"3aacfb4d893a866c25f59c2a72f95025af14395d39c96d6534271ce3486549ac","functional_test":{"relative_path":"trend_following/test_0224_0660_autotrade.py","sha256":"062d0d853aef0e02ad40345e4f4f558be98d5fbed3ab7f22174752dbf4c19b7b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0224_0660_autotrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_autotrade.py","sha256":"ee25a5e9c261d18dd696bb55bcfbc7089e2880269b8a51e40de15e0346801199"},{"path":"config.yaml","sha256":"8c7246098a9a6be1e9102f4eadf111139196c77bfff8e27355f909dc02f6cf68"},{"path":"run.py","sha256":"11ce256ccc8ca9f1d62c04c83e4a42c9d6cbaa2b6f6f5cc6c1d4b9e735ad9a42"}],"relative_path":"trend_following/0224_0660_autotrade","sha256":"b7f237250e31e9accfa72eb7603f6ecc798e95f75731abf4fc755aefa8ff2559"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0225_0661_2ma_4level","category":"trend_following","dependencies":[],"entry_hash":"0a9277ea1bc31d2536401243671fa2d1bcb870c832b3b4d3cdf26967a5baac7a","functional_test":{"relative_path":"trend_following/test_0225_0661_2ma_4level.py","sha256":"6c5fcba2319aa2d1cf861f370eff74a83e58bf9a9af9f1a9dbcbde35aea77e07"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0225_0661_2ma_4level","source_available":false,"strategy_package":{"files":[{"path":"strategy_2ma_4level.py","sha256":"de2bfb8b91b2853c610b84932ab52155734379dc39ad1225644d9165f44585ac"},{"path":"config.yaml","sha256":"e1f3ba478bfb1435aa196c9ca2e0c717300cf78d6bf41403ff4e18fc086fca40"},{"path":"run.py","sha256":"74cc6884b42191e0b0a7558ded02986193afd906be5699a54ff7ae4a0dbeab87"}],"relative_path":"trend_following/0225_0661_2ma_4level","sha256":"046ee4861d0ad8076b7381d3d5e2e7bd23e72f0451159bda8c8a6871f95c2d7b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0226_0663_gazonkos","category":"trend_following","dependencies":[],"entry_hash":"d2aa2e7aaa1c88e42899b89c5754f9f9605c36a7bdbc16a4360f1efee0cabea1","functional_test":{"relative_path":"trend_following/test_0226_0663_gazonkos.py","sha256":"d0c32c8ac674413c02d8ef767acbb404240671921fd89fafa18dd969d6804b17"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0226_0663_gazonkos","source_available":false,"strategy_package":{"files":[{"path":"strategy_gazonkos.py","sha256":"ea2bd73c1552899cc5ffcbf45a1e19369b3346f76789dd160484a5585f7f95e8"},{"path":"config.yaml","sha256":"33d90db3a7ed75d0d59c7a9ec5104a1c5c5744cce3968df5581a1b2ac3fa91fb"},{"path":"run.py","sha256":"c783f6d7fdab527a56a68dfbc332e44f620ed5932ede3cb05e3e46788abc72ed"}],"relative_path":"trend_following/0226_0663_gazonkos","sha256":"e81df083f377171f1115ff6d98b96161a8d4661866f756dba8c9cb37e66ed3f9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0227_0665_forex_profit","category":"trend_following","dependencies":[],"entry_hash":"df367c4d3754c69f70af3c86ab5bdaab72c13b2ff614b4103fb41eee210be177","functional_test":{"relative_path":"trend_following/test_0227_0665_forex_profit.py","sha256":"e98773daaeb43dec54f4455ee64a7240bf9f33a3cc3279141a941a724f4b7cb4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0227_0665_forex_profit","source_available":false,"strategy_package":{"files":[{"path":"strategy_forex_profit.py","sha256":"980b5d7a591d8610d93165276d7f8f3216d3545b56adb4b6a9d71d1c69845a81"},{"path":"config.yaml","sha256":"b69716bc298a42b68b83f6b961b5c41e299dc89e7b2c62b3abec41dcfd7b75f1"},{"path":"run.py","sha256":"57341a910076aed017155f3e4e82dc4e20a71e17016d34906c53d7f0bc5991f7"}],"relative_path":"trend_following/0227_0665_forex_profit","sha256":"3a37babaf046087b070ced6e2467cf1a9dbeaa62dc0660abad6d79a4cc945a7e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0228_0675_macd_signal","category":"trend_following","dependencies":[],"entry_hash":"a0db9c06f3c26285bdf841129979990528f35e9a829c19800c7f571871d9df8d","functional_test":{"relative_path":"trend_following/test_0228_0675_macd_signal.py","sha256":"0722e20df355019a2683c4d011f096185335e781ced98a228d4477432c54a83e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0228_0675_macd_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_signal.py","sha256":"864935cb2191b2c3ae08f69054fcb71a7b905642df6e9f2b84617fb834bce0d7"},{"path":"config.yaml","sha256":"42de5d3e2d03ebe1474f85d450142e0ef8e37a2bb2a79d673ece91274e8a1751"},{"path":"run.py","sha256":"f8a5f4ddb3904e567e466ddba63295447e4d4c036fcb1e80d6add0cb0805fb35"}],"relative_path":"trend_following/0228_0675_macd_signal","sha256":"bb0999f47b1b02e5e9fe79643098940d43c1bbd208ad882ea5dbe4539bf66077"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0229_0689_backbone","category":"trend_following","dependencies":[],"entry_hash":"1f462fec58eeea2f552cb55a723d6207c47fa71babbb7ad21e7ff72e01e52b0a","functional_test":{"relative_path":"trend_following/test_0229_0689_backbone.py","sha256":"ba21f254d91079c2f62cd707980dc6830d623bf6f994160b941ffbdd27ded8b0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0229_0689_backbone","source_available":false,"strategy_package":{"files":[{"path":"strategy_backbone.py","sha256":"3324f5188e105c1b792f1787353a09390a4a1e4d957cba56d75a5f9f88460279"},{"path":"config.yaml","sha256":"cc8412f23b3be17fdb72ac31825452b21a5f3a3c0845dfbd689cb6de1a9d87ee"},{"path":"run.py","sha256":"cc761118e045910890456d9f2bce8f0be747f319347beee355ca2707585693c1"}],"relative_path":"trend_following/0229_0689_backbone","sha256":"4c572fd2b8c9df4bb90cfd44705b1d0597e671b5736ef82ef855437f4a25155b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0230_0701_mare5_1","category":"trend_following","dependencies":[],"entry_hash":"ae8be447a679d45e1d8637c9f6f2985cd625852ef4ed68767ebd9dd2f0a410a3","functional_test":{"relative_path":"trend_following/test_0230_0701_mare5_1.py","sha256":"f49cdddab52dfc4f3018740913fbab79e6c5ddfcfcb527f6da7693488001a47e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0230_0701_mare5_1","source_available":false,"strategy_package":{"files":[{"path":"strategy_mare5_1.py","sha256":"afc87de556214fde59551deac33bcbdf8caeab32c578fca088cc3b339a754a41"},{"path":"config.yaml","sha256":"48ae280dd42ec9e80f885364750b5170c24ce33aaefbc38bd9c9ec4983880937"},{"path":"run.py","sha256":"26567f7a78e5d6053b2fb13cd7199ee959f9397792e8759d90c444ad49c3090d"}],"relative_path":"trend_following/0230_0701_mare5_1","sha256":"70e9888ee6c92ec27067d5842305cb12148d8336678ef8715bfd5a61b2060754"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0231_0702_simple_macd","category":"trend_following","dependencies":[],"entry_hash":"f589174abe375ee8e527a03bb6198c05c890e39215bbca746069a67719eb7ad3","functional_test":{"relative_path":"trend_following/test_0231_0702_simple_macd.py","sha256":"ac0c544f703cf41511ab7344f07aabc22f59db03c4d18f3db00b2859e3a91847"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0231_0702_simple_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_macd.py","sha256":"280ae9e22fb5aa6ea0e8a2ed054988e52a9c0c88026714a8a3357e4b8296578b"},{"path":"config.yaml","sha256":"79804390ec49db58a9a296e368359430fa2675c962b7e757c5e0c2683e127427"},{"path":"run.py","sha256":"3392700dfed51d833962089c8e3963054f63f8e744a2edc02651ddd74414c009"}],"relative_path":"trend_following/0231_0702_simple_macd","sha256":"a9a318a29b6c94569a96d8f5e75c31dc39e1889a4560e2e8d22e0f3976836d50"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0232_0703_tdsglobal","category":"trend_following","dependencies":[],"entry_hash":"234f19412a14ae810bb997075735fc7bf45c0f55e2d9798b2ad29fbb22136b0a","functional_test":{"relative_path":"trend_following/test_0232_0703_tdsglobal.py","sha256":"39d29c7ecbb7d13a5676f206dc3e3249d9b0864808b2395a3ed471f7e89e2f7d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0232_0703_tdsglobal","source_available":false,"strategy_package":{"files":[{"path":"strategy_tdsglobal.py","sha256":"0caa70ede93074a917b898f4f29b463e18c314d67214bc3d2998ae40b509b056"},{"path":"config.yaml","sha256":"087814027ec3516c9c08a8f86d6f248878c4669ad331628460b17bd28ca2475c"},{"path":"run.py","sha256":"7c4b0ab3586128a8f525f8d2f6c4f4e48afea7c30c13e7557c8c1ef43816983d"}],"relative_path":"trend_following/0232_0703_tdsglobal","sha256":"ac058934c9fe36643bc0fda773a1318bd0753b4db19ad2fb41645fd2a50d23cb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0233_0708_robot_macd","category":"trend_following","dependencies":[],"entry_hash":"2812522831a08f0d4f4a5a5168e6251eae6d83f2dca0c077da4fabf84276af9e","functional_test":{"relative_path":"trend_following/test_0233_0708_robot_macd.py","sha256":"43fbfd685bf09b85a46cc03a9b35b01141ddf92e1376e1c83f46dd120d76638a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0233_0708_robot_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_robot_macd.py","sha256":"316a6d9c22cd2ae5ab0b09eb2b62b016743311979b182fd16a9b480127c6135d"},{"path":"config.yaml","sha256":"cd52c1524519638fe7896192b54e31cf64c583c9843d2745d26df592ed533bc2"},{"path":"run.py","sha256":"9746b01c3674636e85b2026543752f70ffd86cffc54e9ecd3e3642238a402bf4"}],"relative_path":"trend_following/0233_0708_robot_macd","sha256":"ca44001def7148c3bd880387c9263174265910af7453555714413116d0e462d6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0234_0710_up3x1","category":"trend_following","dependencies":[],"entry_hash":"801b1bda63c6a9a24db8195e89ccfcdf8fa0f7355a09b4fc1059da6e5eb2dc26","functional_test":{"relative_path":"trend_following/test_0234_0710_up3x1.py","sha256":"3b6f228aecf4b88b2ab8fb1d58156db59390c526b49a1eb219dbd231d3aee36d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0234_0710_up3x1","source_available":false,"strategy_package":{"files":[{"path":"strategy_up3x1.py","sha256":"825d6627ee1a400df9aa661d3a5a900e29dcbf774fccc0ceead10e067273de73"},{"path":"config.yaml","sha256":"6ffd77dec2d90cbe59e88804bab1856f8f338dddf130522fbdf3bd3854b96c07"},{"path":"run.py","sha256":"103b8a77daa8c9c238a526024bceac97bf9375737eedcd74c9bbf3f52acb5cd2"}],"relative_path":"trend_following/0234_0710_up3x1","sha256":"b6d18d12ce18fb571aa74b37a71eced71d915c9b1f539a2983f8520331b63706"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0235_0711_bull_vs_medved","category":"trend_following","dependencies":[],"entry_hash":"b6f8798b13f11c8b9514f6930d110fedc2a1a5efdf44b1886599227a0374dfda","functional_test":{"relative_path":"trend_following/test_0235_0711_bull_vs_medved.py","sha256":"223ea9976f7e2d4fb023f3ee1609a339b90b93970bdd50922dc8f35801bb4169"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0235_0711_bull_vs_medved","source_available":false,"strategy_package":{"files":[{"path":"strategy_bull_vs_medved.py","sha256":"72f22b39c7189ab7698b9830414c2024b9979499b278c591e6d162d04d54c28d"},{"path":"config.yaml","sha256":"d2d1a131d7cc7973534662fdd46434f318c8e2ced96080f1c8aa6da292eb518d"},{"path":"run.py","sha256":"dc3d9ea19793fa0696f34e7925c91a642a44eb6114e540899f3422dcc0a279e0"}],"relative_path":"trend_following/0235_0711_bull_vs_medved","sha256":"85d6d354d10d4693e7170f730e11e43463633c692af5b2cb00b88cc865393729"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0236_0712_up3x1_premium_v2m","category":"trend_following","dependencies":[],"entry_hash":"e1cafa59e4277b0dc685d5f25afa811b298129fed65b42059022539b610a351e","functional_test":{"relative_path":"trend_following/test_0236_0712_up3x1_premium_v2m.py","sha256":"973da540a80bae95a915bb5164e44f4e0ca85a4645d729f89a1cca24926fadba"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0236_0712_up3x1_premium_v2m","source_available":false,"strategy_package":{"files":[{"path":"strategy_up3x1_premium_v2m.py","sha256":"b14b66beb8d4f1ed79a1d94b8425e2214f4b315fbd06bcbed2f78c91bfea5459"},{"path":"config.yaml","sha256":"ad7d84caca86e6f72c078263bb8c2a01e9d37f8144270b7af4751652f3093c67"},{"path":"run.py","sha256":"3a7ca7235c112b108735e26694307480ec92062612a273f0538730707f5b8271"}],"relative_path":"trend_following/0236_0712_up3x1_premium_v2m","sha256":"77d0ce02ac0b42867d1ec77d30ada8b801b666c25484adf0514584e6c33e3df9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0237_0724_ride_alligator","category":"trend_following","dependencies":[],"entry_hash":"e0dcf16289c68cfed78413ade9fe340be9f0b7098620fbfd0af5cde636c609ad","functional_test":{"relative_path":"trend_following/test_0237_0724_ride_alligator.py","sha256":"4a9b7818406b9cd47c9c5503f374d22c8ca29e123d15159070f6ef1192160f0b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0237_0724_ride_alligator","source_available":false,"strategy_package":{"files":[{"path":"strategy_ride_alligator.py","sha256":"f5494f69f2b0e578371592fdce18e562615e9910f04a81e8ac5cf19d648de7fa"},{"path":"config.yaml","sha256":"0ca5ebfa9195558ed0bbcf9bd54127e4b261d755305f69eb0487ac3511c1065a"},{"path":"run.py","sha256":"9ddf8156b3ad7504ee40049bcc1ddc92f5717b7bb916f7e101317afbf6fcbca3"}],"relative_path":"trend_following/0237_0724_ride_alligator","sha256":"8ae4bc8d2353ce949204615618ea4b2b312ba23bf7d43fc41545652306b74141"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0238_0740_adx_system","category":"trend_following","dependencies":[],"entry_hash":"b083ad387f1eb5b17b18e7d8fc0b19706cab8146e3be3d7f3fae6c7aaa14214b","functional_test":{"relative_path":"trend_following/test_0238_0740_adx_system.py","sha256":"ba3961ec01907ca4510fce487e2accc591eab8ed7b306229ae0205b1a4d59d39"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0238_0740_adx_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_adx_system.py","sha256":"6ff8cc38ccda8a8f9b4b1d523188fb9c194538864b8b424076e687acdaa50732"},{"path":"config.yaml","sha256":"c92b5f3fd85574722e0d9af5eeeb8be72cefcfd02df7eeb5f692209e5dd80823"},{"path":"run.py","sha256":"8934567a700b888626f79108e49fd15229c25b06f5ef025c197ea0f1b6a21283"}],"relative_path":"trend_following/0238_0740_adx_system","sha256":"434aaaa88d66ad9d844bd4592f42c742bffcd093e7a8b9518b5a48db563eaf6c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0239_0742_prophet","category":"trend_following","dependencies":[],"entry_hash":"558a2cb220c85e21698130791b03ec0b45355dd8dc167937b9de0cdddc4806bb","functional_test":{"relative_path":"trend_following/test_0239_0742_prophet.py","sha256":"2b5cb8976cb6fa4e30e57f6c4cd0af30878ece0a2c389c0556d3ba7afd373d98"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0239_0742_prophet","source_available":false,"strategy_package":{"files":[{"path":"strategy_prophet.py","sha256":"af8a2c0feb7300075bc41558f39566df5b7a5c24fd472009868e8b32733eba6f"},{"path":"config.yaml","sha256":"24d5c1b4807a29782af298c2ea4a810d4d56472033ccffe5417586da06229064"},{"path":"run.py","sha256":"4b42b2a0dcbf39aad3eebff242f0158cf506db6fbf8668a85e80a5c47a1bd699"}],"relative_path":"trend_following/0239_0742_prophet","sha256":"6e5f032fb6b17acd7c0b199585ef81a8db3511f421577c5b4e40ea03bc030b52"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0240_0746_escape","category":"trend_following","dependencies":[],"entry_hash":"0f7912dcddddcd37e1262d119e1fc5d925c95219fc12ad39094d7022a7030efb","functional_test":{"relative_path":"trend_following/test_0240_0746_escape.py","sha256":"fb05cb56159d2679e256684c5068c132d90566c7a64b067a85551df2e0d8f2ac"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0240_0746_escape","source_available":false,"strategy_package":{"files":[{"path":"strategy_escape.py","sha256":"f50dd67c2e6c85d2e05f5e3df47e60c9e16a0804b5a7a1a7e482c8743b10ca21"},{"path":"config.yaml","sha256":"ea43f1e88f92e96dd38a5105a5e945489ced425e2bdf886060c29e3f79ec0d9d"},{"path":"run.py","sha256":"2446608f52f35fcaf00fb2681e40689a2f4f10b70ece78258fe11fb1d6f94d35"}],"relative_path":"trend_following/0240_0746_escape","sha256":"efa7daa1ed5f2526255bcf78c1c44d9c36538da97c9ca329901bcc138e73174e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0241_0756_go","category":"trend_following","dependencies":[],"entry_hash":"ba1ffc57438cd2cb3292cc8acdb0df4999048e9a705766345d78f68a99e77147","functional_test":{"relative_path":"trend_following/test_0241_0756_go.py","sha256":"16d45fbaec42ad3045e8a14b4cfad809a0d862e71d19245c5503c0808faa5fa6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0241_0756_go","source_available":false,"strategy_package":{"files":[{"path":"strategy_go.py","sha256":"386027fd02e97e6c124eeda0f4096cf929f3d6a42f7cf5ab7441ab72cfecfafd"},{"path":"config.yaml","sha256":"1e23ad085fa2180b67745eae50484f485bce6b89bfb0a230f081ee1ccab07eaf"},{"path":"run.py","sha256":"4839501bbe9fcc0b9ddb593b689659ff81bf973c23dfdf40d3a392c80952b4e2"}],"relative_path":"trend_following/0241_0756_go","sha256":"ca181318003bf22cd5c5ef1704ebf0ae2a590857f9cfa0757f54c21849fbe25b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0242_0757_expert_macd_eurusd_1_hour","category":"trend_following","dependencies":[],"entry_hash":"2e032c004545818fce0b60ab0dacbc9518b68aae3880f99fbf52df3871afb892","functional_test":{"relative_path":"trend_following/test_0242_0757_expert_macd_eurusd_1_hour.py","sha256":"ef5df6ca8cb527dc3928e4b37ed09ab0ac6dafb89d97697cacbf31fbfae39c9d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0242_0757_expert_macd_eurusd_1_hour","source_available":false,"strategy_package":{"files":[{"path":"strategy_expert_macd_eurusd_1_hour.py","sha256":"d36214cd75b5bd574e04bfe419ee9e87367db15b6cfb58b0aa14d4348b66cac3"},{"path":"config.yaml","sha256":"872d921e772dad4ebdc5c986c2213b93e8cc4b49124e1fa99bcb6a9c2d514abe"},{"path":"run.py","sha256":"48e596c4304cbd872736b5db8992f8c47a76ba026dba15e06c70d632c69f5ed7"}],"relative_path":"trend_following/0242_0757_expert_macd_eurusd_1_hour","sha256":"49e204fc1c2fb012edbbbea4128808fa3e2b5be512e3ae6ab8aa9c4d9b3724ad"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0243_0799_e_regr","category":"trend_following","dependencies":[],"entry_hash":"a373e69edbd25be985d243238cc0c2b081ed366d487e5db535fb8068890e3aff","functional_test":{"relative_path":"trend_following/test_0243_0799_e_regr.py","sha256":"fe7224573c135033bdc08cbe02ddbdce68c4e3158b1336303410747cc2126e70"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0243_0799_e_regr","source_available":false,"strategy_package":{"files":[{"path":"strategy_e_regr.py","sha256":"4daf7cf553c720f70501ad0725ff4c256b7a7f1120ee09d9164285a4d0db37db"},{"path":"config.yaml","sha256":"f5ec9e63011b0413b664507161de5f8cdadd7d7266b827cbc43b44b153819791"},{"path":"run.py","sha256":"c3b29000de0adb73aabf1a8b3cd9ee8b0709ceae2871429e81851d7a758858a0"}],"relative_path":"trend_following/0243_0799_e_regr","sha256":"e56ed9594f53d224cd6cec302ab1943e2e7ffc47092e9d44a39334ff57e68d5e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0244_0800_20_200_ants","category":"trend_following","dependencies":[],"entry_hash":"37e34ab31c5a9c6faf05c0908532013e23fe46ca6855dbabc93c9b3987c0606f","functional_test":{"relative_path":"trend_following/test_0244_0800_20_200_ants.py","sha256":"702d0bc52e34a3fb298657420b32d7acce1d74a04827f6b94c4a0d876211219f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0244_0800_20_200_ants","source_available":false,"strategy_package":{"files":[{"path":"strategy_20_200_ants.py","sha256":"d09f54e65cba3963c5d84b503ca2f2ca67e09291a5bb9d147748316425886911"},{"path":"config.yaml","sha256":"b5f70ffbeef1386e8341eff77bbe4fc3a50605ceec133415beacac7ff5a1a7cb"},{"path":"run.py","sha256":"75ea028f4bc92d7c4162f8de4e4938f6ae86167039b300fdfccaac2876b5c318"}],"relative_path":"trend_following/0244_0800_20_200_ants","sha256":"8a5fc88e2e0e8accd205330cb1f17ec9837034870b251a2f1ee5d16c794c9bf1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0245_0808_trigger_line","category":"trend_following","dependencies":[],"entry_hash":"56414c5a4aef86be498f76b6f18ed01f0ba75d92350e5a2966553d37697da433","functional_test":{"relative_path":"trend_following/test_0245_0808_trigger_line.py","sha256":"1624633cb737e81d7a96ef924eb0cbea067e0822341eb95eb5cc370c021ef637"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0245_0808_trigger_line","source_available":false,"strategy_package":{"files":[{"path":"strategy_trigger_line.py","sha256":"f3dcedfcbc2e35246bacf7df2a3acfa509da2ce60fbdbfdf4fb7e6427f8b8957"},{"path":"config.yaml","sha256":"607f5c546c45397c5b314526158306ac64d9435a3fc71d053555107ec19e3bf8"},{"path":"run.py","sha256":"8ab76e3e9d28ad106dadd1364fe21f07a0821c780d0e74016d2254bf2cc45a41"}],"relative_path":"trend_following/0245_0808_trigger_line","sha256":"0a5fe673d266451bcfdfe1ecb65dbd80e91e2ec317fb8e079f2a2d12cd55a4da"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0246_0816_i4_drf_v3","category":"trend_following","dependencies":[],"entry_hash":"add8dbd5e86f782f130c7bb6582f599422534d44434c60ce93c5496c7069cdfd","functional_test":{"relative_path":"trend_following/test_0246_0816_i4_drf_v3.py","sha256":"d40a4c67928c41891e68d96eeb8289cd4679d6c14093bcaf1ab563b42cd9dbfa"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0246_0816_i4_drf_v3","source_available":false,"strategy_package":{"files":[{"path":"strategy_i4_drf_v3.py","sha256":"876a9c9c98dab7adbef1b5b713b7ce55fdeab9dc20443fd1a937c087a728ded9"},{"path":"config.yaml","sha256":"22c39941a4e42dca1a86f20869f045c18b27ff561563d6f27d514a29a7478630"},{"path":"run.py","sha256":"09a39b46eb4e95c13ae9f78022c9b688286fbef773ee61e25c4254cec095a0c7"}],"relative_path":"trend_following/0246_0816_i4_drf_v3","sha256":"f936b208843dca0edd2ca0d93229fe418adce03acc1b15b490a0339f789b5778"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0247_0819_i4_drf_v2","category":"trend_following","dependencies":[],"entry_hash":"1dd444fcdb87c7d81ac5f6eae1e11a37d164761baf82f776c503ed091bfc0c3d","functional_test":{"relative_path":"trend_following/test_0247_0819_i4_drf_v2.py","sha256":"486e450eabb8c09117868b237c982fc6b69f1e7c23e42246bb77f909b757102b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0247_0819_i4_drf_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_i4_drf_v2.py","sha256":"417019cd5036e24ac846aa012f9ec622c8b77ad8fd82c95503281a41ad9c5460"},{"path":"config.yaml","sha256":"d9d5c5502983ca2585dfa2da0abbd63ecbe3594cce1bf1f92deb7bd8f129b146"},{"path":"run.py","sha256":"1f23981a2fd81a4cdc4cc732c6760c32fd2fd74d0e6611fba2fa7c8e7547f110"}],"relative_path":"trend_following/0247_0819_i4_drf_v2","sha256":"34b8a6f4c65b4af80a778522348f937528c309a8b7c21397a962b8634afc95f6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0248_0851_aroon_oscillator_sign_alert","category":"trend_following","dependencies":[],"entry_hash":"b54e1df33d304bcac4336684ed1879281b577b52978aadf1ab2fa92771a002cf","functional_test":{"relative_path":"trend_following/test_0248_0851_aroon_oscillator_sign_alert.py","sha256":"eb193f41500ef03d47ec247a790d32c2730b3188b435c97f8098314e97a61688"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0248_0851_aroon_oscillator_sign_alert","source_available":false,"strategy_package":{"files":[{"path":"strategy_aroon_oscillator_sign_alert.py","sha256":"77c340ff40cc953c8a5b1abca1af2a7385310cbcd1c77b710ce293529dea87e4"},{"path":"config.yaml","sha256":"509e8b00bafabde893b53bb4835c89921480666fd1c38f0af3ddccf842fdbb46"},{"path":"run.py","sha256":"1cc7765964de867462dc1a4730290830a1642cbb17c946009e510152801df5d2"}],"relative_path":"trend_following/0248_0851_aroon_oscillator_sign_alert","sha256":"24b0c9f49788f37e29643f3d2651b53a1d5e6f30a4ce0df5aad8c9eabca5dae4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0249_0852_adxdmi","category":"trend_following","dependencies":[],"entry_hash":"0ecf13e4655fe5b94cd832f30d91de456f02298fa9e1cc9aab530c5ccd0af338","functional_test":{"relative_path":"trend_following/test_0249_0852_adxdmi.py","sha256":"69d2f5066fa0e89e0a72f05d07b08ccfa311493ed7cdfbb367ce4014a82a5c3f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0249_0852_adxdmi","source_available":false,"strategy_package":{"files":[{"path":"strategy_adxdmi.py","sha256":"327a2399f25e8c5674653990e8ede4c0db70c80a69e651a95c7382c0c41d6922"},{"path":"config.yaml","sha256":"7a3e9ccb665a5be57401461a5a3ea767d122752b2d13df335d8b3894f3a9317e"},{"path":"run.py","sha256":"c148dba2ac15634d9c45ce5e40dac121974d01f9fc1f31c7406ace70e9be01cd"}],"relative_path":"trend_following/0249_0852_adxdmi","sha256":"1955be10cacfaee6b3c9a8a2a5ccbd032529a76c5858eaa2b32d6e2d07263adb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0250_0862_bsi","category":"trend_following","dependencies":[],"entry_hash":"f1822f6df461605f41a7661e89af3bc58b4980e8ed8ea047147ed6fdc65a6bad","functional_test":{"relative_path":"trend_following/test_0250_0862_bsi.py","sha256":"8631d1d28c9d375bf365bb1665d272b64ca8554bbd87202e401fc36a3baaa815"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0250_0862_bsi","source_available":false,"strategy_package":{"files":[{"path":"strategy_bsi.py","sha256":"755ce44c6b9fda8023e3f66ad0c728c8729ee25a41cf864dc07a32879610ae2f"},{"path":"config.yaml","sha256":"9712beeeec6972b01c1f571b3104dd7f2069f5b989a0b7b7ce46e77915e69505"},{"path":"run.py","sha256":"5c66a37e181ee4ee68ec1cb108fb09c35b3c8156044722bcca7bff401fba2536"}],"relative_path":"trend_following/0250_0862_bsi","sha256":"239da31fe64d5f8bb6769575a82f650d258bda856ac1d1c8bd440ec2ab2996b9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0251_0872_frasmav2","category":"trend_following","dependencies":[],"entry_hash":"dd8f2230194b3cc64062c39c794892fb3778eaefa39d49b202f98ce79f9d8549","functional_test":{"relative_path":"trend_following/test_0251_0872_frasmav2.py","sha256":"b320f0c25db6777bd3a95b56f7b5a7beccce1d208405aecfe7f6652f5d8333df"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0251_0872_frasmav2","source_available":false,"strategy_package":{"files":[{"path":"strategy_frasmav2.py","sha256":"7b9dbbf797944d711516cdcabc3567ce238ae704051c9df3eb157303d4a33658"},{"path":"config.yaml","sha256":"04981b912196d7666aef105be7e3c7abe0284c553408c7df8821b9a94171dd88"},{"path":"run.py","sha256":"a4e8e3332e0f7c4ffb8e7411ae5d44a65f99ef0ef661ba4f42d2f9f646389583"}],"relative_path":"trend_following/0251_0872_frasmav2","sha256":"ec513bff075927f498a23358883c93d34a595fa0d2071d99d7dc2a9c5773e789"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0252_0894_aroonhornsign","category":"trend_following","dependencies":[],"entry_hash":"5821438aa24ae3d4bb0b459697748db2ebc60e33278c02d4071702fd1e04e5a7","functional_test":{"relative_path":"trend_following/test_0252_0894_aroonhornsign.py","sha256":"124b23707602ffd2bb6c4b10f6432f51d7d9b5ae35cd91fde7612be529d213d8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0252_0894_aroonhornsign","source_available":false,"strategy_package":{"files":[{"path":"strategy_aroonhornsign.py","sha256":"adc69fb114f227f2de4b1a986490cef8b28cb9a6b650e33fafa2acdbdb7d90ce"},{"path":"config.yaml","sha256":"91bfa4382c9c9f0c705ca73722a1104417ce58f02a175037c5a2a4a922c7ec5a"},{"path":"run.py","sha256":"79d8299fe60c5039a6d4d4b74295937332e9e5fe0bda9bb7bf8c29e6cc20bb9d"}],"relative_path":"trend_following/0252_0894_aroonhornsign","sha256":"9c86956974488da25ec79ae5f3b52c10aa272d6fcbd71cb91d4dafa226b4ed9e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0253_0903_nrtr_extr","category":"trend_following","dependencies":[],"entry_hash":"8b855ea331453765ed8e6b669f179188de54c149fc9d561bb782d2224fe0282e","functional_test":{"relative_path":"trend_following/test_0253_0903_nrtr_extr.py","sha256":"7eba07d4ec9b3e938a79c01081a94d2e668c5ceabd6d69fc60be750cbb7cf239"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0253_0903_nrtr_extr","source_available":false,"strategy_package":{"files":[{"path":"strategy_nrtr_extr.py","sha256":"7d2b30be77141ac274a510cace4b08d76129a02be85b8d3ccb74b91ada01cd5e"},{"path":"config.yaml","sha256":"5e5f01190c6f9c9b98f332ffed6b4ed415fb26db4a1fcb048bc43baf77f630fd"},{"path":"run.py","sha256":"aa0b314ede347edd098a82267d80d937d0ed4477699fe3779b87bd1f85aa50eb"}],"relative_path":"trend_following/0253_0903_nrtr_extr","sha256":"3199feaf87cd890f9886ad3587fdd21e46aa1b2dbebf33daec32318ea26d6551"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0254_0904_nrtr","category":"trend_following","dependencies":[],"entry_hash":"52e9c3932c676f7b67aaffea64358a636b516efe58afcee3d5d9ccac63ee456b","functional_test":{"relative_path":"trend_following/test_0254_0904_nrtr.py","sha256":"ed0f6e1eb66b6799a07e8d18cebf0acbd83d45e9773ba5727a1b39c9c094e38a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0254_0904_nrtr","source_available":false,"strategy_package":{"files":[{"path":"strategy_nrtr.py","sha256":"63250b6629c0ddfb63b7f8e24265d6d61a1a76bf4c4fad0e68414228ef2b985a"},{"path":"config.yaml","sha256":"722c7b3f9b2907eda20991508697f2c7ce79df688b15f43d22127dcb6f69ef12"},{"path":"run.py","sha256":"91e8493c734587235839e2657bf6e7648788faa89ce02eeabed513182692a949"}],"relative_path":"trend_following/0254_0904_nrtr","sha256":"9108db0216fcfd3451a1482821299be369b3bcaaf980482da95d0812f92f534a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0255_0914_nonlagdot","category":"trend_following","dependencies":[],"entry_hash":"bb218e16ca14f0886c471694138b264409be5fd5ea98210d1d61ed1b4b5c4d74","functional_test":{"relative_path":"trend_following/test_0255_0914_nonlagdot.py","sha256":"68fdcfdd778a8a0a585fe93cf4275341c1f2037b830f8c5ebaf0305ff678b653"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0255_0914_nonlagdot","source_available":false,"strategy_package":{"files":[{"path":"strategy_nonlagdot.py","sha256":"533738f6d1d1d0d846a8bf798d86a16142c308d2eabe3958bd016e84e2769876"},{"path":"config.yaml","sha256":"c5cd04c92bfb2f07ea8ed31493f5cc95c95d27f28430ed122a36d226d14e8181"},{"path":"run.py","sha256":"aed793db3e2a29c7d72f85eff50b5cf884eba214cd895ec2744b4d31b1450d00"}],"relative_path":"trend_following/0255_0914_nonlagdot","sha256":"8938d3cff5a68bee5fb2a3fabfe98e22ae994da932c7c947f92a103e868bbb02"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0256_1043_forexprofitboost_2nb","category":"trend_following","dependencies":[],"entry_hash":"ba4f95bc6e67d7918ec9cb1090a2fce7e5d738f3b778277e29314e6017e8b287","functional_test":{"relative_path":"trend_following/test_0256_1043_forexprofitboost_2nb.py","sha256":"0b50c96baebc94057bdf4d4974093434a5413f613fcf42fcdc39e508effac5d8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0256_1043_forexprofitboost_2nb","source_available":false,"strategy_package":{"files":[{"path":"strategy_forexprofitboost_2nb.py","sha256":"c46824635f4da13260cba49e977cc3fe396a74bcde94f41306c5506eef9723c0"},{"path":"config.yaml","sha256":"1273fbd4493b8f70caea651368d29209a6196a501c9d8c8121c4ce2634851e16"},{"path":"run.py","sha256":"d5ad4273c1cfb86eb7346438b74b5c9d3fd826113e09c740249f584c85b0a6fc"}],"relative_path":"trend_following/0256_1043_forexprofitboost_2nb","sha256":"bc097953e83bfcfa3476bd0c89d9805f59b5cbbdb73a548652d12008f6e9bb76"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0257_1047_simple_trading_system","category":"trend_following","dependencies":[],"entry_hash":"430c343e36ceca4fa02ad91850add42ab5cdd9d9e5cc05d6d29961a75f3320b8","functional_test":{"relative_path":"trend_following/test_0257_1047_simple_trading_system.py","sha256":"54266a5b97483994af522348074a27bd49a6de0212e9d4b3b95c4df59ecf6056"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0257_1047_simple_trading_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_trading_system.py","sha256":"d844d58956312edb004bb8f02c4cf57b3dca818fbfd0482e7cff842a70adf3c5"},{"path":"config.yaml","sha256":"c977783b3f7102cb30048e0bb4aac1815666dfcd8258e065ab1c98d66fdff954"},{"path":"run.py","sha256":"5f7df35d78b256257586733e22dc1169788505ba92605afdbc37c52044bfac9e"}],"relative_path":"trend_following/0257_1047_simple_trading_system","sha256":"c40e4177b3864f47b02f3354a208173f7dd383568eec994ffa5c429bee25fd57"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0258_1048_fatl_satl_osma","category":"trend_following","dependencies":[],"entry_hash":"dcca5911690fe970d0839c07f8fef455b400cf40d277f223ae7e8317deef0ac0","functional_test":{"relative_path":"trend_following/test_0258_1048_fatl_satl_osma.py","sha256":"10a76b97823c99dde02c31659ddef6667d1c8cb03334ea01eece0cd817455309"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0258_1048_fatl_satl_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_fatl_satl_osma.py","sha256":"a434a9599dbf13de133e99de92746735c8aab232ccaaec1dc4cd14e306ad7687"},{"path":"config.yaml","sha256":"ba8a4e22e78583c0f926c21757530bc5513d379221b1de329e5fcf82e22cdcf6"},{"path":"run.py","sha256":"3c56b89c1d01b7ba3fb51c481747cc7eee59e04796fbbf7dc7181291cc05baa8"}],"relative_path":"trend_following/0258_1048_fatl_satl_osma","sha256":"3c317aa806b03d21712a56c22e9ee18494638545f608b0668e34efcf3f0d3432"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0259_1051_modified_optimum_elliptic_filter","category":"trend_following","dependencies":[],"entry_hash":"a5c7d50bd8e7bf276fef2ad682d55dee55d76090f2b596fa39d0006d6ad0c65c","functional_test":{"relative_path":"trend_following/test_0259_1051_modified_optimum_elliptic_filter.py","sha256":"876d9d8012aee700d171add8c44ae738b99a443defc7dcc09e2ecfc3a7a7cde7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0259_1051_modified_optimum_elliptic_filter","source_available":false,"strategy_package":{"files":[{"path":"strategy_modified_optimum_elliptic_filter.py","sha256":"a62efb13bfaa9b9bf686c089283325a6c8a1d5cfaa7e4172b20a0bdc81636c4a"},{"path":"config.yaml","sha256":"952752490ba139ee2cd72fbb6ac899caa9531e971581ca5420e13ba744a7ed75"},{"path":"run.py","sha256":"c949b9f84b817af5fa89047f337d4c9e6712d57edceed25fb5406209c2b17491"}],"relative_path":"trend_following/0259_1051_modified_optimum_elliptic_filter","sha256":"217aad97f1470182896276bb36d26cf27f9881df31e420f9d250aba96f995fde"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0260_1053_ozymandias","category":"trend_following","dependencies":[],"entry_hash":"175c12ec865b460a60c16641b926c61200bf525eadf831cc3f186ce74c7fede7","functional_test":{"relative_path":"trend_following/test_0260_1053_ozymandias.py","sha256":"417c6bc96a0463adb4d045453411cc6cd8577d108e9d5c15e118f455593ee833"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0260_1053_ozymandias","source_available":false,"strategy_package":{"files":[{"path":"strategy_ozymandias.py","sha256":"0c085350c96d782dbd257f738552cbc46046b939b4c8c3636246c3179c4874fd"},{"path":"config.yaml","sha256":"cc92341aa333d990c64de01b6d5ab48fb270f4fa15723c1db8778854a1ba2915"},{"path":"run.py","sha256":"4f7e210f141ed725e04cb3dbbeef8a2ab3351fd1619d789962dcd4ad77ac3d1e"}],"relative_path":"trend_following/0260_1053_ozymandias","sha256":"d6c6a15f761c991b70816a6cceb9e571c6e98a894efaf63ef0408c5aaf55d329"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0261_1064_ma_by_ma","category":"trend_following","dependencies":[],"entry_hash":"65ab79716cbfd1b7f4346bb7c154f622b902e42278eaca18189c5e606480a144","functional_test":{"relative_path":"trend_following/test_0261_1064_ma_by_ma.py","sha256":"40cf5fd43972454e4683a9f672b03934b2330a628542e3bdc00f0863224daa1e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0261_1064_ma_by_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_by_ma.py","sha256":"a237a8cdbace998fde86d1bf7576ce605282f2f108a7ea7158d9f34f8f11bf84"},{"path":"config.yaml","sha256":"890e90aceb5836b3950a9b9e0aed9048534ba78b0af9f30fdff4aa7509c59215"},{"path":"run.py","sha256":"9f6dae96496c7d33eb7075e8ffa883d6a0ab1ce67f64d9aee8078a46d7ccc376"}],"relative_path":"trend_following/0261_1064_ma_by_ma","sha256":"652ec990a593965bfc1c2b3e720edf4d20fa3b7bf45ae88e724433210199e85b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0262_1066_slope_direction_line","category":"trend_following","dependencies":[],"entry_hash":"f4571e288f3a3f8e9d5845d7ac49611c60178d4f93b75ff39a071a0d17bca114","functional_test":{"relative_path":"trend_following/test_0262_1066_slope_direction_line.py","sha256":"5b2e3779d1beb2ce608e479908a494b91aac1c28586191da018f1e7f9ebe04f9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0262_1066_slope_direction_line","source_available":false,"strategy_package":{"files":[{"path":"strategy_slope_direction_line.py","sha256":"e6d423e004c823e9f508ea8945b662d3efb1e839ab7bf9672ce66dc22a325246"},{"path":"config.yaml","sha256":"4c87cf0f16510d72f347de05825c4909a41670340fd913aaa3c2b6979458f961"},{"path":"run.py","sha256":"53a70f3bd63168b37f07bffd6b89b663c36d3b9f8746b9fb87a47f9dffedf597"}],"relative_path":"trend_following/0262_1066_slope_direction_line","sha256":"d817565dd8acd6e2daa1333f2ab16336a73df1a13f184a49052837058e333eb8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0263_1067_karpenko","category":"trend_following","dependencies":[],"entry_hash":"01eac3b6c844c495a98bf8f022c620daf139cdba5f1322b1fcad974e0266ae2d","functional_test":{"relative_path":"trend_following/test_0263_1067_karpenko.py","sha256":"e95c50048e4f6e6a2aa56d105600e884407064f1bb6fd3a4e3939e5178e14b9e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0263_1067_karpenko","source_available":false,"strategy_package":{"files":[{"path":"strategy_karpenko.py","sha256":"e33e241da20fb287929962be0ea57d90e80076b4740f9420a1e9f438023be938"},{"path":"config.yaml","sha256":"72fc6a997d8502460b7141b54ba5569efca0166ef2efa88809a27dc28857043a"},{"path":"run.py","sha256":"fdc82d1d0608a463138720f209b0f1696d487eb57e1cbf5cf12e8336dd566db2"}],"relative_path":"trend_following/0263_1067_karpenko","sha256":"4452df5ea4dc8dfa43f5cd5c7d6dfed9c8f51b78d0821d517e7d8472de54a1fe"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0264_1075_ma","category":"trend_following","dependencies":[],"entry_hash":"57d7f254a00c20f3217eb7276fcce395fb5c4dcabaebabca7ca2cd7ca097f3ca","functional_test":{"relative_path":"trend_following/test_0264_1075_ma.py","sha256":"cb7fc46faff9f79755161114b61950c58d4c3d5649fc7cd467e2ca852d29dbcb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0264_1075_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma.py","sha256":"60784cf50ff480946d4689186d10621c4fd1ffe08253091845c9011b469dbc40"},{"path":"config.yaml","sha256":"ca93e667cd6ed58078e6f532636b467e48051da82070f23a19a6fff5d224dd7b"},{"path":"run.py","sha256":"40d20d214bd7992a028dd10430b58ebd8c1a9f3e5d08d3acba02e5bb65823aff"}],"relative_path":"trend_following/0264_1075_ma","sha256":"434f165900dd718366dbd30ff03c109a3eaa046ba4df976795d976d2d2d03c13"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0265_1079_bvsb","category":"trend_following","dependencies":[],"entry_hash":"bb0a0df9bfe9c74d02b84f122b0d43ea4928ec9153ce84ad7371cfa0c891ff87","functional_test":{"relative_path":"trend_following/test_0265_1079_bvsb.py","sha256":"e933c129ddac882f3a601b7b004c7ee40c065d3c9f0315b9335679643b38c4c1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0265_1079_bvsb","source_available":false,"strategy_package":{"files":[{"path":"strategy_bvsb.py","sha256":"fc70d70a0c06818804030fe723047cfb4b3db86477ea8aed89ed1510c644440d"},{"path":"config.yaml","sha256":"fc530554593b9194f74d4b4abb788c050a374f67b9d52b76d06eff9476f84cd7"},{"path":"run.py","sha256":"4091fd60b520d291c10becd10db2e64f973a30ee413c11f4f7003dfa0ae1b2a0"}],"relative_path":"trend_following/0265_1079_bvsb","sha256":"c0d5ee716a8b9076a97296db3414b7db845829cd723091eaf803eeb57aeaa67d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0266_1080_bnb","category":"trend_following","dependencies":[],"entry_hash":"5acd811c029f001e74fd4d4f5925234675872d6112b58a2d8d175eaea1b32f5c","functional_test":{"relative_path":"trend_following/test_0266_1080_bnb.py","sha256":"49b3090b227f282a1dd4106289709b1a98a24d105e438adc94c38967856d3f21"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0266_1080_bnb","source_available":false,"strategy_package":{"files":[{"path":"strategy_bnb.py","sha256":"85cadf3d34e0255006a4add2f9ea5d6d75c0e3108d90fcabf5446d7fa04bd2c1"},{"path":"config.yaml","sha256":"0c66e7bec880b32cc2fe0b6e8ba02a3b06e705255aa027c86bd026839316eeed"},{"path":"run.py","sha256":"9c198046b3ef0dc632c7cbdaf681d87afaa327946dea8a026b7f6e31f4c11da4"}],"relative_path":"trend_following/0266_1080_bnb","sha256":"3c8c2e998a15911b0a1b47edd573c5854b590703d3b12636edadac2a6f540079"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0267_1082_tsi_macd","category":"trend_following","dependencies":[],"entry_hash":"65adb1719c1d7e06c3ae7c0b7393ee16704a067e75622ebef348c2998cfd2db5","functional_test":{"relative_path":"trend_following/test_0267_1082_tsi_macd.py","sha256":"0b7b0a18a081229bbd79ba940731245217f6221043464c6248493bcc736795e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0267_1082_tsi_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_tsi_macd.py","sha256":"0d0a122952dae0adfd51ab7b2de2cc847d47c413cc13cccf34802370762c4cc4"},{"path":"config.yaml","sha256":"0a6b1ef47c2b6efc04f6ebcd930a64630ba91de9c1607555c5930622c5b15594"},{"path":"run.py","sha256":"a31da6c699b2c645406a234599002f0758acc27ffb3a22c98ef6d4a327d3d266"}],"relative_path":"trend_following/0267_1082_tsi_macd","sha256":"52a6b45fdbac387715138b7b88d5d429b3c16f93693fabe18829f54d444ea09b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0268_1084_wlx_bwwiseman_2","category":"trend_following","dependencies":[],"entry_hash":"319e5e13a947958e1271d19d99adb978d35ea7d5fd8a1eeafcdbfd4dea686692","functional_test":{"relative_path":"trend_following/test_0268_1084_wlx_bwwiseman_2.py","sha256":"05bfaf5e49a0efc07ba8b1f47a82d438708b3a30e96abbded2a15ae823fe87e6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0268_1084_wlx_bwwiseman_2","source_available":false,"strategy_package":{"files":[{"path":"strategy_wlx_bwwiseman_2.py","sha256":"3e625ac947bb374f1625386b1b8d201eeb054a2291fdd218c56710bca3544c0e"},{"path":"config.yaml","sha256":"2031b4d1f51a846a5edec588a6baed857dde4482d84c6c43756f1c622cf1a128"},{"path":"run.py","sha256":"4b9b5be839ac3592adb304d1a535dc7e46e55cfc631ea79081900c31263ed33d"}],"relative_path":"trend_following/0268_1084_wlx_bwwiseman_2","sha256":"49bc3976638755bc904cc39e868b6ed21a085cc6aa73f11a020e11ae469f1841"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0269_1088_cronexao","category":"trend_following","dependencies":[],"entry_hash":"737f9a8447bca4a1caf507c1f63ef8468b4c31b88d9dc98baebbba6ca27a52c9","functional_test":{"relative_path":"trend_following/test_0269_1088_cronexao.py","sha256":"3d336133437b6dc47c2c96658e049527066b742f22c37fa66e748eea3e58908e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0269_1088_cronexao","source_available":false,"strategy_package":{"files":[{"path":"strategy_cronexao.py","sha256":"f984c4de7170c8d130958b6b45ea7d153208b6db33016fe6f5767b83a190834f"},{"path":"config.yaml","sha256":"d29752d7851dc04c7049f43387bc63e8f580ef11db10ffbac7cc1bda922824ba"},{"path":"run.py","sha256":"cf6d2ec33a579ef6ed1142ddb0f9c499b92e29695f363ceab8185d6c6a8cdf35"}],"relative_path":"trend_following/0269_1088_cronexao","sha256":"102fd037f806c036db3a6dd90c9fb9fdbd0214453c57c6f83c2c574fd373ecaa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0270_1091_highs_lows_signal","category":"trend_following","dependencies":[],"entry_hash":"0af92ca4fd8bc7f8cbc660911846a6a08020537d0d87b0d9a358a5767c34ef43","functional_test":{"relative_path":"trend_following/test_0270_1091_highs_lows_signal.py","sha256":"2a9c9c714e792fd9fc3744c02bc37aa670a585513d3b17befe0594fe8d20d043"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0270_1091_highs_lows_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_highs_lows_signal.py","sha256":"b55176853e570621ad897c9b4226f0b375ad2ece100b8ce7a2f4758ef233a458"},{"path":"config.yaml","sha256":"1d0b1f8ce8f627fa34c20b0f2fd129f892f1f9ec37c515b49b5b9528e68f17b7"},{"path":"run.py","sha256":"8ae34e0ca86831b9599525eea4668cc86b5c8423b951aa2c8031de90ac62ac16"}],"relative_path":"trend_following/0270_1091_highs_lows_signal","sha256":"d10a9f80107b90c76808c77faed1e01b8a6ef524d37dbdbe1db76137a3d05199"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0271_1094_afirma","category":"trend_following","dependencies":[],"entry_hash":"daa26b936815c5c5ba3b349f11bc80ce8b92b5f4aa710a4133e77326533f07e8","functional_test":{"relative_path":"trend_following/test_0271_1094_afirma.py","sha256":"69d2fb0ff2804d4ef9f5b09737ff816f9a0705c5de73cc118df3f5fa5884150c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0271_1094_afirma","source_available":false,"strategy_package":{"files":[{"path":"strategy_afirma.py","sha256":"0863d9a00b502cba1272d3b7a4e284104a9fa62304666715a62b75cb14787d41"},{"path":"config.yaml","sha256":"4217a758d7f58126136fb843192d6c10ff0e5189e15888b40baa0c9935589cf8"},{"path":"run.py","sha256":"56ae2167a3511089c3fa5234fc2d47d9b308936aa24e8ca54e38de26aea69ecc"}],"relative_path":"trend_following/0271_1094_afirma","sha256":"823a396b7e91c782ed4f58bf13dc020db002c8e5243571dac820b691dd04d12a"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0272_1096_xd_rangeswitch","category":"trend_following","dependencies":[],"entry_hash":"23623e36e0e7506dac0d23562642fe4b9bed4457f91e2ac3509b4fa4338b6cb9","functional_test":{"relative_path":"trend_following/test_0272_1096_xd_rangeswitch.py","sha256":"4729adf7471aec4abcd4effe19b11cc71efcabbb041f08d7431ee3bf8553bacb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0272_1096_xd_rangeswitch","source_available":false,"strategy_package":{"files":[{"path":"strategy_xd_rangeswitch.py","sha256":"a3a239a7c025654e58e35548d46c616500d85fd2fa572cf37cd55d70f221198b"},{"path":"config.yaml","sha256":"19c07f63325029e727915cb2bc415125a62f95bdf129dc721f498d070efc3b96"},{"path":"run.py","sha256":"00cc145cd56327d69a030d57755d6b393c6531d67a5d5cf99441fe94ae56096b"}],"relative_path":"trend_following/0272_1096_xd_rangeswitch","sha256":"d46e2605d05c743c3a2541daa831da6a0b09c48f156e21d4ba690f5c7ba934df"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0273_1099_simple_ea","category":"trend_following","dependencies":[],"entry_hash":"19d2c4cfc48199a2aae006893b6f8518ef0eac9e3a5e36fae2505b029f2f3cb7","functional_test":{"relative_path":"trend_following/test_0273_1099_simple_ea.py","sha256":"f6b62287e02e16ae50af24f2dc78ba8b454acaac3006b13c3a26b0dea64caf48"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0273_1099_simple_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_ea.py","sha256":"a4c96bf10c00cc1951dc877f4db81c9b17c03129aeae1d46f40205b8115f7a02"},{"path":"config.yaml","sha256":"446166faa0fd44806053c34f4f2c44c747c5f5ba8a72ad4cfe3af0f05a904841"},{"path":"run.py","sha256":"fc4af4afa0a158c6f40dbfa63b1aba1b7e42d8e6997a9f91e2a04920ad0c1efa"}],"relative_path":"trend_following/0273_1099_simple_ea","sha256":"ce6a47eec72b5c6eab70633d4c469ab32663b987a9851f9e1e9eef84a69aab4b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0274_1102_bw_wiseman_1","category":"trend_following","dependencies":[],"entry_hash":"5937239120e9ba1221736c4cf3d6d5e98d31c871e6a1ed45a91a4caad6ee37b4","functional_test":{"relative_path":"trend_following/test_0274_1102_bw_wiseman_1.py","sha256":"b352f5fe3428cc4fdd69218b16e39bc7ac8055399f1ed6b5231b3d3c5702a4ee"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0274_1102_bw_wiseman_1","source_available":false,"strategy_package":{"files":[{"path":"strategy_bw_wiseman_1.py","sha256":"bae5a0477dc4d029d089ca746b847092542fdd5170cf35cd13200d06e68f8b57"},{"path":"config.yaml","sha256":"ad1d4a936c66e14ea8608e2f2cb3c1157eec235ee07dbbf91e0891d67d426ca1"},{"path":"run.py","sha256":"3282dd208b137df3343723276bc207172296f030b8ae20d17e17f2126f9d0316"}],"relative_path":"trend_following/0274_1102_bw_wiseman_1","sha256":"02e56b8fe9312522101c34c4511493d4ca8812cad20c934a0145d4d36615e95b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0275_1104_digital_macd","category":"trend_following","dependencies":[],"entry_hash":"c7d234d691b85ae1c650f890a0b9df57efba825b7ce77d1e316122fbc84f8bcb","functional_test":{"relative_path":"trend_following/test_0275_1104_digital_macd.py","sha256":"84b96bbaad8034c3a08658d4f08d2d00af1a698d0b328686297bd0aa551c67a8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0275_1104_digital_macd","source_available":false,"strategy_package":{"files":[{"path":"strategy_digital_macd.py","sha256":"b9dee4ca143833b9743577e75e9523ed8dbd557d43c50175a6a51c4a35fefd63"},{"path":"config.yaml","sha256":"c37dd3c49d32463269d079468a7168518f3c98d4408e377e790ca7c7e7471bcd"},{"path":"run.py","sha256":"51b010e8ae54e8c71f4054e735d0e5bdd79f18447781419ae3e1fe55e647e42a"}],"relative_path":"trend_following/0275_1104_digital_macd","sha256":"8050c8553df0ffd58217525843bbba543aec888fc6e92e9ec4356636003dc731"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0276_1106_t3_trix","category":"trend_following","dependencies":[],"entry_hash":"0ba7e51fc204d353c14dfada7de4e2ecf620c2567935fc68435d8fcb87742902","functional_test":{"relative_path":"trend_following/test_0276_1106_t3_trix.py","sha256":"3606db69034315cad505bb281bfa782bf815ff3204d3eaab5f154a22153477f9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0276_1106_t3_trix","source_available":false,"strategy_package":{"files":[{"path":"strategy_t3_trix.py","sha256":"042a75faa51f448b194c8541859e4ca188bb4c9d4c79435bfd7aa255f6938e40"},{"path":"config.yaml","sha256":"4f4a70075f1690ab1b8250ce13f7710175f392f13ea17d8cd282bf2704102356"},{"path":"run.py","sha256":"462ff55a45a14e54b4723b7412196a970d9f71175c9dae9abb75493bf110d8ff"}],"relative_path":"trend_following/0276_1106_t3_trix","sha256":"f8ac8b1d31a1174d3ea23b5179ef8bc7f070c228c12501881ca7b85604f7087b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0277_1110_cs2011","category":"trend_following","dependencies":[],"entry_hash":"e3f623cac4aec4d06234a3e6ce37dca39dea0616d29bf3611497ef88e35a9ff4","functional_test":{"relative_path":"trend_following/test_0277_1110_cs2011.py","sha256":"a4e4f85f15c67ef9198d4c03e14d17b3f06de9e692ca3e5575a20cdf0574b57d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0277_1110_cs2011","source_available":false,"strategy_package":{"files":[{"path":"strategy_cs2011.py","sha256":"d1bac56b535bddac59eaa9b99130520b001d976dcd96208b637d34753096b653"},{"path":"config.yaml","sha256":"a88c4d638902888de6eb7b0fefb52103f31fdd376bac073eafc7e0463b5414a4"},{"path":"run.py","sha256":"c381b2a92f77c8508b152ce31d9ef24a1c6e645374f766505080bafb43248d3b"}],"relative_path":"trend_following/0277_1110_cs2011","sha256":"3b96f17cd014f1b8f709b3871a157d4421ee711491b29eee950b7246790454ff"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0278_1122_irea","category":"trend_following","dependencies":[],"entry_hash":"64cd852958ab5e2d3734fa8c04b78903e6e8e7a073a0d1202ed617e7c72ca003","functional_test":{"relative_path":"trend_following/test_0278_1122_irea.py","sha256":"a85ecfae839f765e28c03170e2169749b74764a517fae29039197ac224a9f869"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0278_1122_irea","source_available":false,"strategy_package":{"files":[{"path":"strategy_irea.py","sha256":"b1dc5f936b179840ca4723459cd61533590477170fbfa80e0a58655cd5f7711e"},{"path":"config.yaml","sha256":"da55633601dc334e6f6a71dc3ebb21b9d87f5eb7d536ba0f9de25e2d7796cd7a"},{"path":"run.py","sha256":"f1b777f69200c4576119a4fcca23112280f6a96226177c046c88aff6ecb6661b"}],"relative_path":"trend_following/0278_1122_irea","sha256":"9b40067076d7f94e5492f198700cfb0842233cb0bcebc97d7ab4979597af3146"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0279_1137_jpalonso_modoki","category":"trend_following","dependencies":[],"entry_hash":"5672d5200d1c44cf715c64ede64aac5fd82fa973cd188b1cb538d8d38e53ea23","functional_test":{"relative_path":"trend_following/test_0279_1137_jpalonso_modoki.py","sha256":"33010c1b350a00c6edb6899c4c810d9f89538683030c1304af92986fd7d1697b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0279_1137_jpalonso_modoki","source_available":false,"strategy_package":{"files":[{"path":"strategy_jpalonso_modoki.py","sha256":"3ac24ca93cd025dcfc5286547e8ce7c07c5007d7f81a6ae1aac48ed23474ce30"},{"path":"config.yaml","sha256":"9304c5b73c562870751395d66b11bdd3ab80bf6af06d02d8672166c24f7d0049"},{"path":"run.py","sha256":"93d0d208ea43d66d1caa1fdf7602df91a2746bdd3a42a0b14dab25d1bdf8883e"}],"relative_path":"trend_following/0279_1137_jpalonso_modoki","sha256":"bc6ec01f5141c89a2baf589fdaa5de553bdebfaedb8a6b43a729a526e2d10269"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0280_1142_smatf","category":"trend_following","dependencies":[],"entry_hash":"51107d52b9ea965194ccec7dc371f10bc1e94e039cbd5f686789942f39fa0950","functional_test":{"relative_path":"trend_following/test_0280_1142_smatf.py","sha256":"d1eafa0c51e1889b0e4c7373a4220298ec8eee52a6f3d8686a711fee2bbda8cd"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0280_1142_smatf","source_available":false,"strategy_package":{"files":[{"path":"strategy_smatf.py","sha256":"a84e7f4d1cb34a5e1fbb57b6dc9ff99251d494e012e07e46eaf1be4a90381b94"},{"path":"config.yaml","sha256":"2e6261a13d2bde6728285c7cddc8223e6d9d4156743493943d9c4fa5269cc7ec"},{"path":"run.py","sha256":"0b2124bae01708e6ee25e17ee119d782c7dbf5170fa961ed90dabc51abfac583"}],"relative_path":"trend_following/0280_1142_smatf","sha256":"c14843a4a132d3f7b674f24cd7f95d2b1e6e66c48264fdfb67a88252661dedc2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0281_1144_20_200_expert_v4_2_ants","category":"trend_following","dependencies":[],"entry_hash":"5c77d8c8068429777f6dcf4c18437abcafb82d243de20398ba931c2322a832db","functional_test":{"relative_path":"trend_following/test_0281_1144_20_200_expert_v4_2_ants.py","sha256":"87f1792031c322d8c70971a4bd1617a734ec67349a6265cc0243a978c24ba1ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0281_1144_20_200_expert_v4_2_ants","source_available":false,"strategy_package":{"files":[{"path":"strategy_20_200_expert_v4_2_ants.py","sha256":"af8f524e8a4f41c11096c4f155c2de5476df5a9f74a53939afb7479f9a2cb7b8"},{"path":"config.yaml","sha256":"ea0ea30b1821c1caf81d43a391c65a47de2306e06ac83fdbec3154e0c07abbf9"},{"path":"run.py","sha256":"2d6f86cf526275e2479705524460924bd8cde50167ff5955324b5111bd8d4166"}],"relative_path":"trend_following/0281_1144_20_200_expert_v4_2_ants","sha256":"29218d1cfd4515a6287aa809df7aca7569c702f146875f01b802bc5c55e50938"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0282_1152_go","category":"trend_following","dependencies":[],"entry_hash":"ef1b003108867cd5f1c3e0d8b7f7988ca486382d18d1fb960590e2c07e69cfd0","functional_test":{"relative_path":"trend_following/test_0282_1152_go.py","sha256":"21c53af95f96c41e45e76f547113973f25d4b10dd996c2751d71108880f0a49c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0282_1152_go","source_available":false,"strategy_package":{"files":[{"path":"strategy_go.py","sha256":"7a1261acfd733eda8e27062a4460d9f06eb28d8388a094e8e0d829596555650f"},{"path":"config.yaml","sha256":"56f64bb45581196c38c5944c89ef51145d859ed6ec3cdd03911de88d13d6dfb4"},{"path":"run.py","sha256":"61c430a38bd1e8be4a397128e79d540212bcbb5c374328b43f7e65d6bbc21529"}],"relative_path":"trend_following/0282_1152_go","sha256":"91d76a4f39876b3bacd52e3fada2e54876eec0ac24dd9cf37f3d10979233697d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0283_1153_e_turbofx","category":"trend_following","dependencies":[],"entry_hash":"c881597fff328789b41cbf009e2f639895e4c8a4a2e034d46244dd2e547abeed","functional_test":{"relative_path":"trend_following/test_0283_1153_e_turbofx.py","sha256":"59a3822fbb6735b7baf16b816f2a140aa15089f0734088802d84123755bf3ab2"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0283_1153_e_turbofx","source_available":false,"strategy_package":{"files":[{"path":"strategy_e_turbofx.py","sha256":"dab2f3ed7391ca55e97fc8d2eddc3d4dddab956f65def9cf5da8d9968c4273a0"},{"path":"config.yaml","sha256":"c52fb8b6dc9715daff448ef504989c489df550c6125592e907a7d6cd16bb3890"},{"path":"run.py","sha256":"26f9e91464e944b5af111527fba164b212afd800328ef6abbbcc9e57b997daa0"}],"relative_path":"trend_following/0283_1153_e_turbofx","sha256":"6355a178da432cc287638f48bdd0370fe63c19cb6e988b98e76d98d11292bba9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0284_1157_she_kanskigor","category":"trend_following","dependencies":[],"entry_hash":"899762eb1e9beb2daf15dd0f70991e8c3c13d738d7e3e01cd8ceb2a91d496dce","functional_test":{"relative_path":"trend_following/test_0284_1157_she_kanskigor.py","sha256":"435301b3ae75057537b02b4e3dd7bef5805138e1dbf7945d4058a4b30ebb20a6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0284_1157_she_kanskigor","source_available":false,"strategy_package":{"files":[{"path":"strategy_she_kanskigor.py","sha256":"80d35183822543dce988cadf1b655087232fc8a4cb434165ca8f672a3c944421"},{"path":"config.yaml","sha256":"0355c77ce55cf11affea26f8683b79fd2119b1aff795497933a742596c4eba76"},{"path":"run.py","sha256":"ab2f48bb6cdbde8e54ef643bd3631acc5fc70109229dedfb54144d19fe821ca1"}],"relative_path":"trend_following/0284_1157_she_kanskigor","sha256":"c134b16c9e5ea5d06be0f5b29a80f28e1663e270416c07688e1128d85770222b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0285_1171_jolly_roger","category":"trend_following","dependencies":[],"entry_hash":"b5845264e196a64dd64aa95a2f17a58da69ab9d5f710a845517055736cb1500f","functional_test":{"relative_path":"trend_following/test_0285_1171_jolly_roger.py","sha256":"3aa848aa25127f8502afe01bbb0ef17036897c566cdea198e6641f7c6ad50352"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0285_1171_jolly_roger","source_available":false,"strategy_package":{"files":[{"path":"strategy_jolly_roger.py","sha256":"2427ba409d0e0a7af949f76f3103d8e43f9b060fec08c23bf0f3476c0d81e6e2"},{"path":"config.yaml","sha256":"231a3d1304d7ac58b2237facd179f0664853f91293c10118e48a4c6faa46d663"},{"path":"run.py","sha256":"1662eacfb6bc03de9d6ee2f449fcbac99aa3f2bf695880c57613df6164386899"}],"relative_path":"trend_following/0285_1171_jolly_roger","sha256":"9d162ac981a92ccd0e8e4e104feb6ac18623b4eca65b84eee6cfb83bd3fcd581"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0286_1186_20_200_pips","category":"trend_following","dependencies":[],"entry_hash":"d852aefc026f9c09dcbf0f044ac6de2af186a4c60020a7371d278e4a7fc0ee8b","functional_test":{"relative_path":"trend_following/test_0286_1186_20_200_pips.py","sha256":"373ece469c440c5eaf17b85c723a42981ab8584306b75be64b6dde1fe62eb646"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0286_1186_20_200_pips","source_available":false,"strategy_package":{"files":[{"path":"strategy_20_200_pips.py","sha256":"9d8fe4a78aeff28776a6e617c71b6dd3e60c11b05206ad034e87f0fa4802f593"},{"path":"config.yaml","sha256":"fdbf806e6b03ce54cabaf507923eaa9500ec3f698b7c3d2b36f7fb51f0fc4365"},{"path":"run.py","sha256":"7d0126ed440d132ac1c4e89723c94b0d286a37e6e8956b81c05771ba9102cb67"}],"relative_path":"trend_following/0286_1186_20_200_pips","sha256":"8bc9564b824340d67fc319d509b5081ee029b8c5ec1f33d69cf85afd0619d948"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0287_1186_20_200_simple","category":"trend_following","dependencies":[],"entry_hash":"09c660130f287bd2c8ffa741e24d99a7c9a709c44a979e442296bf44267ca38c","functional_test":{"relative_path":"trend_following/test_0287_1186_20_200_simple.py","sha256":"ce94d1bcd2990ad6c508d96edce7fea1c564a0e10052a61f1cae92115f60d26f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0287_1186_20_200_simple","source_available":false,"strategy_package":{"files":[{"path":"strategy_20_200_simple.py","sha256":"7dc423156c4c665374aaa0705062ba4893123a99f02dc814553d073f44bafb50"},{"path":"config.yaml","sha256":"529ff6e3b5e33b26d63d37552d751dc0d7c5cb013d18ef3686a2790aec90e41d"},{"path":"run.py","sha256":"eacdb8af3b9f7c4996aace8cdfa171afd7eeba4114a8805a25013ab2fe19fdab"}],"relative_path":"trend_following/0287_1186_20_200_simple","sha256":"ee9ddce1176b3946da406a7f44e343a5744ed8a8ca5d953cbf76e17289b96a9e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0288_1199_index_ma","category":"trend_following","dependencies":[],"entry_hash":"15e5bdef2af41fcd53ef700f956966290a986e6cfa187cbf1b4551aceda3e040","functional_test":{"relative_path":"trend_following/test_0288_1199_index_ma.py","sha256":"49181471400dcadd662626cda1595296d539458cb3495f62ecb21cdd6ff6e78d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0288_1199_index_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_index_ma.py","sha256":"aa312939e12b214a8025e16d17f5a7745fbf86d7b106e2126060c562b5a68412"},{"path":"config.yaml","sha256":"ed7f7e8b1d2d7f6a0eeea7fcdc2d08f1890caa77f7ee94f4808a99e66c3f0710"},{"path":"run.py","sha256":"ad01ea09382705512f25b7c8488feb873f4c0cca8c13bd5b7587f6268b678491"}],"relative_path":"trend_following/0288_1199_index_ma","sha256":"1acdcd6e6c12378d7af894eae1cc2db4d06bdbbc154a1e8b01c7ec21331ea3f8"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0289_1203_simple_ma_adx","category":"trend_following","dependencies":[],"entry_hash":"68de71b4809dece983bf5fb57d7e20fc5172e177d1fd367fc2e69420aba4dc43","functional_test":{"relative_path":"trend_following/test_0289_1203_simple_ma_adx.py","sha256":"888660b7a0aa23328b5cefb678c800412821749f8712785a53e9032f93766589"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0289_1203_simple_ma_adx","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_ma_adx.py","sha256":"5ef07e7c294e0e9fec3f3c3105b22f2010975747db1221a39076b0618aa96f8b"},{"path":"config.yaml","sha256":"b529137d3b468843ad0fc9b02f6a764313653c5b04f8a58f329e978eee355dd7"},{"path":"run.py","sha256":"d5cc1751b897e8b3e69895fb677d80cae7596785a1e0044e8c842e7552ed0d4e"}],"relative_path":"trend_following/0289_1203_simple_ma_adx","sha256":"505eeca77c4d9d93f623cf83b0ee071409cead73dddf48b517ec527b6b6bc3ec"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0290_1205_simple_ma_ea","category":"trend_following","dependencies":[],"entry_hash":"45e16262c7102c04b5341c34e6683d751f32807063477fc0753465093088b5ae","functional_test":{"relative_path":"trend_following/test_0290_1205_simple_ma_ea.py","sha256":"5fd1720833c3a47675bb1de2050627cae3e2643c4097b268eb4b159b809cb894"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0290_1205_simple_ma_ea","source_available":false,"strategy_package":{"files":[{"path":"strategy_simple_ma_ea.py","sha256":"823cda2e69f8d351ddd8059db3c6bb4d593ba49f1fa46e81e2d283f874f532f1"},{"path":"config.yaml","sha256":"5fd59b44a5f1c362ebd9b07e9f10d3bfb79eff7fb504c2b7f4b7566563584891"},{"path":"run.py","sha256":"b7f619f0afdfd75b816907415770b6736a7eec6b151c3c60bb054898844ae79c"}],"relative_path":"trend_following/0290_1205_simple_ma_ea","sha256":"e05fed06f7133d2fe7dc1e5f592af78edb354bffdf258203ea10249087ca7507"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0291_1209_figurelli_series","category":"trend_following","dependencies":[],"entry_hash":"91804042dde383fe474ae04cbdf2d8e9285f343f02f2a5a0a9bed16a22f8afbd","functional_test":{"relative_path":"trend_following/test_0291_1209_figurelli_series.py","sha256":"b2ad95bd4883fc0d6a79289f715460b303f893d4d03ab370d26cca72dbe298c8"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0291_1209_figurelli_series","source_available":false,"strategy_package":{"files":[{"path":"strategy_figurelli_series.py","sha256":"1ed265438ecc62973f772833cdb35c64ae853dbc7aab663a3eb4b3d2f06b50b5"},{"path":"config.yaml","sha256":"e78de80c6b2d112f5d2f356410430f3303d5b605cf557a628365c0b30ccf2862"},{"path":"run.py","sha256":"7371a78426c9c852a62abefe02115e7ad599293f85f9ead2b464b80d0c72e26a"}],"relative_path":"trend_following/0291_1209_figurelli_series","sha256":"80266697e3715e68709e6c0b4385aecf3279c1a475bff0e347af5502750b7093"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0292_1214_tma","category":"trend_following","dependencies":[],"entry_hash":"342435269c33e5e341165ceb6aed6f28ee408f1c347c0186629f67917f0b228a","functional_test":{"relative_path":"trend_following/test_0292_1214_tma.py","sha256":"a24e6a2c42d1b91bc1b222d5e9d10629544330af3a2921ee51732d2b71f079ce"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0292_1214_tma","source_available":false,"strategy_package":{"files":[{"path":"strategy_tma.py","sha256":"10b83366c91f67ac0180e71bcf46f2011be59c92cfab1de4c02561166983ce27"},{"path":"config.yaml","sha256":"9536061b27fe7b0b25506c7559b898ce2c24814a2208bfeae533d24f94002e8e"},{"path":"run.py","sha256":"f1be03e5291376a5b54f04338d0a3f6447be26b486179198a818be705633d993"}],"relative_path":"trend_following/0292_1214_tma","sha256":"8ab07c773e1d87aea4db683421c84e12cf270412341e2b32188d1de9fc681d46"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0293_1216_beginner","category":"trend_following","dependencies":[],"entry_hash":"59faf8b0aaebf12b7c6e7f07b2ce0639178195f2846b72b59126e9a83945f273","functional_test":{"relative_path":"trend_following/test_0293_1216_beginner.py","sha256":"abbbc5ab25e26d12b82a8d3f7f7c2d9da5826cc511a843b073c249ec8d782291"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0293_1216_beginner","source_available":false,"strategy_package":{"files":[{"path":"strategy_beginner.py","sha256":"e844330c75b64c4d89c213721f536af702f2223790c13957bb393a783cd1ff94"},{"path":"config.yaml","sha256":"2edf0f9950edb26d921389d4c19e18e3278fad776080f00386898fcd45a99d0d"},{"path":"run.py","sha256":"45bc848b1ee748c3548822c2c411ba374db8392ceacf7f0ef02c8b243c694ce8"}],"relative_path":"trend_following/0293_1216_beginner","sha256":"244da67e9ad911cb8cfe19942457d0660c02766a31a0fc349360d41f94dd81b2"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0294_1218_stepsto_v1","category":"trend_following","dependencies":[],"entry_hash":"f49d869c74e7b5aded6b68ec991a6dd1f5cab59eaa153eeb60e1ad7756e9f397","functional_test":{"relative_path":"trend_following/test_0294_1218_stepsto_v1.py","sha256":"0d9df5fb5b6964d30e983030e322750eea900e797f13126501a155f9f6a67dfe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0294_1218_stepsto_v1","source_available":false,"strategy_package":{"files":[{"path":"strategy_stepsto_v1.py","sha256":"009b7bbcdd6478791b75a2b96d347cd7d940abb085e47a82f0e51395c0f90c30"},{"path":"config.yaml","sha256":"e33594b40775ba58647908f0cf16498c166db8030e8c766db7d4fdc92413eeee"},{"path":"run.py","sha256":"a33a07924e6857ad76c37cf6ae4f792f82db9f020b674d62847dd1b6eb930f27"}],"relative_path":"trend_following/0294_1218_stepsto_v1","sha256":"a1116af2905df4773ce30eaec873818c1705b4b02bb578ac586a793d83dfd715"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0295_1223_color_metro","category":"trend_following","dependencies":[],"entry_hash":"7dd91ecac58674ac87b83222faad31a076e4709370a0fb8a81c7836c0888c692","functional_test":{"relative_path":"trend_following/test_0295_1223_color_metro.py","sha256":"d6639b67351f3b7aacac3172a7b59a94466495cdea80a71630a694693fca7974"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0295_1223_color_metro","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_metro.py","sha256":"09862992cb776b2d1f592bc165d10a0a997cdce33b790361262943d0ab3dbe57"},{"path":"config.yaml","sha256":"5bdec5ad84bbcd815febb000d88380dc4a8a306d5c7567f2df7f84d4359d32d0"},{"path":"run.py","sha256":"678a5aaed12f6a2904c9447a8ea22c8c87ba7f988b9207ad54a912b356eace0a"}],"relative_path":"trend_following/0295_1223_color_metro","sha256":"d289c49e95c82e7d14eea040d68e65eb331c29a9ca8d02967272fbc8f4605367"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0296_1230_macd_xtr","category":"trend_following","dependencies":[],"entry_hash":"08f0f905c9e3454684def95d05b67999c750757972d312b4283760787b840a7f","functional_test":{"relative_path":"trend_following/test_0296_1230_macd_xtr.py","sha256":"d54c326e13c49e4caf3db990aae1374022c366c6330023ed29491387e4a8271f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0296_1230_macd_xtr","source_available":false,"strategy_package":{"files":[{"path":"strategy_macd_xtr.py","sha256":"943e61c99be5b5f85f93b79bf483da02fd3aaa08691255265c31888212869b6b"},{"path":"config.yaml","sha256":"554e2da8b429145e77ffa4c7f83ce28f50042756d493514eab694ad6d8ad3158"},{"path":"run.py","sha256":"be83a37c7d3669803ee5dc72f14baa5acd0c8e337d64ec37285547cea5dd5597"}],"relative_path":"trend_following/0296_1230_macd_xtr","sha256":"41b372934bbe9286053b7f1e101f6bb1cbc741e3b30e42ed821399dbf629c924"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0297_1233_mama","category":"trend_following","dependencies":[],"entry_hash":"ffe17c78a5257179cfdc5769f641d3f6e6c3b253d9695f3166326371724dbd49","functional_test":{"relative_path":"trend_following/test_0297_1233_mama.py","sha256":"d848cbaf65d9868ecb95e0e8f6fcb2035ccabbef675c76a027589d0a8845d37c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0297_1233_mama","source_available":false,"strategy_package":{"files":[{"path":"strategy_mama.py","sha256":"33352a1699b80c327ed1a08c4ea67c48ea227081df54d1a816031dff504402e6"},{"path":"config.yaml","sha256":"af56750858def7eddd7e1b0237bd9249913e12efbc9a77eb256e10827c39de4e"},{"path":"run.py","sha256":"71a9b0df867557ef30c7ca6be9764b45158f5eda5fe098e96741f5dd9be98028"}],"relative_path":"trend_following/0297_1233_mama","sha256":"d30922d6ebb67706e9207f098c232b4ed7a1f30b5b0a72614c688b34adb1eee6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0298_1235_oracle","category":"trend_following","dependencies":[],"entry_hash":"d3b9f600443c6c3c2f569428c98dba7240a56ecd4930e53412fc55472389fef8","functional_test":{"relative_path":"trend_following/test_0298_1235_oracle.py","sha256":"944d835fc81c8a06d0fa27a93c31bf88134f6721c297fe02e9778cec007052b6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0298_1235_oracle","source_available":false,"strategy_package":{"files":[{"path":"strategy_oracle.py","sha256":"61b5eea9baebddcadb983b4cb834a4ea068d8bc818086949202794cd637f61aa"},{"path":"config.yaml","sha256":"224cf0cf8f0231c2335330f7a71a73e32d2b1b5dbccda6cba9e95c6b006cc5ba"},{"path":"run.py","sha256":"32ee0182ea2bee339d55d241f50d9b50677a8ed8608bfa873eca642345886572"}],"relative_path":"trend_following/0298_1235_oracle","sha256":"21175cade348b804f5e87610058b5556197771d8a1e6f9e4be48b59d9532b263"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0299_1237_2pb_ideal_ma","category":"trend_following","dependencies":[],"entry_hash":"008e4005eb174733784e7ecd91335ceebd21a56927e80025357a3d4c9bd15ad3","functional_test":{"relative_path":"trend_following/test_0299_1237_2pb_ideal_ma.py","sha256":"e59c17dd7aaa7984bbe3007de7fee14ba0902916a57c1b0efd3c7ddd66c15b2e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0299_1237_2pb_ideal_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_2pb_ideal_ma.py","sha256":"a6d861405d086ee845c76f78add02a0c6479d343a2882b69a2bae4875308d925"},{"path":"config.yaml","sha256":"78c0871e05a8e845ec267feb8a7730edb0cfe5e79d84aa0473bd7f4a0d34a3b0"},{"path":"run.py","sha256":"c16bde9f368f4d1de6a13d5fe2cd1bb3be53d1c32152a7045bb3b0e4370b2564"}],"relative_path":"trend_following/0299_1237_2pb_ideal_ma","sha256":"e8c12c8a55e93a42582ae0a517a84f65d472cdda75b0b32cf1ffa5a60bd1051e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0300_1238_coeffofline_true","category":"trend_following","dependencies":[],"entry_hash":"c140bbcaf5469982b0b8f5a19e2134cae3c96964684c224a0d27e549acecbbd1","functional_test":{"relative_path":"trend_following/test_0300_1238_coeffofline_true.py","sha256":"93639faac71c7b3e34a45e669513a431f361e16113dc735dc42e0bc7da77d1a3"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0300_1238_coeffofline_true","source_available":false,"strategy_package":{"files":[{"path":"strategy_coeffofline_true.py","sha256":"3104ae6b5649faf673ca723abb6e88d36f9b78da000740bbd7236786d03dbe9c"},{"path":"config.yaml","sha256":"2e7f2c8bc2e3ecce1258a1b17766c20317e7291ed99af775b2da2a757aa74805"},{"path":"run.py","sha256":"4512bd0e93d553a04abcc6407097bbd0db2c206954702aa3eb191d154e0ad20b"}],"relative_path":"trend_following/0300_1238_coeffofline_true","sha256":"203593c4b2c60783920885aeb6b3ecad0adc4f0d8a77a0515a629e325e122a23"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0301_1241_buysell","category":"trend_following","dependencies":[],"entry_hash":"2de526ecf2bfd0b91eb47485857eb7d1b25f1f5e1f0130e7768c86f83030d899","functional_test":{"relative_path":"trend_following/test_0301_1241_buysell.py","sha256":"24388910983c7c48260cbc074d313092f7aad90fbf1e4c92e01559b1654edae0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0301_1241_buysell","source_available":false,"strategy_package":{"files":[{"path":"strategy_buysell.py","sha256":"ea0893530e631b52c8fe89dfe3111268ff3269aa840000d97f895149487061e1"},{"path":"config.yaml","sha256":"f54e056265eaa70b5a963f2c4cd6f01b0a91d882aa8feaabecc6a43b7122448c"},{"path":"run.py","sha256":"0e9f74ee23393b56c37e39f26fe88506a90cfd7c10655f03fc13f53afae860e1"}],"relative_path":"trend_following/0301_1241_buysell","sha256":"ea3aa339bcffb06d1082490d2c4c51d2d2b2e37a61652d9fd0b6036804e57f43"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0302_1242_bulls_bears_eyes","category":"trend_following","dependencies":[],"entry_hash":"f594b44c0635f047ceb672f9320da1b3f87d6dc44aa35981e00f2562b7072957","functional_test":{"relative_path":"trend_following/test_0302_1242_bulls_bears_eyes.py","sha256":"34df882c4d5bffeeb5ad62b0839be17c41327b37af308793c70264a763d85158"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0302_1242_bulls_bears_eyes","source_available":false,"strategy_package":{"files":[{"path":"strategy_bulls_bears_eyes.py","sha256":"82124caccfc083f084de26fe0e7236114321876638235171fb6028ab4caa6917"},{"path":"config.yaml","sha256":"d4da883d79040a2db216f5765d6c079dce82d12ba373e9dfc9b70eb7810ed15b"},{"path":"run.py","sha256":"4d60036f58d4bb149846d2b60ea7ed334709cff1ce7fbcde0a2928e623a8beb0"}],"relative_path":"trend_following/0302_1242_bulls_bears_eyes","sha256":"7d269d3f4c6edb85849c1c3e466c15f7213882a71f1c784e28d34b7bdf2f05fe"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0303_1243_bezier","category":"trend_following","dependencies":[],"entry_hash":"22c52fcb9b1d380d6fedc2e14514c57e03ca580fec25a2132eef864d10559b6b","functional_test":{"relative_path":"trend_following/test_0303_1243_bezier.py","sha256":"91630227f5fd564820e264d3eeda37ceb83664f1c675d4dcb1555228dd91a010"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0303_1243_bezier","source_available":false,"strategy_package":{"files":[{"path":"strategy_bezier.py","sha256":"8e193ac6171773213fa38378f59d598bca3236151fd60becc578ba06b7cbb637"},{"path":"config.yaml","sha256":"6dc2d92eb7e407d2ef896261c4ba91a1cfbc538e6efbd3241ac770095dda9ab8"},{"path":"run.py","sha256":"69bc90ecc5acd30abc162487c6603d53622d7a4ebfa25521fcb540b433a80710"}],"relative_path":"trend_following/0303_1243_bezier","sha256":"dd841fe40c0264ed5aae3e8e88edf79f4943f2a3af1a552e7a20d8ab447a1a3b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0304_1245_3parabolic","category":"trend_following","dependencies":[],"entry_hash":"ea30f19370b724e2bbc2bb6ec98a896c8beeb6abb56ea1740c4ffa960b34feeb","functional_test":{"relative_path":"trend_following/test_0304_1245_3parabolic.py","sha256":"d5968d84284411799d65e3c13e51886a25e907a29d80f55e29503046f258c900"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0304_1245_3parabolic","source_available":false,"strategy_package":{"files":[{"path":"strategy_3parabolic.py","sha256":"9b48b5f05f22d01661f56380559db6437cb1a5f21accb0c3359fe2a4c00836d4"},{"path":"config.yaml","sha256":"324bfbf65c0f3744902036f9980b0fb1e02913e3d99b873ca749ffec6d88fec9"},{"path":"run.py","sha256":"4d650475fe9f610679c1712747fbeb593e6ac26a2a9633e156a1802d2ddbc12d"}],"relative_path":"trend_following/0304_1245_3parabolic","sha256":"6fac262c6e14ee42f68bd5667aacdc3020e33fe1047110059247e8db2f0b19a5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0305_1246_aroon_signal","category":"trend_following","dependencies":[],"entry_hash":"6603ca7e9c9a6da4a3b83b50875a2a34e6a66fde4756299ae12f9ac3c77d9166","functional_test":{"relative_path":"trend_following/test_0305_1246_aroon_signal.py","sha256":"cf3deea712f4bdf869f1a60f5bce5e2ebcf02b70390ee2954cf1f78647734c78"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0305_1246_aroon_signal","source_available":false,"strategy_package":{"files":[{"path":"strategy_aroon_signal.py","sha256":"e5026a44d2590ad71276870fc479d87a00705c1f8ac81f2ca7a24a527b4a87c6"},{"path":"config.yaml","sha256":"2bdc28d4764f5574ec580fc1fc4548ee1840c58713eb00c5bace2125d0f7c426"},{"path":"run.py","sha256":"0814c7848e2b2590a3adbd031ec35b4085f7f9b2cf2b3837dc463affa8cc6990"}],"relative_path":"trend_following/0305_1246_aroon_signal","sha256":"98eaf53ed8594363077fee6c6f6b9366ababb96b6ae7a9ad905ae7fb7d6d6b1d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0306_1247_amka","category":"trend_following","dependencies":[],"entry_hash":"c78c8a5cf946ddb7cc7fc8a8b92d56b4b1d580afe1dca0420775a8d9e96fa631","functional_test":{"relative_path":"trend_following/test_0306_1247_amka.py","sha256":"6a7afc2c401b3082c5508bbdfe044cd220dd143e32dc0c0f995c4d7f6769f8de"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0306_1247_amka","source_available":false,"strategy_package":{"files":[{"path":"strategy_amka.py","sha256":"3896cd7e37ea863494df72b5f27db508890305f3fb801b5c51a9063d25edd455"},{"path":"config.yaml","sha256":"11569ee1152e938ee85dbf78cbb01407c1ed7a5b7c962cffb9568325cef66b31"},{"path":"run.py","sha256":"1a9806a6f3be7486d2c3d127b835958cc5e6b20f40c830c106500df1bb13940f"}],"relative_path":"trend_following/0306_1247_amka","sha256":"dab76db2b0f1738137a2e759228313423c05c4e2ffe16e6b67ac76ec443e0d48"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0307_1249_arrows_curves","category":"trend_following","dependencies":[],"entry_hash":"a173897114905c43aeeffcda29bddb4e87f721349a7483cca7309ddd558e22a5","functional_test":{"relative_path":"trend_following/test_0307_1249_arrows_curves.py","sha256":"e4fd1dc03f236c89b0f392584af696b8436b6601354a01a30209993e2ad02af5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0307_1249_arrows_curves","source_available":false,"strategy_package":{"files":[{"path":"strategy_arrows_curves.py","sha256":"2184fe2a0c3e8085b1f55eeac15f5577832d7466344cabe34997adc8ba4764d3"},{"path":"config.yaml","sha256":"9c3a4e8f0c6e5f44445ac8770b16711b02bc980611e987b1d745e6dd5b2a8ae6"},{"path":"run.py","sha256":"8c5a7b046068c1dc2c64a441a651728b0f6ff9c8c3982cc8d74beaec922bbb5d"}],"relative_path":"trend_following/0307_1249_arrows_curves","sha256":"da88a2ba545b96c8c7b12ea9ba4f23989d4795ad24ba3753db578bce86b08868"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0308_1253_brake_exp","category":"trend_following","dependencies":[],"entry_hash":"1549b1e03f9486c9d069ed339ebf5725e08b30d6e251e469b036e0e46481cc68","functional_test":{"relative_path":"trend_following/test_0308_1253_brake_exp.py","sha256":"41efc4d127b16d042dc78304c4248ac1ce876550c8fe70471bf96244ed43e5ce"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0308_1253_brake_exp","source_available":false,"strategy_package":{"files":[{"path":"strategy_brake_exp.py","sha256":"4e2392de137d5112d5551bdfa1decda13ae81780bb1d7d81eb1b8f8053346994"},{"path":"config.yaml","sha256":"0870036d49926af320b5441d80940cda01fb6b0d7bd50c3a9b68e166ffe94e61"},{"path":"run.py","sha256":"7a417306119475f3ebfee20b1fdc23fb864391184f7b9c1d30be9b0ae3e6631e"}],"relative_path":"trend_following/0308_1253_brake_exp","sha256":"68572cba9c78ad0e5746d316ee0d9a0d52c85275e2958b219dcfe9e5591b4a78"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0309_1254_brake_ma","category":"trend_following","dependencies":[],"entry_hash":"f8d5ccc6bee7b671dbdca5904fb79c222086b0421a91b0842cd00fa1e5015191","functional_test":{"relative_path":"trend_following/test_0309_1254_brake_ma.py","sha256":"4d1a4af9d6e951c7b67bb25e9404daeac4120b01b1dc6758d321b11dac884a9c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0309_1254_brake_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_brake_ma.py","sha256":"f4accabb8bb9c0bb4c45086ce5f438b5c492ea3323c664b63916be4ed8879ad3"},{"path":"config.yaml","sha256":"52af981ef5d7112091f03494f6462c6ed73280bfd0073a37cdab87ad15cb9529"},{"path":"run.py","sha256":"77d91a3f34fe15622d730aa5aba3e23486dd60a723048eeda509fd8ea4676574"}],"relative_path":"trend_following/0309_1254_brake_ma","sha256":"fb4d762d3f837959817ea00465ae053acad8d65444647471a823be2f373703cb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0310_1258_brakeparb","category":"trend_following","dependencies":[],"entry_hash":"5e8803e1417334b741c877ed1fc02a4c4225d3d5d1c21565846788e35f0dfa0b","functional_test":{"relative_path":"trend_following/test_0310_1258_brakeparb.py","sha256":"fcf2f8063b888ecd479395db19ecba0a7fdf6f1f01ef479ef55149724911ca9d"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0310_1258_brakeparb","source_available":false,"strategy_package":{"files":[{"path":"strategy_brakeparb.py","sha256":"8d6809a9438c87cc38eae495942b32334221ad020ac468f047fc86999a48a603"},{"path":"config.yaml","sha256":"0711d2b488bc2b7669ab7e700da2caa73059181577c6ab55bb37e39d23fdfbd7"},{"path":"run.py","sha256":"be9fb740d4eac5146c004cfdfeea2ab8becf6bbfe985d77d8cf825d48357105c"}],"relative_path":"trend_following/0310_1258_brakeparb","sha256":"d5651497a0d05d5745047d85c4abaa2298f71cc103546bb48f43c8645aecaca9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0311_1259_muv_nordiff_cloud","category":"trend_following","dependencies":[],"entry_hash":"7b09da7245a9b7e239cdcef29b1ed5700d3be50416835f44df0f61ced0fef5e7","functional_test":{"relative_path":"trend_following/test_0311_1259_muv_nordiff_cloud.py","sha256":"86c870655c1d9b69608a2ce4c88bad655ce22bdea0170dbf59c43ffde84d7c10"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0311_1259_muv_nordiff_cloud","source_available":false,"strategy_package":{"files":[{"path":"strategy_muv_nordiff_cloud.py","sha256":"f84c85daaa4e250a10b4461401ae0926612c2af3749bc6aa95d2b1448ad07afc"},{"path":"config.yaml","sha256":"ca789b50a29e44f3dce3a59384ddea2eeee5b6523e58c19559dd3f808335139a"},{"path":"run.py","sha256":"4e3a7e0108075a2e15f38efd68a0ed65091479beb9913e482de0141eeb9c16b9"}],"relative_path":"trend_following/0311_1259_muv_nordiff_cloud","sha256":"68873f5ead9b9f72022f0a2d578e6df0c649349ebb6d445a675de2f5fbd2f89d"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0312_1260_color3rdgenxma","category":"trend_following","dependencies":[],"entry_hash":"0797020c7806feb57a018187fc41b715a0d7b6626a24959181f40ef097c9038c","functional_test":{"relative_path":"trend_following/test_0312_1260_color3rdgenxma.py","sha256":"edbf057f58f8c044bae195bf67f331c0ef67552f893c53ebe1a97f16ab0219fe"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0312_1260_color3rdgenxma","source_available":false,"strategy_package":{"files":[{"path":"strategy_color3rdgenxma.py","sha256":"05e81b55e4d5f797182a0c622cb8543ca727097f0ce27bf66dc18176b1bcfc84"},{"path":"config.yaml","sha256":"5de15183f4d3571e6c2c973e5a182203059a907f29ccc2707844aa782203883b"},{"path":"run.py","sha256":"fd97ae234feb3d7acd4c5ebe1fac2037ca9bae8bce1fa8449def8f9409b8b3d3"}],"relative_path":"trend_following/0312_1260_color3rdgenxma","sha256":"52dcf9878797d573a585186a1c38e2f75550e076f59bdd2ce0f786f6a784f3c0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0313_1262_f2a_ao","category":"trend_following","dependencies":[],"entry_hash":"1a285a588e87b4523e61f9eb91daa76f512c40ddacef7d349529be6f975a01a0","functional_test":{"relative_path":"trend_following/test_0313_1262_f2a_ao.py","sha256":"e7ff9c19676579d45ca9e560e3e0bd1514d0d5e713972608a41a3cc09bc4bc21"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0313_1262_f2a_ao","source_available":false,"strategy_package":{"files":[{"path":"strategy_f2a_ao.py","sha256":"ee263441abd0a4105966b53d061ac09f9340b8cdaecea8704e7a3d8c857539cc"},{"path":"config.yaml","sha256":"b60d5f723d5d2cf540f76336bab5d4a7935c2c17b7b897bfdfc10365c9aa5e97"},{"path":"run.py","sha256":"32d1f4ac0d2ab1e882cac96bd3085cce6011ca3e0a280736af664d5a811cf3b6"}],"relative_path":"trend_following/0313_1262_f2a_ao","sha256":"e86d0532ed4aac1692dbf076f6c0bbf81b24fbaa59e62514e3c8cdda052e47ab"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0314_1264_jmaslope","category":"trend_following","dependencies":[],"entry_hash":"965881c07c2769b33ca4b6b28c6f5f16020c7264c08cbdf9f506e7c403afd745","functional_test":{"relative_path":"trend_following/test_0314_1264_jmaslope.py","sha256":"ec3d5f3895e4361fe5aef8d462780c79a1f0e6560cc91e852bd32336b1bd68a5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0314_1264_jmaslope","source_available":false,"strategy_package":{"files":[{"path":"strategy_jmaslope.py","sha256":"16015dbddbfd73ca6dc3749867be478fda441239a2d352a0a4d180d1220ebf90"},{"path":"config.yaml","sha256":"79d739dcdc2c105aa5b16b0828b96a9bf834c3524d8fedbf4508cf8114541492"},{"path":"run.py","sha256":"df5b6e2e1a557fa886488a861f439433c2214b9059787b2fe6c050dee00f8aed"}],"relative_path":"trend_following/0314_1264_jmaslope","sha256":"e2f9a856f32653777b06d1cf86564cdb12862a85ccd6a4494350733b82a80ee6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0315_1270_colorxadx","category":"trend_following","dependencies":[],"entry_hash":"9e32d1f64b57bbbc48c493ab39096a106fc10381c40f089f12ac9b90727c9bbc","functional_test":{"relative_path":"trend_following/test_0315_1270_colorxadx.py","sha256":"ccb81676143314c615356dfa10cf24598e9ee7cc6bfa40fb49d0973407d1e6ec"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0315_1270_colorxadx","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorxadx.py","sha256":"2daaeb10d467f9b7f71b3d168c57f81362090b272e6e2aa74fff841ea0f83f7d"},{"path":"config.yaml","sha256":"81bc2b8bc52ba18ffd75d1cbceaed23cc6e7c69da50042430fc9a912dcdc1402"},{"path":"run.py","sha256":"d58880036b4954dac6fa0b0c0f999640f8c7134a1e1ad21df06156a602ffff02"}],"relative_path":"trend_following/0315_1270_colorxadx","sha256":"87dd87890d6227270208e8ae10fe737f4bcd4ff756e0d268c5fcae3c68bbfa62"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0316_1277_colorjvariation","category":"trend_following","dependencies":[],"entry_hash":"b68f1d0740698e46813cf6b1b95e6f19890a3e0def17ddb0bdea820a885ce8ce","functional_test":{"relative_path":"trend_following/test_0316_1277_colorjvariation.py","sha256":"95e933eb5173f602871b805c54d2d1313e59ff66ae38bb221b9f6b427aa38d6a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0316_1277_colorjvariation","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorjvariation.py","sha256":"45e3ac0ea1bea0a8b4c1db5307c3bf5d069d7b3ef10cb43615c3e8f721626afd"},{"path":"config.yaml","sha256":"88e15d1945e517328cca721899866f93d52ba65f65d42001a94f922ddf075c6c"},{"path":"run.py","sha256":"e0ac6d32aeae45faff3d001a5d35b8fe5ccfe27e4bb669a43314225105701c7a"}],"relative_path":"trend_following/0316_1277_colorjvariation","sha256":"1fbee90a16b7d38c0e8acba6813551cefaa9246930e0c1a3aa334bd788d1bcac"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0317_1280_3xma_ishimoku","category":"trend_following","dependencies":[],"entry_hash":"f4cb9f9159f926777cde890d963a38450a969b7292234407a64e732a790324c9","functional_test":{"relative_path":"trend_following/test_0317_1280_3xma_ishimoku.py","sha256":"3ef696889da0aa59b8b176cbb79aa330aedf8e9d33dc147f515cc0929f6748d7"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0317_1280_3xma_ishimoku","source_available":false,"strategy_package":{"files":[{"path":"strategy_3xma_ishimoku.py","sha256":"87b4726dcff9662019b337911d28c50ecd0c32ea63d6a8686605ef5d96f72769"},{"path":"config.yaml","sha256":"a99dae65bc9e73c79a3fca5e47f02dd7a62ffceba84eae21e5a51c5e91df214b"},{"path":"run.py","sha256":"d30fb48500a88fe262eb50815d7053157d03417ea1afadf452714f9eb703956f"}],"relative_path":"trend_following/0317_1280_3xma_ishimoku","sha256":"c135cf71a8739d4d93291395350b7c7af5703ffdd11c58770ce4c02dc6642c01"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0318_1287_linear_reg_slope_v2","category":"trend_following","dependencies":[],"entry_hash":"ff94116789fbff6e65703c6d7d648803a61731ee3d402ea18732e5a123eea1d6","functional_test":{"relative_path":"trend_following/test_0318_1287_linear_reg_slope_v2.py","sha256":"8a54ae2f48cf1723b61d03f24ee182a111ac56b8da0af6effdf694a91b683745"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0318_1287_linear_reg_slope_v2","source_available":false,"strategy_package":{"files":[{"path":"strategy_linear_reg_slope_v2.py","sha256":"5a0973807eb431b672dd1827e56bcdc026be65f14b3bf8bcc21a8982f811a678"},{"path":"config.yaml","sha256":"03e48744e3b677a2532aaf7e5a5a7f618c6f8a42180db0bc8fd705acd912cdb1"},{"path":"run.py","sha256":"bd07ab17f81ef89818811f473e60d7ccfe70d10a2868c6487b10a9270e6a09f4"}],"relative_path":"trend_following/0318_1287_linear_reg_slope_v2","sha256":"de348e6f5d1abc4e00206374dd8e9ec86e9beacaa8b8382f99793ee2b8f29d37"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0319_1289_zpf","category":"trend_following","dependencies":[],"entry_hash":"5f4fe079718be419b3f3e85ebfe413c0296366347ee7c0758092a4182d6967be","functional_test":{"relative_path":"trend_following/test_0319_1289_zpf.py","sha256":"74b6aa77ba6a55c58cc4da931f8eb4f691d1dbdb04d42e145a4bb79016152ac4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0319_1289_zpf","source_available":false,"strategy_package":{"files":[{"path":"strategy_zpf.py","sha256":"9dc9d50fb00a3fbaccc795f588c4d22067aaa5c479f2fc051a51fe55b0cd5f87"},{"path":"config.yaml","sha256":"9dee03797c3b889e64977021569e61a7dc8ec39a26d88fad4947dbe21d96d4e4"},{"path":"run.py","sha256":"95cad1d25654905aaff5e219726ffe40b6a536b168f8a936aa25ae2300e41f93"}],"relative_path":"trend_following/0319_1289_zpf","sha256":"6bba9c48ef1cbcacf9281ec035b8c5ffdfee8ad6ac90690c0d05e12614f8a2e1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0320_1290_rmacd","category":"trend_following","dependencies":[],"entry_hash":"7d7ceb51952f5d959938f45cd0f390ef92db28b6b59eaa34bfcde28cf82c14e2","functional_test":{"relative_path":"trend_following/test_0320_1290_rmacd.py","sha256":"60614d288a5a1521b3850eacf9ff5c6fa91c4df6049de7bb583cca69996425eb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0320_1290_rmacd","source_available":false,"strategy_package":{"files":[{"path":"strategy_rmacd.py","sha256":"a7f511e797c4e1f29e6dc04e24a2a6181aa98ac32a5a8423449e58818b8d0f3d"},{"path":"config.yaml","sha256":"1cd4accbedf9fcdb05157e61478be624b2d91e4ce8308bb3c6684733e3a4a46e"},{"path":"run.py","sha256":"3f26d7acc28c52e838d250ed069f4c5752436177b29010c428e60e8787bf379d"}],"relative_path":"trend_following/0320_1290_rmacd","sha256":"9b5a4029390bc71f247367ea5726f5f01a1d82d91e3d466a6ffa4821a17b037e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0321_1291_ma_parabolic","category":"trend_following","dependencies":[],"entry_hash":"7688fc46bfb77fd1e510efea74f662edee1ba962cabac5b650b63c0e658ea251","functional_test":{"relative_path":"trend_following/test_0321_1291_ma_parabolic.py","sha256":"3e8d1faec4cca3d7ed82e2b956a4a08c5ef694fd1accbf78cb85c693722822a6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0321_1291_ma_parabolic","source_available":false,"strategy_package":{"files":[{"path":"strategy_ma_parabolic.py","sha256":"f3a6c7d4dd1dcd884f7dcce12698c80df414ebd72bd4dba94e7e5a4bfec2b14f"},{"path":"config.yaml","sha256":"09fe95e969c0cabacbb19988f612a75ef792050c7523fb12c8952bbe9e370b0e"},{"path":"run.py","sha256":"9f94a2fcaeca3e29423a7429deac071cb95c64d7f047b4ca00afc3ca925d7fcb"}],"relative_path":"trend_following/0321_1291_ma_parabolic","sha256":"81a0e8689753f8deeb0c6c0834f656aed7f2d3d1897e77b7cc3e6f64762b6b95"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0322_1294_2pb_ideal_xosma","category":"trend_following","dependencies":[],"entry_hash":"5b3b30cb731ff6177abe529ec023a1366712bd89a5a08894393d19b74c16859a","functional_test":{"relative_path":"trend_following/test_0322_1294_2pb_ideal_xosma.py","sha256":"e75f7c366510dfe878058216e0a875ca5cd2e3a91e72780297874eb3fce97770"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0322_1294_2pb_ideal_xosma","source_available":false,"strategy_package":{"files":[{"path":"strategy_2pb_ideal_xosma.py","sha256":"423b47ace994279779abc12cfe486c8246b00f9f2ae4d232c56b03ebfb0fc91c"},{"path":"config.yaml","sha256":"aa3836ab4af44c41d47e7b94e739b4fbe4346dae6bf90d73206942c9c4e5cb77"},{"path":"run.py","sha256":"82b00e1f56b193c0fd3b31da53376d6c266a39b6c6bf012cfd3c2d914f9e64bd"}],"relative_path":"trend_following/0322_1294_2pb_ideal_xosma","sha256":"3987f0edf81e1b26cb8d41386da9bad022a5e5d18960a0799ec4416ffd41a4c7"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0323_1297_bulls_bears","category":"trend_following","dependencies":[],"entry_hash":"6fe1c0faf40bdf3a7e2a499b2c0caeb2a641d20dd62390c43620d97a396f4758","functional_test":{"relative_path":"trend_following/test_0323_1297_bulls_bears.py","sha256":"bede5e76d7a0989885aefb451665b13e8bc1cad329770c8a40c3892702f7b83b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0323_1297_bulls_bears","source_available":false,"strategy_package":{"files":[{"path":"strategy_bulls_bears.py","sha256":"fdfb92ae4d7693a812438e6baa69b240112c179dfc64db67689d6c749ed988cf"},{"path":"config.yaml","sha256":"5832db9531b3e24bb80abca094053318d1159365eb4ac192d9606af2ee76db5c"},{"path":"run.py","sha256":"a3f7fd80c9681940cf6ada79ea5c1f36dccb795c80d77c7da7009a8da6ef8025"}],"relative_path":"trend_following/0323_1297_bulls_bears","sha256":"66992810485b2e999b9732bccc0265cf694351607fe016ec8a2d77200d7c0fc4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0324_1298_xmacd","category":"trend_following","dependencies":[],"entry_hash":"7cdcdfdf12f80ffb04ac4fd8389fc424f5c0a8714e922c2259f0d350fd0de50d","functional_test":{"relative_path":"trend_following/test_0324_1298_xmacd.py","sha256":"73b6f893d144db018d1993525a22b683f79fd97e838e22b08f30a79a24a2be8a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0324_1298_xmacd","source_available":false,"strategy_package":{"files":[{"path":"strategy_xmacd.py","sha256":"77e7adb85f8501877cd327f56c54130f8f290d735438638fb42e5595eb5d67cc"},{"path":"config.yaml","sha256":"097fe35d781ea22c52d7555eec3dccbe190a5133f2b5ab4d14468a087b22fe6a"},{"path":"run.py","sha256":"aba841d764a6fbc519a6f9efb094e36f94a405a4aded090db7f545243211cfce"}],"relative_path":"trend_following/0324_1298_xmacd","sha256":"b5f646e589351312a4eaf8be9d153d70c29ae7755ea12411f5c5cf5216eb87ec"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/0325_1330_three_ema","category":"trend_following","dependencies":[],"entry_hash":"ace90b07f3fc6b2f6f1626549255d7bf0df2da9ae012d91e0a84bc5443cc2b0e","functional_test":{"relative_path":"trend_following/test_0325_1330_three_ema.py","sha256":"86476d86c1014b045955c71758a4c8f7f68abea3ea460d1ac9412489681c1b4f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0325_1330_three_ema","source_available":false,"strategy_package":{"files":[{"path":"strategy_three_ema.py","sha256":"c93754884e729df7903176baab4787eb95799570659022167c93183740f2a06f"},{"path":"config.yaml","sha256":"239150fcb22598f191597bc6ac9162b1b2845bff73d0e3b3ec8369c148d2c000"},{"path":"run.py","sha256":"0669254bc9b164ebb8c11c2db759d24aadd0645e1c9d687d45543671fc344d7f"}],"relative_path":"trend_following/0325_1330_three_ema","sha256":"aa6e9a3d5b1c6abc7bbd8fc463c0cbaa4677d4b0b8fd8aa99bafb2b8a168383b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/03_two_ma","category":"trend_following","dependencies":[],"entry_hash":"bd186bbb022e00e35927bd0ba44d1ec2abc5ed6f38af69e0f48bfdf52723d54e","functional_test":{"relative_path":"trend_following/test_03_two_ma.py","sha256":"33c7cacfd2e890049ebc6c2bd8a958ab1dd31623ee88f9661caa37ae13d0786d"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"03_two_ma","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/06_macd_ema_fase_strategy","category":"trend_following","dependencies":[],"entry_hash":"80f02fa3d891f8ed5b933102d6ad6e9fe3081e1bdba42ab04d01b12339a42951","functional_test":{"relative_path":"trend_following/test_06_macd_ema_fase_strategy.py","sha256":"0967d97792985d8d464926659ea4c353b93cf993a1531d218359115d689d0f02"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"06_macd_ema_fase_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/07_macd_ema_true_strategy","category":"trend_following","dependencies":[],"entry_hash":"8c8911d9f51921bb4b37b109dd798bb6768ae02d7f05e3b4f11029df0f01d102","functional_test":{"relative_path":"trend_following/test_07_macd_ema_true_strategy.py","sha256":"e44c621f262017fb34754fcc7bd684b6147748d8dd8f3091d533972b5349425e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"07_macd_ema_true_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/116_triple_ema_strategy","category":"trend_following","dependencies":[],"entry_hash":"e677fb62443ddefe7f1a126c3fbab86f304323a307a385aa37cf16ca9381ba09","functional_test":{"relative_path":"trend_following/test_116_triple_ema_strategy.py","sha256":"96de44e145c0ff639fb17af05db545d177b639d5dc5c9c902efcb87c2be9d5cc"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"116_triple_ema_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/15_fenshi_ma_strategy","category":"trend_following","dependencies":[],"entry_hash":"5eb13fa3b16f85ec396fb63513565351bbc58780e0bf99eb82638b2e63e339b6","functional_test":{"relative_path":"trend_following/test_15_fenshi_ma_strategy.py","sha256":"3020164917cabeb9f94f703b1b9f8fc035537a39934173bc8bb8bb704ccef253"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"15_fenshi_ma_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/30_macd_kdj_strategy","category":"trend_following","dependencies":[],"entry_hash":"4fa321e859e56198584264899eaf58e0333b150d25da51c853e2d7750739a9ca","functional_test":{"relative_path":"trend_following/test_30_macd_kdj_strategy.py","sha256":"70787a8ed231312b232c0d522fbbe209b6b0cd7c0d202a390e21bbc3c4291883"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"30_macd_kdj_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/34_turtle_strategy","category":"trend_following","dependencies":[],"entry_hash":"d9dd24f06ba124217ff914a30d739841b18ae68f016f344a05110a4b50707a02","functional_test":{"relative_path":"trend_following/test_34_turtle_strategy.py","sha256":"4065ed83ab677705f22d737620c29bb28beda668a2e98afad1c76fb74892418a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"34_turtle_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/35_sma_cross_signal_strategy","category":"trend_following","dependencies":[],"entry_hash":"2daeb48bc28bddba8e658d3567c8d0ad24b5cc15f4fbb085df1805ffce1e370d","functional_test":{"relative_path":"trend_following/test_35_sma_cross_signal_strategy.py","sha256":"b81590c761930580ccdc935c1b28b3e8ea2f8480f81dc3afae2302031c6534a3"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"35_sma_cross_signal_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/72_triple_cross_strategy","category":"trend_following","dependencies":[],"entry_hash":"a59622dcc4588320513df71f970332a1edfba99d21c6920e329d3c51fb1e9bc5","functional_test":{"relative_path":"trend_following/test_72_triple_cross_strategy.py","sha256":"d6127eb6ad76f0a2cfa53deb803014718a64b690ff7cdcaca0dbbd036bdba21d"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"72_triple_cross_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/75_extended_cross_strategy","category":"trend_following","dependencies":[],"entry_hash":"a12fd665cab1d5ea82f06745a137b3f379dfba10931447cf2e42496aa913f2aa","functional_test":{"relative_path":"trend_following/test_75_extended_cross_strategy.py","sha256":"dea51b9eeb17481eb1262e28f62e413a1c5c79de54133421dc7dee72fe6c49df"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"75_extended_cross_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/86_sunrise_ema_crossover_strategy","category":"trend_following","dependencies":[],"entry_hash":"fa5cbbc92104efcbd72f909e47ea1ab442b803d5fbfb9b767f61e4f0e943d239","functional_test":{"relative_path":"trend_following/test_86_sunrise_ema_crossover_strategy.py","sha256":"3c1cbef343d140cce5bdd279074327aefb8e95018ad05ba3933d2e020d22d5f7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"86_sunrise_ema_crossover_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/87_hma_crossover_strategy","category":"trend_following","dependencies":[],"entry_hash":"a2955943ab2a19e16eb44a4c88bb319cdf8789044aa51b1d420fd4a39bb1769b","functional_test":{"relative_path":"trend_following/test_87_hma_crossover_strategy.py","sha256":"dcb4a2a2295ef72332b6503cc374213c873a2d350ae0345a57f72912af593171"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"87_hma_crossover_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/90_forex_ema_strategy","category":"trend_following","dependencies":[],"entry_hash":"8cf17a0aa308fa23699df8340b59d9bcf2d4dc33a5ddd936f4f18de61a2c042c","functional_test":{"relative_path":"trend_following/test_90_forex_ema_strategy.py","sha256":"5629ff113043d9bd480abf7db9fb5585643e7d4b7486cd765e2a4e2d98e63256"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"90_forex_ema_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/91_hma_multitrend_strategy","category":"trend_following","dependencies":[],"entry_hash":"dcbb9c94c7e0a537f11bfc12b78cf8276407dd6dc872f08af2c73c06502017d4","functional_test":{"relative_path":"trend_following/test_91_hma_multitrend_strategy.py","sha256":"8fadc0fa7fb75f1dd7d151d467f6cf85fd4c81ac38bede4c5bd3251b3f32939e"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"91_hma_multitrend_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/93_macd_dmi_simple_strategy","category":"trend_following","dependencies":[],"entry_hash":"dda82aecd67baeda9de23c9d759ad41f2506b082e4b8df43eb12f3bea6549fdf","functional_test":{"relative_path":"trend_following/test_93_macd_dmi_simple_strategy.py","sha256":"a3a5f216b4b5b5553ef3b0c3c26eb64e1128a86ed2f352139afcceb7c84d1348"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"93_macd_dmi_simple_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/96_ichimoku_cloud_strategy","category":"trend_following","dependencies":[],"entry_hash":"1abd662dd57d8230d5c8afced92b0571eaee87067a2c7fd2a9506d921dc05f40","functional_test":{"relative_path":"trend_following/test_96_ichimoku_cloud_strategy.py","sha256":"91b473f982c6a189f4d92c7739624474df9612c8afc00db851886b7d4cbff016"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"96_ichimoku_cloud_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"trend_following/98_dema_crossover_strategy","category":"trend_following","dependencies":[],"entry_hash":"f9e44959a29e9b277b58222da1b8703a311ba0a7cccaa1766e33d4309f7ee695","functional_test":{"relative_path":"trend_following/test_98_dema_crossover_strategy.py","sha256":"e48380957a1c1fd600dab4ce79e38c0a386ba88a39bf8bfbe286888c910382e3"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"98_dema_crossover_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/08_kelter_strategy","category":"volatility","dependencies":[],"entry_hash":"5410c4302845a9a67e9500984689eea9600dfbcb4d85883a60e2e791b0922d62","functional_test":{"relative_path":"volatility/test_08_kelter_strategy.py","sha256":"8f5610cb4fe957b6a91672bb1be3aa128af829e5502cadb6433bb8b7fa70d0a0"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"08_kelter_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/108_keltner_channel_strategy","category":"volatility","dependencies":[],"entry_hash":"ffcd99e2d607e238a209104cb4f7eed299a67090511cf9f882f1e2c54b67c9ec","functional_test":{"relative_path":"volatility/test_108_keltner_channel_strategy.py","sha256":"6eb22fee19af08b993432eb177bbbce1132439012bb86ed2236610435232c1b8"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"108_keltner_channel_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/111_chandelier_exit_strategy","category":"volatility","dependencies":[],"entry_hash":"d2306a1d013d28bafed9259eeddd5c13916f0431a084d75af8bb89d82f110112","functional_test":{"relative_path":"volatility/test_111_chandelier_exit_strategy.py","sha256":"7a40b4de20bf3cecbf8f5e5161e392bc496a40985651a59216b1f513c99b351a"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"111_chandelier_exit_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/114_supertrend_rsi_strategy","category":"volatility","dependencies":[],"entry_hash":"a6d717812b138c4aeabe68fccffc7c9ea4b99be36984e406164ae7826160912d","functional_test":{"relative_path":"volatility/test_114_supertrend_rsi_strategy.py","sha256":"bf4ddafec106d3f71e2523966b25af1e19d00e9cffb7b790723bb636d08298c0"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"114_supertrend_rsi_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/36_macd_atr_strategy","category":"volatility","dependencies":[],"entry_hash":"d59c466374a7eb1c8e7bf53175edd8d16a40051f0b787ef4ffe367287f97624f","functional_test":{"relative_path":"volatility/test_36_macd_atr_strategy.py","sha256":"182b901cfc5ac0b031baf2b1ba54ce4b48b01446107abba444fcee89fd5e6b6f"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"36_macd_atr_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/70_keltner_channel_strategy","category":"volatility","dependencies":[],"entry_hash":"70276772a05e2fb7050381675537ff88efdc1b909b0359c30dad63712094a22f","functional_test":{"relative_path":"volatility/test_70_keltner_channel_strategy.py","sha256":"7f7bd7cf3df7aaffb87c79ce3dd95f05ef9a0f570b09abaf993d5abc4d64a190"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"70_keltner_channel_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/81_supertrend_strategy","category":"volatility","dependencies":[],"entry_hash":"2ab8700f6cc6013c3a0a09bfe0a75278a9950d98d135a5ad98cc32978c8e7ab0","functional_test":{"relative_path":"volatility/test_81_supertrend_strategy.py","sha256":"6099c940218f4d5f5668408d989ffc8ceb31a4ac127d505939c2340d393559d7"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"81_supertrend_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/88_supertrend_indicator_strategy","category":"volatility","dependencies":[],"entry_hash":"b4a48112d3c2305ae52d0eb0b55f0d74cdf8b8e974438a8399a25aab39d91ded","functional_test":{"relative_path":"volatility/test_88_supertrend_indicator_strategy.py","sha256":"fff418cdf267e4a745dccbce94389f322f68b7879c6cd3d6e28d49371fe152e8"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"88_supertrend_indicator_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility/89_adaptive_supertrend_strategy","category":"volatility","dependencies":[],"entry_hash":"aa8075f1f5deeb1ad2f14e9f9a3f9137d27990dd7110e5423e5bc5039509db9b","functional_test":{"relative_path":"volatility/test_89_adaptive_supertrend_strategy.py","sha256":"63c19765a5d695c3fe1d309df600a6bc93ebd5fd4355ff5fbfd56116bf775fc1"},"mapping_status":"functional_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"89_adaptive_supertrend_strategy","source_available":false,"strategy_package":null} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0001_0021_gold_paired_switching","category":"volatility_systems","dependencies":[],"entry_hash":"101d15b929ff3c8b0b4e593f7ec2a991ebb8aa2bb5935bee3e3dd8ae70354cdd","functional_test":{"relative_path":"volatility_systems/test_0001_0021_gold_paired_switching.py","sha256":"b023170220d76a2b5acc857f5557ee427e38132ec7ec943fe3fe984155543c52"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_0021_gold_paired_switching","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_paired_switching.py","sha256":"4e4e8c306ecd77713ab02485f4968721f78b84c2abb29e8d2e068fde3e9b48c2"},{"path":"config.yaml","sha256":"f007e340ce1f3e42b3cb0de8d4af8f977908be28a307ebd823990aba0ef6c9c9"},{"path":"run.py","sha256":"f390c0e7fbbc3cb8f00233dbfe21cb261cc98c86510a0c416b49d6a76e3065e1"}],"relative_path":"volatility_systems/0001_0021_gold_paired_switching","sha256":"67bf2066a59a3555b21e832a33e2e3da6d00d48f8af914d9ae74de9c1e9159e9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0002_0022_gold_self_similarity_regime","category":"volatility_systems","dependencies":[],"entry_hash":"ff662d0fa45a19479e89b3f06281a72b063eabe9cf613bfe1a77be4e183b2bea","functional_test":{"relative_path":"volatility_systems/test_0002_0022_gold_self_similarity_regime.py","sha256":"96d0dbca0334d16fa44e3a00dbb23761671768f823adee0eeb6257da7d00d01c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_0022_gold_self_similarity_regime","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_self_similarity_regime.py","sha256":"4cdbc1d9b70a728351fcde4cda3880e937cfed2af177dae0d7001ef530cf0618"},{"path":"config.yaml","sha256":"b2a4e3659c293da87a432a321d24423b1aa2823baf495fb74dfa46a41473d52a"},{"path":"run.py","sha256":"25dd22b756fe2e2c43eb0650680d2e27f7e1e61cdda76593bc9a2694b413e0a5"}],"relative_path":"volatility_systems/0002_0022_gold_self_similarity_regime","sha256":"b2bb77bb29f42662e436b001bac262052fb25e92cf7efd8e2bc3f554d5dfe159"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0003_0025_gold_paired_switching","category":"volatility_systems","dependencies":[],"entry_hash":"e0124ef1265c0ab9927c8843fb6fd1d6af2912439965f027cd54126fbb7bc641","functional_test":{"relative_path":"volatility_systems/test_0003_0025_gold_paired_switching.py","sha256":"772b33941dcb48ac3dfc372e3652a1b937eaaae79f8beb73384abf7a2dbaa448"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_0025_gold_paired_switching","source_available":false,"strategy_package":{"files":[{"path":"strategy_gold_paired_switching.py","sha256":"0b8d6921cc22191267e44fca7ccfd75496b3dcf007a66283a82f96fae5946fea"},{"path":"config.yaml","sha256":"1b521d34cc2cf8e17898fb12b333e7db58d7db22e1425cef78cd83fd17579f56"},{"path":"run.py","sha256":"387fd5d300186841381a1124728d12da36a0c62a41d6adf73a42265ab38fe99b"}],"relative_path":"volatility_systems/0003_0025_gold_paired_switching","sha256":"aff09d4ea6f403fa305bde2dba04c65864163720dfa870f1d6d9884165e03714"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0004_0032_gold_regime_filter","category":"volatility_systems","dependencies":[],"entry_hash":"278d8b56d52af312237eedbe960dd6b9e1592a052244a1e1491fb5c76141b7a7","functional_test":{"relative_path":"volatility_systems/test_0004_0032_gold_regime_filter.py","sha256":"63537c27651cbf0502fd7282dc7e10bc2163085c6b206764af02516d99ba3115"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_0032_gold_regime_filter","source_available":false,"strategy_package":{"files":[{"path":"strategy_regime_filter.py","sha256":"f3dba6ad7b8585c93c34bfd28b4f87c944e10ecfd00bc8dc6dd818e2b9d941ee"},{"path":"config.yaml","sha256":"fa5f3d43942d02b06e5783a91707ad86402812db0e4739127bef79fbf098eb38"},{"path":"run.py","sha256":"1489aafbc6945bcfcc137f674b3b84bdc2617b7094d87a1793e5b60d1bf7b273"}],"relative_path":"volatility_systems/0004_0032_gold_regime_filter","sha256":"3e688c2c5b8ed3538a9c18c9d827f60294883dc123cbcff33d5ecaa4007b1e3f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0005_0053_gold_volatility_position","category":"volatility_systems","dependencies":[],"entry_hash":"59594c7e6f7d489d4c461397837d96f02e4cb2cf5f27d0ed6a6d23e16cadb214","functional_test":{"relative_path":"volatility_systems/test_0005_0053_gold_volatility_position.py","sha256":"3ca30ffd8c267f189289ce7acaade1b73b0121452608f0a11bf4e7bff2464bb0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_0053_gold_volatility_position","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_position.py","sha256":"e8c1bacd7eba6e1c8e7a24dbe7dcc2daf801c84091618e1473f0b671a07294b7"},{"path":"config.yaml","sha256":"864aa71096a3f846d7db7edbf6684da02d860fb489e04ecc1eba5ac4628eaf68"},{"path":"run.py","sha256":"15159727159f52da29fd22409cd75cf9a1c6f17a5c80aa175b08fe8ac3556460"}],"relative_path":"volatility_systems/0005_0053_gold_volatility_position","sha256":"827ce48f3ee21cd1a9772d05e41a2fafa7d5526aa82efc5d64bbf4b0acc299b0"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0006_0073_high_volatility_reap_policy","category":"volatility_systems","dependencies":[],"entry_hash":"5645e778af9154366d8be334affaccd3995444686aac61bc9e6e68e249e59697","functional_test":{"relative_path":"volatility_systems/test_0006_0073_high_volatility_reap_policy.py","sha256":"86b7b7503531f3e5e90ec823f12bd4e05820736adc019c7d65b5d9c72d1edbc5"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_0073_high_volatility_reap_policy","source_available":false,"strategy_package":{"files":[{"path":"strategy_high_volatility_reap_policy.py","sha256":"095bd34191fd71eb4515ff28d3124788b23c97b4e5404e696d95a4b9a492c07a"},{"path":"config.yaml","sha256":"ae913aefdb5b606f7b70f2a452b2ff5b5f85d5fb6b7da27946ede9773657ee4e"},{"path":"run.py","sha256":"4b3a397bbb6ae5ea959a9a6cf66058ea989c7dee030c52a065b62635e17b7f54"}],"relative_path":"volatility_systems/0006_0073_high_volatility_reap_policy","sha256":"76a216e67a6c11644aca38630d2e1f1b1761b1397575c08c1d3584929a1548e5"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0007_0125_hmm_regime_detection","category":"volatility_systems","dependencies":[],"entry_hash":"3a68a0aa04b698b450161277c29a04bc536d2db3342b79850630d7e18bb1b54b","functional_test":{"relative_path":"volatility_systems/test_0007_0125_hmm_regime_detection.py","sha256":"d53c45d019d9773ee70edc3e436c5cf3d4535507012fb23ca7927a058a962245"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_0125_hmm_regime_detection","source_available":false,"strategy_package":{"files":[{"path":"strategy_hmm_regime_detection.py","sha256":"d7a1b182f50ebdcaf2553cbe39492c7511604a8621ead5491039f1809ef57525"},{"path":"config.yaml","sha256":"d61e9cf354c8a8322d005854c97b3c1201b6b3dcb7496ca5331e83b3ded6d043"},{"path":"run.py","sha256":"bccfb5ff63588d7cae71d7012ba3817eb9440add87de4ae833b4145f50f58889"}],"relative_path":"volatility_systems/0007_0125_hmm_regime_detection","sha256":"b9ca3d35a557f2656aff640daf26cf74125424d0f8e43571a8f8fe6c2be5dffc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0008_0144_volatility_correlation_model","category":"volatility_systems","dependencies":[],"entry_hash":"931880bd70e042439e5b734dd90c04697a533f9363c7e1ce23419a58a57519d9","functional_test":{"relative_path":"volatility_systems/test_0008_0144_volatility_correlation_model.py","sha256":"cb223503938cbbd12200f8060bd27f22d75bcf4b5a88d1305680954f18b0f6a6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0008_0144_volatility_correlation_model","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_correlation_model.py","sha256":"c0d7b2ae94c6873bb4e5a8f09c6c21b1f4e906f4a6480a28e7c9317bf5b8b393"},{"path":"config.yaml","sha256":"7eaafadc84e7f7ba30a26c9e1ec86f2fa71cb29b64c1380553fce3284a20dcb8"},{"path":"run.py","sha256":"72294b248908ddf1982399563c0b40de09f9fdc1f3ef602a89fa522e5fe0e373"}],"relative_path":"volatility_systems/0008_0144_volatility_correlation_model","sha256":"a66dfeee3a99ee704f052b3cefa8008a6fe40a6740b7c7c0d035ea981de1b6a3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0009_0192_regime_switching_modeling","category":"volatility_systems","dependencies":[],"entry_hash":"cf8dc1893c5ce2f8ba5115b1c27c1b219b1c3a548474b0fabb5d0771fcdaf643","functional_test":{"relative_path":"volatility_systems/test_0009_0192_regime_switching_modeling.py","sha256":"70439203e3c86757adeae3ae644a4fddd990ce3f87a3c530d0c1b9791db0a6a1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0009_0192_regime_switching_modeling","source_available":false,"strategy_package":{"files":[{"path":"strategy_regime_switching_modeling.py","sha256":"09aa9c937051016ced9123799308587216a6070b3ba35ec5d9eea4936f77a95e"},{"path":"config.yaml","sha256":"15a6531bc9d1441efac2c35b6cfd62c5ad44bb5d046f641e85b22892ad18d40c"},{"path":"run.py","sha256":"b480ce3610d2eaafc71c8c7044d01e481b685aab9f264a9e2986aba6875065f8"}],"relative_path":"volatility_systems/0009_0192_regime_switching_modeling","sha256":"2c3f95f1d3e644d62399abd34508083faf3a418b2098c71dcd5fa0d52f77ac18"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0010_0206_volatility_long_memory","category":"volatility_systems","dependencies":[],"entry_hash":"4467e5169bfadf815d3b2fb99200d7b88cd64cbea10cc5716361a457ff5b8a06","functional_test":{"relative_path":"volatility_systems/test_0010_0206_volatility_long_memory.py","sha256":"9d1a56c768b7f917a3500fea8de2cc998d69298343154dbebb2889a3e0702d00"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0010_0206_volatility_long_memory","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_long_memory.py","sha256":"9dd6faf792ae3573387e9c7134551ef5e158a35a8fed1542261193052acfc7d8"},{"path":"config.yaml","sha256":"198a5326f652e89736fe561b191b45a49662cebc8ec2693433dbbfea440267b9"},{"path":"run.py","sha256":"cf0127d4612362338de2b1384b85a4bece21e94362be233ee6e035f6c7f08460"}],"relative_path":"volatility_systems/0010_0206_volatility_long_memory","sha256":"5c992afd59b5e1a263f97fae81679340ba489d6390a38ffcb4b8d550f40ef12b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0011_0285_vix_spx_divergence","category":"volatility_systems","dependencies":[],"entry_hash":"eceeb9166c70304c4a58aa1f114a74a1bc1b6895bf825d8a83fb522cd7322cb2","functional_test":{"relative_path":"volatility_systems/test_0011_0285_vix_spx_divergence.py","sha256":"35b7103309a92951167de5e345833ef563c8663fff59a47e272c7b99a1bf288e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0011_0285_vix_spx_divergence","source_available":false,"strategy_package":{"files":[{"path":"strategy_vix_spx_divergence.py","sha256":"b9d99fe11c7b82be7f5a337f5e398b87c92556a8ed1a0959daf19f92b0190754"},{"path":"config.yaml","sha256":"6a3029dee6ed551fbd2a90b8ef7bc70da8d0923cb930d7ef9617a128953c2e17"},{"path":"run.py","sha256":"8fbb59f6f4a9cc9a14bcf07dce02b261a4a36def5edba2ab1929c3d8dd9fc579"}],"relative_path":"volatility_systems/0011_0285_vix_spx_divergence","sha256":"b421a7595aace3709f6c4836481db5d32fed8af2bfdf2666c876273f22e47a78"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0012_0302_adaptive_vix_ma","category":"volatility_systems","dependencies":[],"entry_hash":"39ddf6cc141d1abfa8548d15d8c1a7a35d529ef68a19a138116105475213ff46","functional_test":{"relative_path":"volatility_systems/test_0012_0302_adaptive_vix_ma.py","sha256":"5f1605c5018256a3e53c5b59a59881b2ea5a842b9693003c3043e9b9ef98a90c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0012_0302_adaptive_vix_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_adaptive_vix_ma.py","sha256":"ce282888197de6ae2d7d327b4107a9b67012c5caaf07f9d780d388dac6227c65"},{"path":"config.yaml","sha256":"38ff3b16fb82d025dd736f1a195ca8af00ac0d2cdd4f5b2dd5e090335bd38cf2"},{"path":"run.py","sha256":"441f8c8f9e99c95ab980cde70e27c115bc49e8afb35412e06505c38d780b5750"}],"relative_path":"volatility_systems/0012_0302_adaptive_vix_ma","sha256":"2ea2a832db05a372fe922321f946b942a4df8d455b91bdbd2cedc4d2c5d35e12"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0013_0320_vix_futures_basis","category":"volatility_systems","dependencies":[],"entry_hash":"d400b4e317f4df6e30a53597ed3c7e1963db35612e7e0eb4caa955c9bef50f4f","functional_test":{"relative_path":"volatility_systems/test_0013_0320_vix_futures_basis.py","sha256":"b1bd2491d04036e074f038a5060de6123383a3838ec011be85f625aa53a32c05"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0013_0320_vix_futures_basis","source_available":false,"strategy_package":{"files":[{"path":"strategy_vix_futures_basis.py","sha256":"f37449f4c52dc95db9ea8d1231219bfe1a7b1df232d3a97381c4d2a20faa3fa6"},{"path":"config.yaml","sha256":"f6f37bfa624945e31db40ef80d719aab51aaa8ca368441f439ebd41f048873dd"},{"path":"run.py","sha256":"277bd5630477e4f8c599a2d5710d00a722b5957a7f17b41b2fa2400ac6ed9738"}],"relative_path":"volatility_systems/0013_0320_vix_futures_basis","sha256":"f79e61c440884d40cc363ffa15e39b85f2f003c105b0ede4bae7a4e30d700896"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0014_0327_volatility_hedge_fund","category":"volatility_systems","dependencies":[],"entry_hash":"86f7fc998bbbe9d523df3131dafdd08e3d8bea0b7f9967be2c0cb49cfb7d5a3d","functional_test":{"relative_path":"volatility_systems/test_0014_0327_volatility_hedge_fund.py","sha256":"b080f07096ed0b7047ce57dbb80738e12c83c2a9b3a666519b3f881befc395bb"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0014_0327_volatility_hedge_fund","source_available":false,"strategy_package":{"files":[{"path":"strategy_volatility_hedge_fund.py","sha256":"92da70e954fb6607b4dc0b88d4b93661f4690ede57db02a52ebf0f6296d7afb3"},{"path":"config.yaml","sha256":"b1150790f8682ff8d40a7a52ace79e32e6a3b8a8c4e451568367c2e5588b1ca8"},{"path":"run.py","sha256":"8e53a2feba7b6925e7cf21385b41c8aa11a8903474b21101d446a8b421317339"}],"relative_path":"volatility_systems/0014_0327_volatility_hedge_fund","sha256":"746a173ecbf40fd7d49bd85d307619f002ea3f7c6f493062854b345c4607ef2c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0015_0374_correlation_regime_strategy","category":"volatility_systems","dependencies":[],"entry_hash":"3ebebecde6d709f9341b9628ab6667ad8a79ad982ef733e0492c4821cba17e01","functional_test":{"relative_path":"volatility_systems/test_0015_0374_correlation_regime_strategy.py","sha256":"cef52a9eeeab3adb1e0db92bfce1dec93a9b5e2906416dc719960149f71e7bb0"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0015_0374_correlation_regime_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_correlation_regime.py","sha256":"7a1bb826cee5bb29772681d53e9a80bf2cbbd50158a22e7584283f0ca3cfed54"},{"path":"config.yaml","sha256":"7d9b6a606667331d8ed898662c869cb5a7da87d919893c1d6d1a406466366e9f"},{"path":"run.py","sha256":"15b77d09ae110d2989b973474c3955781c8d8743da12dc5f0d175967cca367af"}],"relative_path":"volatility_systems/0015_0374_correlation_regime_strategy","sha256":"5646a266e90206e9e52cab178576f9540ca54bb7c12a3b3b19ba7b834339355b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0016_0411_hmm_random_forest_strategy","category":"volatility_systems","dependencies":[],"entry_hash":"abee634298b998cfac0dcbef35738457d1ec5d1b8b4afec4d0cfc1d68db8a619","functional_test":{"relative_path":"volatility_systems/test_0016_0411_hmm_random_forest_strategy.py","sha256":"9534ada5dfe9e26053563f8693ef6d9d8de2d458d29a4c7edd87f5990d08ac67"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0016_0411_hmm_random_forest_strategy","source_available":false,"strategy_package":{"files":[{"path":"strategy_hmm_random_forest.py","sha256":"682afbf8746110c0b4c5ed235131413838d1a55d6e53c817284df19c8df94613"},{"path":"config.yaml","sha256":"f7721a6d09c48108c3f26ea6826643ea345be0512baba4a0c2f7c94e4f96f1ec"},{"path":"run.py","sha256":"8b0b769aeaa51fc928d861f17d7c2c820239926e4136be64717b13978a7b9779"}],"relative_path":"volatility_systems/0016_0411_hmm_random_forest_strategy","sha256":"044c4faeac3ad50bdb53d39ec2ca8856b2c1bd98c528e89a54fd215e8bfd2032"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0017_colorschaffdemarkertrendcycle","category":"volatility_systems","dependencies":[],"entry_hash":"6b71dfa1d53cac08662e92726609177795dd00fc27c1336b1d9845201986bb2b","functional_test":{"relative_path":"volatility_systems/test_0017_colorschaffdemarkertrendcycle.py","sha256":"5531336cd4fd0a07103da5604fd98b3d7a0e9cb70ed9c3aa330e42b9b5d2ede6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0017_colorschaffdemarkertrendcycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_colorschaffdemarkertrendcycle.py","sha256":"36f0003041e9c7606e8afbc12294af9ada096f56709d4bfc4cade89f69b393f1"},{"path":"config.yaml","sha256":"9f9e7ffa133632f45302c39726f014fa4cb3b26522f9f18f0ace0c9ec86157b4"},{"path":"run.py","sha256":"9ff71ea528127d29225a3eaa3a053127c865471a8b05a2faab7eaa06fadc7792"}],"relative_path":"volatility_systems/0017_colorschaffdemarkertrendcycle","sha256":"419a37d751af63d260a81e18e0ba535787589a7c8f5f6a0beec6df9960c8ffda"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0018_cycle_period","category":"volatility_systems","dependencies":[],"entry_hash":"e210369750a29ff2b8d49a8a3d2e1ba5ddaf574690dace75e0213795b69a527b","functional_test":{"relative_path":"volatility_systems/test_0018_cycle_period.py","sha256":"ce378ff95756af47417d1a7ebf7e7d5947b536f54514dba999abe40cce2cf36b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0018_cycle_period","source_available":false,"strategy_package":{"files":[{"path":"strategy_cycle_period.py","sha256":"e0a19acfd304ed7773a15b3cb2e2834f0f1b34fc1f715acc0d16017061241e0f"},{"path":"config.yaml","sha256":"f94e893aa2767f62e34ab25deeb282435fecac227fd10f997c90626e8fe21f4d"},{"path":"run.py","sha256":"b5b9f1e389dc8e15327293bc92b9095b5723f2c2caabc849b9c38c253e629ba4"}],"relative_path":"volatility_systems/0018_cycle_period","sha256":"d01a1038ed34f7924ad3c0135ddeb750e806482e7397a583fe98cef804a48849"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0019_fisher_cyber_cycle","category":"volatility_systems","dependencies":[],"entry_hash":"d392f3b79edf44b9e0559661f7c92fd57f4578b315bb82f87070e462222b15fa","functional_test":{"relative_path":"volatility_systems/test_0019_fisher_cyber_cycle.py","sha256":"e4f60e806fc6d9c8e614484d88df1de0033a74a262411ccafd82d70b96945ca6"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0019_fisher_cyber_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_fisher_cyber_cycle.py","sha256":"e45f3bbdd66792eb74cec6859d51b8907ec880caaade6ee5dffd94c8730da253"},{"path":"config.yaml","sha256":"d8890f62e8eb92baf99ddbde639b017becc704a825d3392897744eab3880e683"},{"path":"run.py","sha256":"208564b9b6c1bd6f755a145c0f5e0fe4e3d4dfbe7f9a6d153a06d34ed307cb30"}],"relative_path":"volatility_systems/0019_fisher_cyber_cycle","sha256":"a41a925f53c243fd74e41c17a733d6d0a8359ec3fb9561a090122b6da7bc85cc"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0020_adaptive_cyber_cycle","category":"volatility_systems","dependencies":[],"entry_hash":"6a34fc280b81dc51e8281c23c0496153440fe07d1d8476788c0081f808b61192","functional_test":{"relative_path":"volatility_systems/test_0020_adaptive_cyber_cycle.py","sha256":"de69feec3d523ed96b5f12e80141d96662e3a042fd3debbab5b4e2341e10b1a4"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0020_adaptive_cyber_cycle","source_available":false,"strategy_package":{"files":[{"path":"strategy_adaptive_cyber_cycle.py","sha256":"b2e2acf2941c474073edbd02aa3bbd4e8309f9d6448d1d6ca64986b6be040f49"},{"path":"config.yaml","sha256":"97d5fa720a4e412eeee302f54758d2ccbed177479d86ce2698956fa8310eec7e"},{"path":"run.py","sha256":"01113eceb526523264d89b0ea155c43f2b947c4d35d6bcaf4ea5fd93cadd2100"}],"relative_path":"volatility_systems/0020_adaptive_cyber_cycle","sha256":"52fb7ca8f269da88fb4c869978f71a1ffd64e97796fb2f7a1e1439932d609633"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0021_bollinger_band_breakout","category":"volatility_systems","dependencies":[],"entry_hash":"e56731b1d08827ff64afd37fd140db075a3f0bec4ccde3d6f911e4a74dea7be8","functional_test":{"relative_path":"volatility_systems/test_0021_bollinger_band_breakout.py","sha256":"b0e21442e7cb80f2f4989180fdb2fc7b793aebca9d6779a2044c32a90f43df0c"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0021_bollinger_band_breakout","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_breakout.py","sha256":"dd711ce86f16ecd25d864f4c34f97f9ec9d93616c96fb830d231d8e72b4f5438"},{"path":"config.yaml","sha256":"a35d148fa3a91efa80fb88ab830ec939498082a202df6e930da4f9b84f9f86ee"},{"path":"run.py","sha256":"d1a430f790b3bd2ae9f6a320256ef2a4f430c43acf2bd405c74b5eb61b6b3a44"}],"relative_path":"volatility_systems/0021_bollinger_band_breakout","sha256":"ff0d3d6644bf613923539c2ec8896e0e2030faba3dbcfaf16012ebb096a98dc3"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0022_bollinger_bands_setup","category":"volatility_systems","dependencies":[],"entry_hash":"516f7c0a6d273fab73c16fa913a3f877c387c3e4107563ffacfed123cb8e4fde","functional_test":{"relative_path":"volatility_systems/test_0022_bollinger_bands_setup.py","sha256":"76ac85382bef2c23f08bf43f1dc7cf5185a0888fc49f86d18d10efac39fdbdc9"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0022_bollinger_bands_setup","source_available":false,"strategy_package":{"files":[{"path":"strategy_bollinger_bands_setup.py","sha256":"0063d99f9e9169d7ac941c4518296cee74ec1ae824fc17ba8f611b4d58526a10"},{"path":"config.yaml","sha256":"d11fc0b465d497a8b461bf6c2e91819da6dda43214c275fc415e4f1c6726fdad"},{"path":"run.py","sha256":"f1ebadb44e134cbbb120f4d48173284b9ce9960ac9f570ff5d09bfd7a51eb0a4"}],"relative_path":"volatility_systems/0022_bollinger_bands_setup","sha256":"2a27cba8206aa9c802e1d27878a01e4554ad33257ddd3809daa5575f50b52ace"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0023_0105_band_r_squared","category":"volatility_systems","dependencies":[],"entry_hash":"46cb116dc565992b9fa0e55cd1859b4db9281fe5b5624d76a7c8a14247fcea40","functional_test":{"relative_path":"volatility_systems/test_0023_0105_band_r_squared.py","sha256":"c1c85d47f0d56af5ca44759fe5483049b3810267df64426940f0f564e45bb678"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0023_0105_band_r_squared","source_available":false,"strategy_package":{"files":[{"path":"strategy_band_r_squared.py","sha256":"654c6627a2a50fb8972fff7e0bf33183a8036133da3afd09078e5ec3861c11d4"},{"path":"config.yaml","sha256":"c84638075d49734754a87d800fd400e090264435cc20e62c908cc850d45fd308"},{"path":"run.py","sha256":"a7089c9321f088b6d750eaa83d895518b7d4f4b783f287e8d1318f657a197cd7"}],"relative_path":"volatility_systems/0023_0105_band_r_squared","sha256":"754ac95d7ede40a9fa71f2c6ba99f2adbc1235afd514c2a17c003400f688f377"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0024_0196_high_frequency_volatility_trader","category":"volatility_systems","dependencies":[],"entry_hash":"f3bc11d04440bca38566059b375d5df34fb17c00c3cab1584a88fef657bfb385","functional_test":{"relative_path":"volatility_systems/test_0024_0196_high_frequency_volatility_trader.py","sha256":"7e8326f0abc6cf9a0b95220c07f8a0f02f0aa716f42fda188e775b90de6f2899"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0024_0196_high_frequency_volatility_trader","source_available":false,"strategy_package":{"files":[{"path":"strategy_high_frequency_volatility_trader.py","sha256":"0200186db822390e3d2a9590f2fe249cca80dc28d5ea63d8fce4ba9790db4ca9"},{"path":"config.yaml","sha256":"2e44afad5e70c21625cd666068eb6413bc8d8a7f00e9bd2327e7af71235e6f1c"},{"path":"run.py","sha256":"d73b9a47f73376f0d52f3a14c5d536b32f0e2fccca73053941105210df491a70"}],"relative_path":"volatility_systems/0024_0196_high_frequency_volatility_trader","sha256":"1b1c0642ba71f7498c14a1920c514fb6af3986eeef18b620e80193e33db62c3e"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0025_0490_breakthrough_bb","category":"volatility_systems","dependencies":[],"entry_hash":"f7712a4597a939fbb3a57b35baa661502a32cf1f7f35d08687be94ccae0e31b8","functional_test":{"relative_path":"volatility_systems/test_0025_0490_breakthrough_bb.py","sha256":"275b57c5718b14324ae35670d60daf390b6cc01d08a235fe1ecb892df1f2edad"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0025_0490_breakthrough_bb","source_available":false,"strategy_package":{"files":[{"path":"strategy_breakthrough_bb.py","sha256":"482335a051ae33eed7bc98e6a6c9c5db029b3c8da9e5ec33078838a05cc1750e"},{"path":"config.yaml","sha256":"b55ca2aab8262d9d8af1fd9a516a27bfbe390d62a69342ea31abbf492019e82d"},{"path":"run.py","sha256":"7b90d7fbb0d47a50c101f799384894dde442e11e9629116ab608ed40a4b02566"}],"relative_path":"volatility_systems/0025_0490_breakthrough_bb","sha256":"a20f251362522f7aad22371c48ac4ac0837b5ba864e080b8457242c645f78b2f"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0026_0706_bolltrade","category":"volatility_systems","dependencies":[],"entry_hash":"a4f45eb2fa5c394149dc8e932eb0235fd5f015d7b2d20a6d1a24c383b144f9a4","functional_test":{"relative_path":"volatility_systems/test_0026_0706_bolltrade.py","sha256":"0c370de615b194d4e64fb49a11d1149890b1326e6ab266846fe8a73b17cb0f18"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0026_0706_bolltrade","source_available":false,"strategy_package":{"files":[{"path":"strategy_bolltrade.py","sha256":"188437a7e9e8250ac39aa711d6fe695dc258d7e53d8c0dc0d52facf11d6a322a"},{"path":"config.yaml","sha256":"deeeaec2a958c3b26995e74cb2df50023f4d0bbfe6d3a8655644cbc0fd76c634"},{"path":"run.py","sha256":"a92b5b6b01dfa09f533e727c979d6327c9d4c2a34dbdca7c2093b9abdcf89ff1"}],"relative_path":"volatility_systems/0026_0706_bolltrade","sha256":"f2bab5a4ac653e9ecd30f4b67321456da30594d3d2ff26a6383ee435903e2453"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0027_0838_wlxbw5zone","category":"volatility_systems","dependencies":[],"entry_hash":"e8d8709cc5d182cd4bbc92ca9ce313859a1ad2cc6f653a45e374382a46cab574","functional_test":null,"mapping_status":"package_only","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0027_0838_wlxbw5zone","source_available":false,"strategy_package":{"files":[{"path":"strategy_wlxbw5zone.py","sha256":"e5d2f9952d59d7f7de9406dd7b0f71ede2f41e7f71622cad055bffe83230ec2a"},{"path":"config.yaml","sha256":"ec564a57632b31990b4db3c34e4ef6aa24ae7fdbb40293030ccf490a6011ce22"},{"path":"run.py","sha256":"ec89866881cf3065d04b03b1e2239582440af042f998d3e2400d64eefbd7f4ce"}],"relative_path":"volatility_systems/0027_0838_wlxbw5zone","sha256":"4072a54547de27f484987ba229eaa4e8dbe38a152512a65e9478421a58da5032"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0028_0899_bezier_stdev","category":"volatility_systems","dependencies":[],"entry_hash":"244ed1c5bcbc1c40e1da1db4939aff0b479439ea03a995f1bde0c808cbb5b2f6","functional_test":{"relative_path":"volatility_systems/test_0028_0899_bezier_stdev.py","sha256":"15865fb7816131f66cb8d62d81e5f8c875585068cd1e83e6fa68ac658b05fc29"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0028_0899_bezier_stdev","source_available":false,"strategy_package":{"files":[{"path":"strategy_bezier_stdev.py","sha256":"7299d4acdbf6b362bd1264c1640ea70d45de43806a04150de2e8d6e9199a7827"},{"path":"config.yaml","sha256":"3abf119e9718321f23c61db2ae7d9474325c8d8f0e4016cb1869f9ca6ea51537"},{"path":"run.py","sha256":"e292af4fa6797df72c025281c543e0b99740658130371d4c3a4e43174cd328a8"}],"relative_path":"volatility_systems/0028_0899_bezier_stdev","sha256":"035d5bfc6eb874addd04fe8a904f0b9770c46151692fa04b2cab1472d3480ed6"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0029_0916_karacatica","category":"volatility_systems","dependencies":[],"entry_hash":"223fca37f93e96cf558b8f54ecb4f6b729bd8174f1269a3d7ef1a327d297d790","functional_test":{"relative_path":"volatility_systems/test_0029_0916_karacatica.py","sha256":"895bf7fb8375f73d6aad127e5dc251de206beeba5b5a3417b1b93f85713e52f1"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0029_0916_karacatica","source_available":false,"strategy_package":{"files":[{"path":"strategy_karacatica.py","sha256":"c17c4e7868e0611a19b547ad6816e8b76b1fd05d7ed6195b342b71539d1b662a"},{"path":"config.yaml","sha256":"b09bf24d95de64d03e4461643dc78ee8a3c3a06d2bb64c9a728204c38ad7687c"},{"path":"run.py","sha256":"743237379e7bff7f8bb52a29762e5bbd7a7dc582d1fed973a231b43387ab4d09"}],"relative_path":"volatility_systems/0029_0916_karacatica","sha256":"4e067a763f152184de900559763da3e15b1443fc26c7e4dc71580a3d4b8ff035"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0030_1100_the_20s_v020","category":"volatility_systems","dependencies":[],"entry_hash":"3ccb8c0001e2919c1ff8e10a5a423bc3231d984e4daa15ab87f6d89ac306d05c","functional_test":{"relative_path":"volatility_systems/test_0030_1100_the_20s_v020.py","sha256":"658052c993e88b3cf80f5a19e7cb39ddd7ae4bdd8288f0a11f5c1d58a1f1a5ea"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0030_1100_the_20s_v020","source_available":false,"strategy_package":{"files":[{"path":"strategy_the_20s_v020.py","sha256":"8302a676531e8bcacd6fe61197c282c44cbf5082cd3a2b79b1ec985a92aebdd0"},{"path":"config.yaml","sha256":"821fa6d881906c1bb5af51f8320c34e21d6ce920ce425144e02bdabff7354144"},{"path":"run.py","sha256":"b9e6fb3d09f51c2cc731aa03a27be5f137eb45021a661531b105231174c162c3"}],"relative_path":"volatility_systems/0030_1100_the_20s_v020","sha256":"851e365d99039db8d7d53eae642e542eb886d8e41bdbeeec784d552a82e7d1cb"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0031_1115_rock_trader_neuro","category":"volatility_systems","dependencies":[],"entry_hash":"c1f3275898f3f63f70b0dd933bc6c9197badbc50076c859b7da31e760ab0036c","functional_test":{"relative_path":"volatility_systems/test_0031_1115_rock_trader_neuro.py","sha256":"0d23424221e7a6a6f7207ef2728bf5eb290fdf778ab842b7ff2c13208a2997ae"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0031_1115_rock_trader_neuro","source_available":false,"strategy_package":{"files":[{"path":"strategy_rock_trader_neuro.py","sha256":"77103a58d040ceffff6ea79053078a2a698d6e88dc422f74b76ec31649d26d1c"},{"path":"config.yaml","sha256":"b17e6e2a32e94bfa58fee629c4f53e5d182f5dc72ec77452a3eb4ce9dd442325"},{"path":"run.py","sha256":"13d756f15bd2df3f50a14755bb23c51395b2145b82d3f475f90bea0fbbad345a"}],"relative_path":"volatility_systems/0031_1115_rock_trader_neuro","sha256":"3827546e210d09ed87d6c37e14e414f683815ed5a98a03fcdc212c51e00b07d1"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0032_1269_ef_distance","category":"volatility_systems","dependencies":[],"entry_hash":"b15c46c3b3ad97f408a2f4ff81bc8b5ad668a879e5e78fa0c05438683eae3ba6","functional_test":{"relative_path":"volatility_systems/test_0032_1269_ef_distance.py","sha256":"8d33afbad8c1ff87cddfdc228c97cd6270ac55e019595a432ae8dcc12a7e0111"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0032_1269_ef_distance","source_available":false,"strategy_package":{"files":[{"path":"strategy_ef_distance.py","sha256":"61de38ab02c4c65219fda36a6664cbd461df2240f5e4e5d2cec285f986306d78"},{"path":"config.yaml","sha256":"0bb656f2e2c75a756aada12d8263ef3f91230c4a9f94f7448f24a6a170bb0a0b"},{"path":"run.py","sha256":"7c5be0885cd45f4eea7a42c2683e62993ebfbd8d716a54f7d78a500ab6ea1658"}],"relative_path":"volatility_systems/0032_1269_ef_distance","sha256":"985d9c8a8f76d024094af370129551dcc22c98b681ab2484044aa27c98aeceaa"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volatility_systems/0033_1295_color_bb_candles","category":"volatility_systems","dependencies":[],"entry_hash":"c54239a1c39db2b128de7db3cab9c897018c175d98230d6f8fe3b69e0fc4e77e","functional_test":{"relative_path":"volatility_systems/test_0033_1295_color_bb_candles.py","sha256":"9bf4332ffeb44a899d30ac6715f82dd4d5874a6f3b90c087966eff480e0cfa5b"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0033_1295_color_bb_candles","source_available":false,"strategy_package":{"files":[{"path":"strategy_color_bb_candles.py","sha256":"d92fa7fea80555e88609a5e3e1c3feddc1a2b6ff58b066e3d74a063df5a4d9c2"},{"path":"config.yaml","sha256":"448f5aedc20ab86583f68de9b99a84ad2946010e61d769c2c683ead5bcd40a24"},{"path":"run.py","sha256":"cf27b873e380a2318202ad7da9bbdc091dc93c6b4bf1d0b755cfdba9d95d0346"}],"relative_path":"volatility_systems/0033_1295_color_bb_candles","sha256":"3d28d84948783863a47b2f210cb01684d5629c56bb06095df48908b6ad662ea9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0001_volume_weighted_macandle","category":"volume_system","dependencies":[],"entry_hash":"3b4beea7a6557e934eeac26409f1f47c631081cb8a19406d967899c990ae4532","functional_test":{"relative_path":"volume_system/test_0001_volume_weighted_macandle.py","sha256":"8a1dfd082c805544e94d8513b63fe64ada122fa7b4207399fa75ccf6952bd719"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0001_volume_weighted_macandle","source_available":false,"strategy_package":{"files":[{"path":"strategy_volume_weighted_macandle.py","sha256":"2099231ea4cd94585df3090513830db5f589721e9991f02d767df3ae9315187d"},{"path":"config.yaml","sha256":"c6368eb226e9bec354e01ebafd0dbd6d7baec272e65371f8a694b39e69650e8d"},{"path":"run.py","sha256":"29f837698bf16be5809d2860c45018c4e71266221801761388e56ac5f58b10c2"}],"relative_path":"volume_system/0001_volume_weighted_macandle","sha256":"7bc5285e6f42a85533b1ee089aae4aa8a50456195723b5d1db4906c1209d9f67"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0002_volume_weighted_ma_digit_system","category":"volume_system","dependencies":[],"entry_hash":"e5bdd8b6f88663721e07f64903d3dde5911eb24b9ad97444b70d20172d7f3d2b","functional_test":{"relative_path":"volume_system/test_0002_volume_weighted_ma_digit_system.py","sha256":"12c81d3e58720d5c800ddc17795f777f89acc8c0aac134df86f364cb5bd9fe3a"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0002_volume_weighted_ma_digit_system","source_available":false,"strategy_package":{"files":[{"path":"strategy_volume_weighted_ma_digit_system.py","sha256":"b84adee275543d4e82c4e32a4ce67665944ef7103bab949aab7a66905e7b8572"},{"path":"config.yaml","sha256":"603858ab3c982792f3ed7bdc61b50fc09cb0e1d11704f4600a6cdbc96d65e8b7"},{"path":"run.py","sha256":"e480c1b197adafce0726a8bfdf5aeb2e872e080e45603c68d4a257fce80cc1e9"}],"relative_path":"volume_system/0002_volume_weighted_ma_digit_system","sha256":"27e1975cd342be20215d4303f5793c3a5337b849082b0804e6ef749972b0ddc9"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0003_volume_weighted_ma_stdev","category":"volume_system","dependencies":[],"entry_hash":"7cd135c14ca4cc3f8dd7f4a50305ecfb3bdb2af2fef1ff6b62de70f31ad92fc6","functional_test":{"relative_path":"volume_system/test_0003_volume_weighted_ma_stdev.py","sha256":"a4191c12c28ad3333bb685345f23fc702781dbd590e0f856ed66aee59c1e479f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0003_volume_weighted_ma_stdev","source_available":false,"strategy_package":{"files":[{"path":"strategy_volume_weighted_ma_stdev.py","sha256":"9eb7235752a182ff6ca2173ddb1e8f79ec9735aa05368fc7a387117759b1798d"},{"path":"config.yaml","sha256":"68a6bd4a80bd4b1df57b613724996e820d8629a73ae7c62ddd6dad0c337039b1"},{"path":"run.py","sha256":"820b1be3a6df35631601f5b594ef4358077dc86973cb490afdb0167e1ea9f73f"}],"relative_path":"volume_system/0003_volume_weighted_ma_stdev","sha256":"7101c2a6510666008759a49d4431235153db854062613181b0a997a56fed8015"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0004_volume_weighted_ma","category":"volume_system","dependencies":[],"entry_hash":"684c5e154642b49e9c17d192207d27be90f4a919db8e412809bcfa029ab855d7","functional_test":{"relative_path":"volume_system/test_0004_volume_weighted_ma.py","sha256":"f1f100dbdd605bb187a7bebd6d566983a206f58b9468a52af11521f7a8d03b2f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0004_volume_weighted_ma","source_available":false,"strategy_package":{"files":[{"path":"strategy_volume_weighted_ma.py","sha256":"07ecef5a1083805805f07d39e4d25d9f82e37d76d7b1cd6956b233ec4fa7bce8"},{"path":"config.yaml","sha256":"3d7cc1675a953dd2c6163f86aa62d29bf8a0f7db226c1b6bf9cee549653cdd8b"},{"path":"run.py","sha256":"30dc9b2bf4ab77cd556b625a03066318aef5d34bbd093a125c2cd34494e66242"}],"relative_path":"volume_system/0004_volume_weighted_ma","sha256":"3c368473aebea092ee8309c0a6a52bc3e4d310824c5a30749ce8f4675d228d2c"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0005_ergodic_ticks_volume_osma","category":"volume_system","dependencies":[],"entry_hash":"73039b31ab5b73853b6e190b4df852e8804c75d8709f976318c140c1441163e3","functional_test":{"relative_path":"volume_system/test_0005_ergodic_ticks_volume_osma.py","sha256":"1ab03aa22a2e8d25b3dc612db333acd136a8382f284272edb860acd0d421b64f"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0005_ergodic_ticks_volume_osma","source_available":false,"strategy_package":{"files":[{"path":"strategy_ergodic_ticks_volume_osma.py","sha256":"14c1cf9e47322c178386a903abac57ae933a5817fc5d04b2be8d2632d6b88582"},{"path":"config.yaml","sha256":"957f39d4f58bfe442f887c76bb1a1ee5838a116c1c557c03f826bfa01d586b2d"},{"path":"run.py","sha256":"151a46472463845553a0e1d7f7f1768b87f96f435c5a883a1882474db31497f6"}],"relative_path":"volume_system/0005_ergodic_ticks_volume_osma","sha256":"2b074734761d0eb1b727964b0cc22f27d38faf84d60b1dbad8f458707970834b"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0006_ergodic_ticks_volume_indicator","category":"volume_system","dependencies":[],"entry_hash":"be0f56141fa673353a5b7c3a2d87765e10f348790f9cfd0818c0d7133c395dbb","functional_test":{"relative_path":"volume_system/test_0006_ergodic_ticks_volume_indicator.py","sha256":"6ee5276936556251fc9030864edbfac90da7401c8be93b10e0bb7d2c552dd70e"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0006_ergodic_ticks_volume_indicator","source_available":false,"strategy_package":{"files":[{"path":"strategy_ergodic_ticks_volume_indicator.py","sha256":"ee4025826402703c03756f5087370b8315ee349cbe3b90f7827881169051585b"},{"path":"config.yaml","sha256":"4e9376520a78fdbc8a4b68f38a6debc6321911281b6e7771f767c1e86249b74b"},{"path":"run.py","sha256":"330173a0c12ff949b18b573a6c92a7ab4e0e2826beddfc2b0811c52711bb8168"}],"relative_path":"volume_system/0006_ergodic_ticks_volume_indicator","sha256":"ab046a99c6ea17526f3869b3b61ce11ac20fca926c20c9c818629e1fd71c1fc4"}} +{"archetypes":["single_data_indicator"],"canonical_id":"volume_system/0007_xpvt","category":"volume_system","dependencies":[],"entry_hash":"5efe6e80001abf1d78af3e2bc3e20838d72ef3ccdb31472894be198aa93945d7","functional_test":{"relative_path":"volume_system/test_0007_xpvt.py","sha256":"be97169ab5a9a2afa020e5d3f6b53bed53b0384cac2e6c3054faefb04398aabf"},"mapping_status":"mapped","profiles":["single_test","python_bundle"],"risk_tags":[],"schema_version":"corpus-entry-v1","slug":"0007_xpvt","source_available":false,"strategy_package":{"files":[{"path":"strategy_xpvt.py","sha256":"4133c5c208593f2d02dcf47ca27fcd674b3839a28673cd007d262d42e0d8ee1e"},{"path":"config.yaml","sha256":"02889550abca0c0c7c640b03808b56c8ae92f293383b82505487b88170cde0b2"},{"path":"run.py","sha256":"71d68e0f303c6878f543593b8858b478de5fa99489f5b9a27c70f4b9e58106e4"}],"relative_path":"volume_system/0007_xpvt","sha256":"2dec4ed92f1606c9b1b46796638a1f0814eb66828c7ef6bde09f148d541a5154"}} diff --git a/src/backtrader_agent/resources/catalog/snapshot-metadata.json b/src/backtrader_agent/resources/catalog/snapshot-metadata.json new file mode 100644 index 0000000..62463bf --- /dev/null +++ b/src/backtrader_agent/resources/catalog/snapshot-metadata.json @@ -0,0 +1,25 @@ +{ + "schema_version": "snapshot-metadata-v1", + "catalog_version": "2026-07-30-full-metadata-v1", + "counts": { + "functional_tests": 1152, + "strategy_packages": 1035, + "mapped": 1032 + }, + "entry_count": 1155, + "template_count": 14, + "corpus_id": "backtrader-agent-snapshot-v1", + "mode": "snapshot", + "contains_full_third_party_source": false, + "source_available": false, + "source_attached_required": false, + "assets": { + "metadata": "corpus-v1.jsonl", + "templates": "snapshot.jsonl" + }, + "notes": [ + "The metadata asset contains 1,155 unique records covering the verified 1,152 functional tests, 1,035 strategy packages, and 1,032 mappings.", + "The template asset contains the fourteen product-owned current-fork archetype/profile scaffolds.", + "Snapshot records contain hashes and relative provenance only; source_available is false until an explicit source-attached rebuild." + ] +} diff --git a/src/backtrader_agent/resources/catalog/snapshot.jsonl b/src/backtrader_agent/resources/catalog/snapshot.jsonl new file mode 100644 index 0000000..db45150 --- /dev/null +++ b/src/backtrader_agent/resources/catalog/snapshot.jsonl @@ -0,0 +1,14 @@ +{"archetype":"single_data_indicator","entry_id":"template-single-indicator-single-test","profile":"single_test","source_available":false,"source_hash":"1111111111111111111111111111111111111111111111111111111111111111","source_path_id":"package-template:single_data_indicator/single_test","summary":"SMA signal with a direct Strategy subclass and deterministic functional assertions.","tags":["single","indicator","sma","runonce","runnext"],"title":"Single indicator functional test"} +{"archetype":"single_data_indicator","entry_id":"template-single-indicator-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"1212121212121212121212121212121212121212121212121212121212121212","source_path_id":"package-template:single_data_indicator/python_bundle","summary":"SMA strategy in a config, strategy module, and controlled runner bundle.","tags":["single","indicator","sma","bundle"],"title":"Single indicator Python bundle"} +{"archetype":"multi_indicator_system","entry_id":"template-multi-indicator-single-test","profile":"single_test","source_available":false,"source_hash":"2222222222222222222222222222222222222222222222222222222222222222","source_path_id":"package-template:multi_indicator_system/single_test","summary":"Combined SMA, EMA, and RSI signals with warm-up coverage.","tags":["multi","indicator","warmup","minperiod"],"title":"Multi indicator functional test"} +{"archetype":"multi_indicator_system","entry_id":"template-multi-indicator-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"2323232323232323232323232323232323232323232323232323232323232323","source_path_id":"package-template:multi_indicator_system/python_bundle","summary":"Typed multi-indicator strategy bundle with deterministic parameters.","tags":["multi","indicator","typed","bundle"],"title":"Multi indicator Python bundle"} +{"archetype":"multi_asset_allocation","entry_id":"template-multi-asset-single-test","profile":"single_test","source_available":false,"source_hash":"3333333333333333333333333333333333333333333333333333333333333333","source_path_id":"package-template:multi_asset_allocation/single_test","summary":"Two-feed allocation scaffold with explicit feed roles and no silent fill.","tags":["multi","asset","alignment","feed","roles"],"title":"Multi asset functional test"} +{"archetype":"multi_asset_allocation","entry_id":"template-multi-asset-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"3434343434343434343434343434343434343434343434343434343434343434","source_path_id":"package-template:multi_asset_allocation/python_bundle","summary":"Multi-asset allocation bundle for intersection-aligned feeds.","tags":["multi","asset","rebalance","bundle"],"title":"Multi asset Python bundle"} +{"archetype":"multi_timeframe","entry_id":"template-multi-timeframe-single-test","profile":"single_test","source_available":false,"source_hash":"4444444444444444444444444444444444444444444444444444444444444444","source_path_id":"package-template:multi_timeframe/single_test","summary":"Secondary-clock multi-timeframe signal scaffold with completed bars.","tags":["multi","timeframe","clock","secondary","runonce","runnext"],"title":"Multi timeframe functional test"} +{"archetype":"multi_timeframe","entry_id":"template-multi-timeframe-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"4545454545454545454545454545454545454545454545454545454545454545","source_path_id":"package-template:multi_timeframe/python_bundle","summary":"Multi-timeframe runner bundle with explicit feed ordering.","tags":["multi","timeframe","clock","bundle"],"title":"Multi timeframe Python bundle"} +{"archetype":"pairs_spread","entry_id":"template-pairs-spread-single-test","profile":"single_test","source_available":false,"source_hash":"5555555555555555555555555555555555555555555555555555555555555555","source_path_id":"package-template:pairs_spread/single_test","summary":"Two-leg spread and z-score test scaffold with hedge role provenance.","tags":["pairs","spread","hedge","alignment"],"title":"Pairs spread functional test"} +{"archetype":"pairs_spread","entry_id":"template-pairs-spread-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"5656565656565656565656565656565656565656565656565656565656565656","source_path_id":"package-template:pairs_spread/python_bundle","summary":"Pairs strategy three-file bundle using aligned local feeds.","tags":["pairs","spread","hedge","bundle"],"title":"Pairs spread Python bundle"} +{"archetype":"order_risk","entry_id":"template-order-risk-single-test","profile":"single_test","source_available":false,"source_hash":"6666666666666666666666666666666666666666666666666666666666666666","source_path_id":"package-template:order_risk/single_test","summary":"Order lifecycle and ATR risk scaffold with explicit failure state.","tags":["order","risk","atr","session","gap"],"title":"Order and risk functional test"} +{"archetype":"order_risk","entry_id":"template-order-risk-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"6767676767676767676767676767676767676767676767676767676767676767","source_path_id":"package-template:order_risk/python_bundle","summary":"Controlled order and risk bundle with trade metrics.","tags":["order","risk","atr","bundle"],"title":"Order and risk Python bundle"} +{"archetype":"precomputed_ml","entry_id":"template-precomputed-ml-single-test","profile":"single_test","source_available":false,"source_hash":"7777777777777777777777777777777777777777777777777777777777777777","source_path_id":"package-template:precomputed_ml/single_test","summary":"Precomputed signal custom-line scaffold with leakage review hooks.","tags":["precomputed","ml","signal","custom","leakage"],"title":"Precomputed signal functional test"} +{"archetype":"precomputed_ml","entry_id":"template-precomputed-ml-python-bundle","profile":"python_bundle","source_available":false,"source_hash":"7878787878787878787878787878787878787878787878787878787878787878","source_path_id":"package-template:precomputed_ml/python_bundle","summary":"Custom signal line bundle bound to materialized dataset hashes.","tags":["precomputed","ml","signal","custom","bundle"],"title":"Precomputed signal Python bundle"} diff --git a/src/backtrader_agent/resources/contracts/agent-session-manifest-v1.schema.json b/src/backtrader_agent/resources/contracts/agent-session-manifest-v1.schema.json new file mode 100644 index 0000000..b22f311 --- /dev/null +++ b/src/backtrader_agent/resources/contracts/agent-session-manifest-v1.schema.json @@ -0,0 +1,78 @@ +{ + "$defs": { + "AgentEvent": { + "additionalProperties": false, + "properties": { + "action_type": {"type": "string"}, + "approval_token_id": {"type": ["string", "null"]}, + "effect_references": {"additionalProperties": {"type": "string"}, "type": "object"}, + "event_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, + "event_type": {"const": "STATE_TRANSITION"}, + "from_state": {"type": "string"}, + "idempotency_key": {"type": ["string", "null"]}, + "normalized_input_hashes": {"additionalProperties": {"type": "string"}, "type": "object"}, + "previous_event_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, + "schema_version": {"const": "agent-event-v1"}, + "sequence": {"minimum": 1, "type": "integer"}, + "session_id": {"type": "string"}, + "status": {"enum": ["prepared", "committed", "failed"]}, + "timestamp": {"format": "date-time", "type": "string"}, + "to_state": {"type": "string"} + }, + "required": [ + "schema_version", + "session_id", + "sequence", + "event_type", + "action_type", + "from_state", + "to_state", + "normalized_input_hashes", + "effect_references", + "previous_event_hash", + "event_hash", + "status", + "timestamp" + ], + "type": "object" + } + }, + "$id": "https://cloudquant.example/backtrader-agent/contracts/agent-session-manifest-v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "allowed_next_actions": {"items": {"type": "string"}, "type": "array"}, + "approvals": {"type": "object"}, + "artifacts": {"type": "object"}, + "checkpoint_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, + "diagnostics": {"items": {"type": "object"}, "type": "array"}, + "journal": {"const": "journal.jsonl"}, + "last_event_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, + "last_sequence": {"minimum": 0, "type": "integer"}, + "parent_session_id": {"type": ["string", "null"]}, + "product": {"const": "backtrader-agent"}, + "product_version": {"type": "string"}, + "schema_version": {"const": "agent-session-manifest-v1"}, + "session_id": {"type": "string"}, + "state": {"type": "string"}, + "state_revision": {"minimum": 0, "type": "integer"} + }, + "required": [ + "schema_version", + "session_id", + "product", + "product_version", + "state", + "state_revision", + "last_sequence", + "last_event_hash", + "journal", + "allowed_next_actions", + "artifacts", + "approvals", + "diagnostics", + "checkpoint_hash" + ], + "title": "AgentSessionManifest v1", + "type": "object" +} diff --git a/src/backtrader_agent/resources/contracts/artifact-manifest-v1.schema.json b/src/backtrader_agent/resources/contracts/artifact-manifest-v1.schema.json new file mode 100644 index 0000000..7da4b68 --- /dev/null +++ b/src/backtrader_agent/resources/contracts/artifact-manifest-v1.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/artifact-manifest.schema.json", + "title": "Backtrader ArtifactManifest v1", + "type": "object", + "required": [ + "schema_version", + "artifact_id", + "spec_hash", + "dataset_id", + "output_profile", + "files", + "artifact_hash" + ], + "properties": { + "schema_version": {"const": "artifact-manifest-v1"}, + "artifact_id": {"type": "string", "minLength": 1}, + "spec_hash": {"$ref": "#/$defs/Hash"}, + "dataset_id": {"type": "string", "pattern": "^ds_[0-9a-f]{64}$"}, + "output_profile": {"enum": ["single_test", "python_bundle"]}, + "files": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/File"}}, + "artifact_hash": {"$ref": "#/$defs/Hash"}, + "strategy_source_hash": {"$ref": "#/$defs/Hash"}, + "draft_id": {"type": "string"}, + "created_at": {"type": "string"}, + "approval_state": {"type": "string"}, + "overwrite_policy": {"type": "string"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "File": { + "type": "object", + "required": ["path", "role", "bytes", "sha256"], + "properties": { + "path": {"type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"}, + "role": {"type": "string", "minLength": 1}, + "bytes": {"type": "integer", "minimum": 0}, + "sha256": {"$ref": "#/$defs/Hash"} + }, + "additionalProperties": true + } + }, + "x-hash-contract": { + "field": "artifact_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["artifact_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/corpus-manifest-v1.schema.json b/src/backtrader_agent/resources/contracts/corpus-manifest-v1.schema.json new file mode 100644 index 0000000..68c300f --- /dev/null +++ b/src/backtrader_agent/resources/contracts/corpus-manifest-v1.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/corpus-manifest.schema.json", + "title": "Backtrader CorpusManifest v1", + "type": "object", + "required": ["schema_version", "corpus_id", "mode", "entries", "snapshot_hash", "provenance"], + "properties": { + "schema_version": {"const": "corpus-manifest-v1"}, + "corpus_id": {"type": "string", "minLength": 1}, + "mode": {"enum": ["snapshot", "source-attached"]}, + "entries": {"type": "array", "items": {"$ref": "#/$defs/Entry"}}, + "entry_count": {"type": "integer", "minimum": 0}, + "counts": {"type": "object", "additionalProperties": {"type": "integer", "minimum": 0}}, + "snapshot_hash": {"$ref": "#/$defs/Hash"}, + "provenance": {"type": "object"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "Entry": { + "type": "object", + "required": ["id", "source", "archetype", "content_hash"], + "properties": { + "id": {"type": "string", "minLength": 1}, + "source": {"type": "string", "minLength": 1}, + "archetype": { + "enum": [ + "single_data_indicator", + "multi_indicator_system", + "multi_asset_allocation", + "multi_timeframe", + "pairs_spread", + "order_risk", + "precomputed_ml" + ] + }, + "content_hash": {"$ref": "#/$defs/Hash"}, + "metadata": {"type": "object"} + }, + "additionalProperties": true + } + }, + "x-hash-contract": { + "field": "snapshot_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["snapshot_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json b/src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json new file mode 100644 index 0000000..a96217c --- /dev/null +++ b/src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json @@ -0,0 +1,189 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/dataset-manifest.schema.json", + "title": "Backtrader DatasetManifest v1", + "type": "object", + "required": [ + "schema_version", + "dataset_id", + "spec_hash", + "semantic_hash", + "manifest_hash", + "feeds", + "master_feed", + "alignment", + "status", + "diagnostics", + "transforms", + "provenance" + ], + "properties": { + "schema_version": {"const": "dataset-manifest-v1"}, + "dataset_id": {"type": "string", "pattern": "^ds_[0-9a-f]{64}$"}, + "spec_hash": {"$ref": "#/$defs/Hash"}, + "semantic_hash": {"$ref": "#/$defs/Hash"}, + "manifest_hash": {"$ref": "#/$defs/Hash"}, + "feeds": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/RegisteredFeed"} + }, + "master_feed": {"type": "string", "minLength": 1}, + "alignment": {"$ref": "#/$defs/Alignment"}, + "status": {"enum": ["valid", "invalid"]}, + "diagnostics": {"type": "array", "items": {"$ref": "#/$defs/Diagnostic"}}, + "transforms": {"type": "array", "items": {"$ref": "#/$defs/Transform"}}, + "provenance": {"type": "object"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "Alignment": { + "type": "object", + "required": ["mode", "minimum_overlap"], + "properties": { + "mode": {"enum": ["intersection", "left", "explicit_asof"]}, + "minimum_overlap": {"type": "number", "minimum": 0, "maximum": 1} + }, + "additionalProperties": false + }, + "Transform": { + "type": "object", + "required": ["profile_id", "parameters"], + "properties": { + "profile_id": {"type": "string", "minLength": 1}, + "parameters": {"type": "object"} + }, + "additionalProperties": false + }, + "Diagnostic": { + "type": "object", + "required": ["code", "severity", "message"], + "properties": { + "code": {"type": "string", "minLength": 1}, + "severity": {"enum": ["error", "warning", "info"]}, + "message": {"type": "string"}, + "feed": {"type": ["string", "null"]}, + "row": {"type": ["integer", "null"], "minimum": 1}, + "column": {"type": ["string", "null"]} + }, + "additionalProperties": false + }, + "Source": { + "type": "object", + "required": ["root_id", "relative_path", "source_type"], + "properties": { + "root_id": {"type": "string", "minLength": 1}, + "relative_path": {"type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"}, + "source_type": {"enum": ["local_file", "materialized_dataframe", "content_addressed"]}, + "sha256": {"$ref": "#/$defs/Hash"}, + "bytes": {"type": "integer", "minimum": 0} + }, + "additionalProperties": false + }, + "FeedMapping": { + "type": "object", + "propertyNames": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$"}, + "additionalProperties": {"type": ["string", "integer"]} + }, + "DataFeedSpec": { + "type": "object", + "required": [ + "name", + "role", + "symbol", + "source", + "format", + "timeframe", + "timezone", + "columns" + ], + "properties": { + "name": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"}, + "role": {"enum": ["execution", "signal", "benchmark", "hedge", "cash_proxy"]}, + "symbol": {"type": "string", "minLength": 1}, + "tradable": {"type": "boolean"}, + "source": {"$ref": "#/$defs/Source"}, + "format": { + "enum": [ + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + "pandas", + "pandas_custom_lines", + "canonical_csv_v1" + ] + }, + "columns": {"$ref": "#/$defs/FeedMapping"}, + "timeframe": {"type": "string", "minLength": 1}, + "compression": {"type": "integer", "minimum": 1}, + "timezone": {"type": "string", "minLength": 1}, + "lines": { + "type": "array", + "uniqueItems": true, + "items": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"} + }, + "extensions": {"type": "object"} + }, + "additionalProperties": false + }, + "DataSpec": { + "type": "object", + "required": [ + "schema_version", + "spec_hash", + "feeds", + "master_feed", + "alignment", + "transforms" + ], + "properties": { + "schema_version": {"const": "data-spec-v1"}, + "spec_hash": {"$ref": "#/$defs/Hash"}, + "feeds": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/DataFeedSpec"} + }, + "master_feed": {"type": "string", "minLength": 1}, + "alignment": {"$ref": "#/$defs/Alignment"}, + "transforms": {"type": "array", "items": {"$ref": "#/$defs/Transform"}}, + "extensions": {"type": "object"} + }, + "additionalProperties": false, + "x-hash-contract": { + "field": "spec_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["spec_hash"] + } + }, + "RegisteredFeed": { + "type": "object", + "required": ["name", "role", "symbol", "timeframe"], + "properties": { + "name": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"}, + "role": {"enum": ["execution", "signal", "benchmark", "hedge", "cash_proxy"]}, + "symbol": {"type": "string", "minLength": 1}, + "timeframe": {"type": "string", "minLength": 1}, + "tradable": {"type": "boolean"}, + "source": {"$ref": "#/$defs/Source"}, + "format": {"type": "string"}, + "adapter": {"type": "string"}, + "columns": {"$ref": "#/$defs/FeedMapping"}, + "lines": {"type": "array", "items": {"type": "string"}}, + "object": {"type": "object"}, + "summary": {"type": "object"}, + "quality": {"type": "object"} + }, + "additionalProperties": true + } + }, + "x-hash-contract": { + "field": "manifest_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["manifest_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/run-manifest-v1.schema.json b/src/backtrader_agent/resources/contracts/run-manifest-v1.schema.json new file mode 100644 index 0000000..edd3872 --- /dev/null +++ b/src/backtrader_agent/resources/contracts/run-manifest-v1.schema.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/run-manifest.schema.json", + "title": "Backtrader RunManifest v1", + "type": "object", + "required": [ + "schema_version", + "run_id", + "artifact_hash", + "dataset_id", + "engine", + "environment_hash", + "run_profile", + "approval_id", + "manifest_hash" + ], + "properties": { + "schema_version": {"const": "run-manifest-v1"}, + "run_id": {"type": "string", "minLength": 1}, + "artifact_hash": {"$ref": "#/$defs/Hash"}, + "dataset_id": {"type": "string", "pattern": "^ds_[0-9a-f]{64}$"}, + "engine": {"type": "object", "minProperties": 1}, + "environment_hash": {"$ref": "#/$defs/Hash"}, + "run_profile": {"type": "object", "minProperties": 1}, + "approval_id": {"type": "string", "minLength": 1}, + "manifest_hash": {"$ref": "#/$defs/Hash"}, + "modes": { + "type": "array", + "prefixItems": [{"const": "runonce"}, {"const": "runnext"}], + "items": false, + "minItems": 2, + "maxItems": 2 + }, + "timeout_seconds": {"type": "integer", "minimum": 1}, + "candidate": {"type": "object"}, + "dataset": {"type": "object"}, + "environment": {"type": "object"}, + "fixed_argv": {"type": "array", "items": {"type": "string"}}, + "cwd": {"type": "string"}, + "allowed_environment": {"type": "array", "items": {"type": "string"}}, + "created_at": {"type": "string"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"} + }, + "x-hash-contract": { + "field": "manifest_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["manifest_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/run-result-v1.schema.json b/src/backtrader_agent/resources/contracts/run-result-v1.schema.json new file mode 100644 index 0000000..2ffa91d --- /dev/null +++ b/src/backtrader_agent/resources/contracts/run-result-v1.schema.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/run-result.schema.json", + "title": "Backtrader RunResult v1", + "type": "object", + "required": [ + "schema_version", + "run_id", + "status", + "metrics", + "diagnostics", + "artifacts", + "result_hash" + ], + "properties": { + "schema_version": {"const": "run-result-v1"}, + "run_id": {"type": "string", "minLength": 1}, + "status": {"enum": ["passed", "failed", "error", "timeout", "cancelled"]}, + "metrics": {"$ref": "#/$defs/Metrics"}, + "diagnostics": {"type": "array", "items": {"type": "object"}}, + "artifacts": {"type": "array", "items": {"$ref": "#/$defs/File"}}, + "result_hash": {"$ref": "#/$defs/Hash"}, + "manifest_hash": {"$ref": "#/$defs/Hash"}, + "modes": {"type": "object"}, + "comparison": {"type": "object"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "Metrics": { + "type": "object", + "required": [ + "bar_num", + "buy_count", + "sell_count", + "win_count", + "loss_count", + "trade_num", + "final_value", + "sharpe_ratio", + "annual_return", + "max_drawdown", + "return_rate" + ], + "properties": { + "bar_num": {"type": "integer", "minimum": 0}, + "buy_count": {"type": "integer", "minimum": 0}, + "sell_count": {"type": "integer", "minimum": 0}, + "win_count": {"type": "integer", "minimum": 0}, + "loss_count": {"type": "integer", "minimum": 0}, + "trade_num": {"type": "integer", "minimum": 0}, + "final_value": {"type": "number"}, + "sharpe_ratio": {"type": ["number", "null"]}, + "annual_return": {"type": ["number", "null"]}, + "max_drawdown": {"type": "number"}, + "return_rate": {"type": "number"} + }, + "additionalProperties": false + }, + "File": { + "type": "object", + "required": ["path", "role", "bytes", "sha256"], + "properties": { + "path": {"type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"}, + "role": {"type": "string", "minLength": 1}, + "bytes": {"type": "integer", "minimum": 0}, + "sha256": {"$ref": "#/$defs/Hash"} + }, + "additionalProperties": false + } + }, + "x-hash-contract": { + "field": "result_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["result_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json b/src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json new file mode 100644 index 0000000..4570980 --- /dev/null +++ b/src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json @@ -0,0 +1,124 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/strategy-spec.schema.json", + "title": "Backtrader StrategySpec v1", + "type": "object", + "required": [ + "spec_version", + "name", + "slug", + "category", + "archetype", + "output_profile", + "dataset_id", + "feeds", + "parameters", + "entry", + "exit", + "sizing", + "risk", + "run_modes", + "allowed_imports", + "spec_hash" + ], + "properties": { + "spec_version": {"const": "strategy-spec-v1"}, + "name": {"type": "string", "minLength": 1, "maxLength": 120}, + "slug": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 120}, + "category": {"type": "string", "minLength": 1, "maxLength": 120}, + "archetype": { + "enum": [ + "single_data_indicator", + "multi_indicator_system", + "multi_asset_allocation", + "multi_timeframe", + "pairs_spread", + "order_risk", + "precomputed_ml" + ] + }, + "output_profile": {"enum": ["single_test", "python_bundle"]}, + "dataset_id": {"type": "string", "pattern": "^ds_[0-9a-f]{64}$"}, + "feeds": { + "type": "array", + "minItems": 1, + "maxItems": 32, + "items": {"$ref": "#/$defs/Feed"} + }, + "parameters": { + "type": "array", + "maxItems": 64, + "items": {"$ref": "#/$defs/Parameter"} + }, + "entry": {"$ref": "#/$defs/RuleReferences"}, + "exit": {"$ref": "#/$defs/RuleReferences"}, + "sizing": {"type": "object"}, + "risk": {"type": "object"}, + "cash": {"type": "number", "exclusiveMinimum": 0}, + "commission": {"type": "number", "minimum": 0}, + "run_modes": { + "type": "array", + "prefixItems": [{"const": "runonce"}, {"const": "runnext"}], + "items": false, + "minItems": 2, + "maxItems": 2 + }, + "allowed_imports": {"const": ["backtrader"]}, + "non_goals": {"type": "array", "items": {"type": "string"}}, + "undecided": {"type": "array", "items": {"type": "string"}}, + "ir": {"type": "object"}, + "extensions": {"type": "object"}, + "spec_hash": {"$ref": "#/$defs/Hash"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "Feed": { + "type": "object", + "required": ["name", "role", "symbol", "timeframe", "lines"], + "properties": { + "name": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"}, + "role": {"enum": ["execution", "signal", "benchmark", "hedge", "cash_proxy"]}, + "symbol": {"type": "string", "minLength": 1}, + "timeframe": {"type": "string", "minLength": 1}, + "lines": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"} + } + }, + "additionalProperties": false + }, + "Parameter": { + "type": "object", + "required": ["name", "type", "default"], + "properties": { + "name": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$"}, + "type": {"enum": ["int", "float", "bool", "str"]}, + "default": {"type": ["integer", "number", "boolean", "string"]}, + "minimum": {"type": "number"}, + "maximum": {"type": "number"} + }, + "additionalProperties": false + }, + "RuleReferences": { + "type": "object", + "required": ["rule_names"], + "properties": { + "rule_names": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": {"type": "string", "minLength": 1} + } + }, + "additionalProperties": false + } + }, + "x-hash-contract": { + "field": "spec_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["spec_hash"] + } +} diff --git a/src/backtrader_agent/resources/contracts/validation-report-v1.schema.json b/src/backtrader_agent/resources/contracts/validation-report-v1.schema.json new file mode 100644 index 0000000..1478939 --- /dev/null +++ b/src/backtrader_agent/resources/contracts/validation-report-v1.schema.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://backtrader.org/contracts/ai-strategy/v1/validation-report.schema.json", + "title": "Backtrader ValidationReport v1", + "type": "object", + "required": [ + "schema_version", + "validation_id", + "artifact_hash", + "dataset_id", + "status", + "diagnostics", + "evidence", + "validation_hash" + ], + "properties": { + "schema_version": {"const": "validation-report-v1"}, + "validation_id": {"type": "string", "minLength": 1}, + "artifact_hash": {"$ref": "#/$defs/Hash"}, + "dataset_id": { + "type": ["string", "null"], + "pattern": "^ds_[0-9a-f]{64}$" + }, + "status": {"enum": ["passed", "failed", "pending"]}, + "diagnostics": {"type": "array", "items": {"$ref": "#/$defs/Diagnostic"}}, + "evidence": {"type": "object"}, + "validation_hash": {"$ref": "#/$defs/Hash"}, + "layers": {"type": "object"}, + "files": {"type": "array"}, + "summary": {"type": "object"}, + "extensions": {"type": "object"} + }, + "$defs": { + "Hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, + "Diagnostic": { + "type": "object", + "required": ["code", "severity", "file", "line", "column", "rule", "message", "suggestion"], + "properties": { + "code": {"type": "string", "minLength": 1}, + "severity": {"enum": ["error", "warning", "info"]}, + "file": {"type": "string"}, + "line": {"type": "integer", "minimum": 1}, + "column": {"type": "integer", "minimum": 0}, + "rule": {"type": "string"}, + "message": {"type": "string"}, + "suggestion": {"type": "string"} + }, + "additionalProperties": false + } + }, + "x-hash-contract": { + "field": "validation_hash", + "algorithm": "sha256", + "canonicalization": "backtrader-canonical-json-v1", + "exclude": ["validation_hash"] + } +} diff --git a/src/backtrader_agent/resources/distribution-manifest.json b/src/backtrader_agent/resources/distribution-manifest.json new file mode 100644 index 0000000..402a24a --- /dev/null +++ b/src/backtrader_agent/resources/distribution-manifest.json @@ -0,0 +1,57 @@ +{ + "compatibility": { + "backtrader": "source fork or compatible installed distribution", + "python": ">=3.8" + }, + "files": { + "__init__.py": "4c10530950b21fc9011a1914b827f1c3e51d47e1d3f7285a2c12dfeaf3a2b368", + "__main__.py": "307299fda7b77d22c64cb51430ec75e5f59d78e9c948786afb3b2544fe45e4b7", + "audit.py": "a7f7919e221876578557202baedf54e368dbe4086c7e8ea2694457e1524cc2fe", + "canonical.py": "30286fa61480f37bea1b540255c08e31f5595ff50677c765c3b3cc99599fcf81", + "catalog.py": "99b64ec3060a264c6f18324f18f62fb82d85d6c6351e77d8d741cd88db47868d", + "changes.py": "34f7667368c6308de8a8a89c81732445e3e4975e6b67905aa35061bff86e887d", + "cli.py": "fe2c4182ebca62af8b66113447c27d0a50b39f48b0f7e1e0406a58703718374f", + "contracts.py": "eb2257d04a84aa7e128d751329212bb9bd681dbd825b4029142b12b27f493828", + "data.py": "d395eed7fa638d9de00fc88342ee379ef83999aef832933ac42465daf4f84cfe", + "doctor.py": "6f3ed4a05974bc91b3ad2536e02de7bdebee270a5c6cdd8f9b7f327f0209c479", + "engines.py": "a25365922996d1d11f906a671645affee8026e6502b8009042c50d1cf5c11c63", + "errors.py": "11c0e023897b8308e9fe1b6f212222158bbd79dafca6c386c14ca106832a92ee", + "installer.py": "f7ea940262cedf7061ce80ddf574b3589cf469b3c285d96368f38016ce4eea80", + "repair.py": "ebe3eb9dbf91dd5e5d6e1f669a5a3c573087948160a8cd90b5333a3355d973db", + "report.py": "df36c78fb4076f7baa4f9a551ca8a64b1efe02456f8f8082732103d9ed280d72", + "resources/adapters/claude-code/backtrader-agent.md": "f9f8d5cbe128183bbbd669640dc2551730dd204df8354f53dc41a5170fd66fe3", + "resources/adapters/codex/backtrader-agent.toml": "44d09b2c0f0aba6a973f5d064d80a2d504aaa1294f854d72b29e3774589ad977", + "resources/adapters/openclaw/workspace/AGENTS.md": "b621f9f1e8235bc822fd398ef856211631012960e858b175513c9b296f5184e0", + "resources/adapters/openclaw/workspace/IDENTITY.md": "5d54b86c4fa6dc6c59a96b34594be6da8c5d4030122b9854772b2b9c5e4b6646", + "resources/adapters/openclaw/workspace/README.md": "4ff81570814619635312d3409a059c14080d9aecc6a015280106db5bf6e7fa76", + "resources/adapters/openclaw/workspace/registration-manifest.template.json": "d115111aa515dc72ef3493a3fec2890f8e21cfdfa3f0fff0c2e0dcb75c48c0ff", + "resources/adapters/opencode/backtrader-agent.md": "0df3d8745a1c011455fd106444368292319d5bb9b65c22bad4d8cc21778f877a", + "resources/agent-payload.md": "020159c8d52bf4fe8365d7c191319ded3fb84102a51bec38cf1c03633aa3fd0f", + "resources/catalog/corpus-manifest.json": "e22f2ed453813c48b8aecc3004cd91e3f0f3307a3c404d0c99b70af20727c600", + "resources/catalog/corpus-v1.jsonl": "30973a10bd434e7935aa5b45577a5d5de0221a58b53a4c00a8124006438c5828", + "resources/catalog/snapshot-metadata.json": "18fee589b8b7cf22c454c18894ab1e32c60bba78d04fde068a9346698a76505e", + "resources/catalog/snapshot.jsonl": "8ec3507c78d1d156f179f916225e9f9a11be03f45bf94e22d7bd05c0779cd573", + "resources/contracts/agent-session-manifest-v1.schema.json": "2438d040d4d292ea8a3c9246e8f7a451279d03f49042c7855d0e042905803f76", + "resources/contracts/artifact-manifest-v1.schema.json": "b8e7c163d8e08e4d81ad0a8f85340ffc2e4e11947386b7adfd465161a6bd5047", + "resources/contracts/corpus-manifest-v1.schema.json": "187e500b3c8f597d4443bc81e18ffb2d6b7e3eb91f058d7b5c8396fa997b4e60", + "resources/contracts/dataset-manifest-v1.schema.json": "1dee34deb71ca52b30a5d01c9b049981bf5c5a34caf038e269e4b7af871e13b3", + "resources/contracts/run-manifest-v1.schema.json": "849085349bdf701228ee18cdb9609c7299d6e160064f5f5f69524df1bba76f08", + "resources/contracts/run-result-v1.schema.json": "369ab5a76a438b63ad4d5c1aa9f3159891fad2657e5bbbb4b873a53f0481d686", + "resources/contracts/strategy-spec-v1.schema.json": "70b46aa52ec32d501571e792aa8035d34235ba51a902405de8c0312e590b0bc7", + "resources/contracts/validation-report-v1.schema.json": "035ac9a04f6cff0abfcc9156614842332327bf7b861710a9753a3b31174b7366", + "resources/policies/comparison-profile-v1.json": "877f3a768c695ee848c499defaea482373aba8e8d6d9e0107ad46943d528e970", + "roots.py": "872a2cc895a798b2926ca41cab17be5863005240c673e61121b100d9444d68e1", + "runner.py": "ada365d1479f36d1d1fac0b065eee9d67d0a95fa6a023db375babe1fd636d4e8", + "scaffold.py": "b3c07d02a9ff6a45776af46aa992deb6729a8851d332908a0a7b432ad0a815f7", + "sessions.py": "7850a1134742f32f904a1608e67a77e504c3a001f4f81a29130ad8fa711d2539", + "tokens.py": "331847558f8b0ae92ff92f6c9458d1aad16220176d552187f31395ae1d3bd37b", + "validator.py": "283269b50f73c227c14ef665c8414dce6f4526779d9970eae14e3d640a85add4" + }, + "hash_algorithm": "sha256", + "manifest_excludes": [ + "resources/distribution-manifest.json" + ], + "product": "backtrader-agent", + "schema_version": "distribution-manifest-v1", + "version": "0.1.0" +} diff --git a/src/backtrader_agent/resources/policies/comparison-profile-v1.json b/src/backtrader_agent/resources/policies/comparison-profile-v1.json new file mode 100644 index 0000000..68a39d2 --- /dev/null +++ b/src/backtrader_agent/resources/policies/comparison-profile-v1.json @@ -0,0 +1,40 @@ +{ + "profile_version": "comparison-profile-v1", + "integer_metrics": [ + "bar_num", + "buy_count", + "sell_count", + "win_count", + "loss_count", + "trade_num" + ], + "float_metrics": [ + "final_value", + "sharpe_ratio", + "annual_return", + "max_drawdown", + "return_rate" + ], + "nullable_metrics": ["sharpe_ratio", "annual_return"], + "units": { + "bar_num": "bars", + "buy_count": "long_trade_records", + "sell_count": "short_trade_records", + "win_count": "closed_trades", + "loss_count": "closed_trades", + "trade_num": "trade_records", + "final_value": "account_currency", + "sharpe_ratio": "dimensionless", + "annual_return": "ratio", + "max_drawdown": "percent", + "return_rate": "percent" + }, + "default_float_tolerance": {"rel_tol": 1e-7, "abs_tol": 1e-9}, + "metric_overrides": { + "final_value": {"rel_tol": 1e-9, "abs_tol": 1e-6} + }, + "non_finite": "fail", + "missing_required": "fail", + "null_comparison": "only_equal_to_null", + "event_fields": ["sequence", "kind", "data", "size", "price", "status"] +} diff --git a/src/backtrader_agent/roots.py b/src/backtrader_agent/roots.py new file mode 100644 index 0000000..3cdd864 --- /dev/null +++ b/src/backtrader_agent/roots.py @@ -0,0 +1,116 @@ +"""Opaque root registry and confined path resolution.""" + +import os +import re +import stat +from pathlib import Path, PurePosixPath +from typing import Any, Dict, List + +from .canonical import atomic_write_json, read_json +from .errors import AgentError + +ROOT_ID_RE = re.compile(r"^[a-z][a-z0-9_-]{1,63}$") + + +class RootRegistry: + """Stores local root paths outside portable manifests. + + Callers use a root ID and a POSIX relative path. Resolution rejects absolute + paths, parent traversal, symlink escapes, and non-regular input files. + """ + + def __init__(self, state_root: Path) -> None: + self.state_root = Path(state_root).resolve() + self.path = self.state_root / "roots.json" + + def _load(self) -> Dict[str, Any]: + if not self.path.exists(): + return {"schema_version": "root-registry-v1", "roots": {}} + return read_json(self.path) + + def register(self, root_id: str, path: Path, *, writable: bool, kind: str) -> Dict[str, Any]: + if not ROOT_ID_RE.fullmatch(root_id): + raise AgentError("BTAG-ROOT-ID", "root ID must be a lowercase opaque identifier") + resolved = Path(path).resolve(strict=True) + if not resolved.is_dir(): + raise AgentError("BTAG-ROOT-TYPE", "registered root must be a directory") + if kind not in {"workspace", "dataset", "engine", "runtime"}: + raise AgentError("BTAG-ROOT-KIND", "root kind is not allowlisted") + registry = self._load() + existing = registry["roots"].get(root_id) + record = {"path": str(resolved), "writable": bool(writable), "kind": kind} + if existing and existing != record: + raise AgentError("BTAG-ROOT-CONFLICT", "root ID is already bound to another root") + registry["roots"][root_id] = record + atomic_write_json(self.path, registry) + return {"root_id": root_id, "writable": bool(writable), "kind": kind} + + def list(self) -> List[Dict[str, Any]]: + registry = self._load() + return [ + { + "root_id": root_id, + "writable": item["writable"], + "kind": item["kind"], + } + for root_id, item in sorted(registry["roots"].items()) + ] + + def get_record(self, root_id: str) -> Dict[str, Any]: + record = self._load()["roots"].get(root_id) + if record is None: + raise AgentError("BTAG-ROOT-UNKNOWN", "root ID is not registered") + return record + + @staticmethod + def _validate_relative(relative_path: str) -> PurePosixPath: + if not relative_path or "\x00" in relative_path: + raise AgentError("BTAG-PATH-INVALID", "relative path is empty or malformed") + candidate = PurePosixPath(relative_path.replace("\\", "/")) + if candidate.is_absolute() or ".." in candidate.parts: + raise AgentError( + "BTAG-PATH-TRAVERSAL", "path must be relative and cannot traverse parents" + ) + if candidate.parts and ":" in candidate.parts[0]: + raise AgentError("BTAG-PATH-ABSOLUTE", "platform absolute paths are forbidden") + return candidate + + def resolve( + self, + root_id: str, + relative_path: str, + *, + for_write: bool = False, + require_file: bool = False, + ) -> Path: + record = self.get_record(root_id) + if for_write and not record["writable"]: + raise AgentError("BTAG-ROOT-READONLY", "root is registered read-only") + relative = self._validate_relative(relative_path) + root = Path(record["path"]).resolve(strict=True) + unresolved = root.joinpath(*relative.parts) + + # Resolve the existing parent so a symlink cannot redirect the write. + existing_parent = unresolved.parent + while not existing_parent.exists() and existing_parent != root: + existing_parent = existing_parent.parent + parent_real = existing_parent.resolve(strict=True) + try: + parent_real.relative_to(root) + except ValueError as exc: + raise AgentError("BTAG-PATH-SYMLINK", "path escapes the registered root") from exc + + if unresolved.exists(): + resolved = unresolved.resolve(strict=True) + try: + resolved.relative_to(root) + except ValueError as exc: + raise AgentError("BTAG-PATH-SYMLINK", "path escapes the registered root") from exc + if require_file: + mode = os.stat(resolved, follow_symlinks=False).st_mode + if not stat.S_ISREG(mode): + raise AgentError("BTAG-PATH-TYPE", "input must be a regular file") + return resolved + if require_file: + raise AgentError("BTAG-PATH-MISSING", "input file does not exist") + return unresolved diff --git a/src/backtrader_agent/runner.py b/src/backtrader_agent/runner.py new file mode 100644 index 0000000..a69b309 --- /dev/null +++ b/src/backtrader_agent/runner.py @@ -0,0 +1,892 @@ +"""Fixed-profile child-process runner. Candidate modules are never host-imported.""" + +import json +import os +import re +import subprocess +import sys +import tempfile +import time +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +from .canonical import ( + atomic_write_bytes, + atomic_write_json, + hash_object, + read_json, + sha256_bytes, +) +from .data import DatasetService +from .errors import AgentError +from .engines import inspect_engine +from .report import ReportRenderer, normalize_metrics +from .roots import RootRegistry +from .sessions import SessionStore +from .tokens import TokenAuthority + +IDEMPOTENCY_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$") +RESULT_PREFIX = "BACKTRADER_AGENT_RESULT=" + + +def list_runs(state_root: Path) -> List[Dict[str, Any]]: + """Return compact summaries of every persisted run result on disk. + + Corrupt result records are skipped so one bad run cannot hide the rest. + """ + + runs_root = Path(state_root) / "runs" + if not runs_root.is_dir(): + return [] + summaries: List[Dict[str, Any]] = [] + for path in sorted(runs_root.glob("*/run-result.json")): + try: + result = read_json(path) + except (OSError, ValueError): + continue + if result.get("schema_version") != "run-result-v1": + continue + metrics = result.get("metrics", {}) + summaries.append( + { + "run_id": result.get("run_id"), + "status": result.get("status"), + "final_value": metrics.get("final_value"), + "trade_num": metrics.get("trade_num"), + "result_hash": result.get("result_hash"), + } + ) + return summaries +ENGINE_PROBE = ( + "import json,pathlib,backtrader;" + "print(json.dumps({'path':str(pathlib.Path(backtrader.__file__).resolve())," + "'version':getattr(backtrader,'__version__','unknown')},sort_keys=True))" +) + + +def _resource_limits(timeout_seconds: int): + def set_limits() -> None: + try: + import resource + + resource.setrlimit(resource.RLIMIT_CPU, (timeout_seconds + 2, timeout_seconds + 2)) + resource.setrlimit(resource.RLIMIT_FSIZE, (16 * 1024 * 1024, 16 * 1024 * 1024)) + address_limit = 2 * 1024 * 1024 * 1024 + resource.setrlimit(resource.RLIMIT_AS, (address_limit, address_limit)) + except (ImportError, OSError, ValueError): + # The command remains allowlisted and timeout-bound where a specific + # POSIX resource limit is unavailable. + return + + return set_limits + + +class ControlledRunner: + MAX_OUTPUT_BYTES = 1024 * 1024 + + def __init__(self, roots: RootRegistry, state_root: Path, authority: TokenAuthority) -> None: + self.roots = roots + self.state_root = Path(state_root) + self.authority = authority + self.action_root = self.state_root / "actions" + + @staticmethod + def compute_run_subject( + applied: Dict[str, Any], + dataset: Dict[str, Any], + validation_token: Dict[str, Any], + *, + mode: str, + ) -> str: + if mode not in {"runonce", "runnext"}: + raise AgentError("BTAG-RUN-MODE", "mode must be runonce or runnext") + return hash_object( + { + "applied_artifact_hash": applied["applied_artifact_hash"], + "dataset_manifest_hash": dataset["manifest_hash"], + "validation_token_id": validation_token["token_id"], + "mode": mode, + "profile": "controlled-runner-v1", + } + ) + + def _verify_applied(self, applied: Dict[str, Any]) -> None: + payload = { + key: value + for key, value in applied.items() + if key not in {"applied_artifact_hash", "applied_record_hash", "status"} + } + if hash_object(payload) != applied.get("applied_artifact_hash"): + raise AgentError("BTAG-RUN-ARTIFACT-HASH", "applied artifact hash is invalid") + if applied.get("generated_by") != "backtrader-agent": + raise AgentError("BTAG-RUN-ORIGIN", "runner only accepts product-generated artifacts") + required = { + "artifact_record_hash", + "dataset_id", + "dataset_manifest_hash", + "session_id", + "spec_hash", + "validation_token_hash", + "validation_token_id", + } + if any(not isinstance(applied.get(field), str) for field in required): + raise AgentError("BTAG-RUN-PROVENANCE", "applied artifact provenance is incomplete") + record = self.authority.load_bound_record( + "applied-artifact", + applied["session_id"], + applied["applied_artifact_hash"], + ) + canonical_applied = { + key: value for key, value in applied.items() if key != "applied_record_hash" + } + if ( + applied.get("applied_record_hash") != record.get("record_hash") + or record.get("applied_artifact") != canonical_applied + ): + raise AgentError( + "BTAG-RUN-PROVENANCE", + "applied artifact does not match its signed product record", + ) + session = SessionStore(self.state_root).load(applied["session_id"]) + artifacts = session.get("artifacts", {}) + expected = { + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied["applied_record_hash"], + "artifact_hash": applied["artifact_hash"], + "artifact_record_hash": applied["artifact_record_hash"], + "approved_spec_hash": applied["spec_hash"], + "change_manifest_hash": applied["change_manifest_hash"], + "dataset_id": applied["dataset_id"], + "dataset_manifest_hash": applied["dataset_manifest_hash"], + "validation_token_hash": applied["validation_token_hash"], + "validation_token_id": applied["validation_token_id"], + } + if any(artifacts.get(key) != value for key, value in expected.items()): + raise AgentError( + "BTAG-RUN-PROVENANCE", + "applied artifact does not match the product session checkpoint", + ) + + def _verify_registered_dataset(self, dataset: Dict[str, Any]) -> Dict[str, Any]: + payload = {key: value for key, value in dataset.items() if key != "manifest_hash"} + if hash_object(payload) != dataset.get("manifest_hash"): + raise AgentError("BTAG-RUN-DATASET-HASH", "dataset manifest hash is invalid") + if dataset.get("schema_version") != "dataset-manifest-v1": + raise AgentError("BTAG-RUN-DATASET-HASH", "dataset manifest version is invalid") + registered = DatasetService(self.roots, self.state_root).load(str(dataset["dataset_id"])) + if registered != dataset: + raise AgentError( + "BTAG-RUN-DATASET-REGISTRY", + "runner accepts only the exact registered DatasetManifest", + ) + return registered + + def _action_path(self, key: str) -> Path: + if not IDEMPOTENCY_RE.fullmatch(key): + raise AgentError("BTAG-IDEMPOTENCY-KEY", "idempotency key is malformed") + return self.action_root / f"run-{sha256_bytes(key.encode('utf-8'))}.json" + + @staticmethod + def _persist_exact_bytes(path: Path, content: bytes) -> None: + if path.exists(): + if path.is_symlink() or not path.is_file() or path.read_bytes() != content: + raise AgentError( + "BTAG-RUN-CONFLICT", + "persisted run artifact conflicts with the approved effect", + ) + return + try: + atomic_write_bytes(path, content, create_only=True) + except AgentError as exc: + if exc.code != "BTAG-WRITE-EXISTS": + raise + if path.is_symlink() or not path.is_file() or path.read_bytes() != content: + raise AgentError( + "BTAG-RUN-CONFLICT", + "persisted run artifact conflicts with the approved effect", + ) from exc + + @classmethod + def _persist_exact_json(cls, path: Path, value: Dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with tempfile.TemporaryDirectory(prefix=".json-stage-", dir=str(path.parent)) as name: + staged = Path(name) / "value.json" + atomic_write_json(staged, value, create_only=True) + cls._persist_exact_bytes(path, staged.read_bytes()) + + def _render_reports_resumable( + self, + run_root: Path, + result: Dict[str, Any], + ) -> Dict[str, str]: + run_root.mkdir(parents=True, exist_ok=True) + with tempfile.TemporaryDirectory( + prefix=f".{result['run_id']}.report-stage-", + dir=str(run_root.parent), + ) as name: + staged_root = Path(name) + report_files = ReportRenderer().render(staged_root, result) + for filename in ( + report_files["result"], + report_files["markdown"], + report_files["html"], + ): + self._persist_exact_bytes( + run_root / filename, + (staged_root / filename).read_bytes(), + ) + return report_files + + @staticmethod + def _verify_persisted_result( + result: Dict[str, Any], + *, + run_id: str, + mode: str, + applied: Dict[str, Any], + dataset: Dict[str, Any], + validation_token: Dict[str, Any], + run_token: Dict[str, Any], + ) -> None: + payload = {key: value for key, value in result.items() if key != "result_hash"} + extension = result.get("extensions", {}).get("backtrader_agent", {}) + if ( + result.get("run_id") != run_id + or result.get("status") != "passed" + or hash_object(payload) != result.get("result_hash") + or extension.get("mode") != mode + or extension.get("dataset_manifest_hash") != dataset["manifest_hash"] + or extension.get("applied_artifact_hash") != applied["applied_artifact_hash"] + or extension.get("validation_token_id") != validation_token["token_id"] + or extension.get("run_token_id") != run_token["token_id"] + ): + raise AgentError( + "BTAG-RUN-CONFLICT", + "persisted run result conflicts with the approved effect", + ) + + @staticmethod + def _verify_persisted_manifest( + run_root: Path, + result: Dict[str, Any], + expected: Dict[str, Any], + ) -> None: + manifest_path = run_root / "run-manifest.json" + if not manifest_path.is_file() or manifest_path.is_symlink(): + raise AgentError("BTAG-RUN-CONFLICT", "persisted run manifest is absent or unsafe") + manifest = read_json(manifest_path) + payload = {key: value for key, value in manifest.items() if key != "manifest_hash"} + if ( + manifest != expected + or hash_object(payload) != manifest.get("manifest_hash") + or manifest.get("manifest_hash") + != result.get("extensions", {}).get("backtrader_agent", {}).get("manifest_hash") + ): + raise AgentError("BTAG-RUN-CONFLICT", "persisted run manifest is invalid") + + @staticmethod + def _redact_stderr( + stderr: str, + *, + state_root: Path, + entrypoint: Path, + descriptors: List[Dict[str, Any]], + ) -> str: + redacted = stderr[-2000:] + replacements = { + str(state_root.resolve()): "", + str(entrypoint.parent.resolve()): "", + str(Path(sys.executable).resolve().parent): "", + } + replacements.update( + {str(Path(item["path"]).resolve()): "" for item in descriptors} + ) + for value, label in sorted(replacements.items(), key=lambda item: -len(item[0])): + redacted = redacted.replace(value, label) + redacted = re.sub( + r"(?", + redacted, + ) + redacted = re.sub( + r"\b[A-Za-z]:\\(?:[^\\\s:'\"]+\\)*[^\\\s:'\"]+", + "", + redacted, + ) + return redacted + + @staticmethod + def _begin_or_resume_session( + sessions: SessionStore, + *, + session_id: str, + subject: str, + effect_id: str, + idempotency_key: str, + run_token: Dict[str, Any], + ) -> None: + session = sessions.load(session_id) + state = session["state"] + if state in {"RUNNING", "PAUSED"}: + if ( + session.get("artifacts", {}).get("run_subject_hash") != subject + or session.get("artifacts", {}).get("run_effect_id") != effect_id + or session.get("approvals", {}).get("execute") != run_token["token_id"] + ): + raise AgentError( + "BTAG-RUN-SESSION", + "interrupted session belongs to another approved effect", + ) + if state == "RUNNING": + return + action_type = "controlled-run-resume" + elif state == "RUN_APPROVED": + action_type = "controlled-run-start" + else: + raise AgentError( + "BTAG-RUN-SESSION", + "session is not ready to start or resume this approved run", + ) + sessions.transition( + session_id, + "RUNNING", + action_type, + {"run_subject": subject}, + idempotency_key=idempotency_key, + approval_token_id=run_token["token_id"], + effect_references={ + "run_subject_hash": subject, + "run_effect_id": effect_id, + }, + ) + + @classmethod + def _finish_successful_session( + cls, + sessions: SessionStore, + *, + session_id: str, + subject: str, + effect_id: str, + idempotency_key: str, + run_token: Dict[str, Any], + result: Dict[str, Any], + report_hash: str, + ) -> None: + session = sessions.load(session_id) + if session["state"] in {"RUN_APPROVED", "PAUSED"}: + cls._begin_or_resume_session( + sessions, + session_id=session_id, + subject=subject, + effect_id=effect_id, + idempotency_key=idempotency_key, + run_token=run_token, + ) + session = sessions.load(session_id) + if session["state"] == "RUNNING": + sessions.transition( + session_id, + "PASSED", + "controlled-run-passed", + {"run_result": result["result_hash"]}, + idempotency_key=idempotency_key, + approval_token_id=run_token["token_id"], + effect_references={"run_result_hash": result["result_hash"]}, + ) + session = sessions.load(session_id) + if session["state"] == "PASSED": + sessions.transition( + session_id, + "REPORTED", + "report-render", + {"report": report_hash}, + idempotency_key=idempotency_key, + effect_references={"report_hash": report_hash}, + ) + session = sessions.load(session_id) + if session["state"] == "REPORTED": + sessions.transition( + session_id, + "COMPLETED", + "session-complete", + {"run_result": result["result_hash"]}, + idempotency_key=idempotency_key, + ) + session = sessions.load(session_id) + if session["state"] != "COMPLETED": + raise AgentError( + "BTAG-RUN-SESSION", + "successful run could not complete its legal session transitions", + ) + + def _dataset_descriptors(self, dataset: Dict[str, Any]) -> List[Dict[str, Any]]: + descriptors: List[Dict[str, Any]] = [] + transforms = { + item["parameters"]["feed"]: item + for item in dataset.get("transforms", []) + if isinstance(item, dict) + and isinstance(item.get("parameters"), dict) + and isinstance(item["parameters"].get("feed"), str) + } + for feed in dataset.get("feeds", []): + relative = ( + feed.get("extensions", {}).get("backtrader_agent", {}).get("cas_relative_path") + ) + if not isinstance(relative, str): + raise AgentError("BTAG-RUN-DATASET", "dataset has no registered CAS path") + path = (self.state_root / relative).resolve(strict=True) + try: + path.relative_to(self.state_root.resolve()) + except ValueError as exc: + raise AgentError("BTAG-RUN-DATASET", "dataset CAS path escapes state root") from exc + data = path.read_bytes() + if sha256_bytes(data) != feed.get("normalized_sha256"): + raise AgentError("BTAG-RUN-DATASET-HASH", "dataset CAS bytes changed") + descriptors.append( + { + "name": feed["name"], + "role": feed["role"], + "path": str(path), + "adapter": feed["format"], + "timeframe": feed.get("timeframe", "Days"), + "compression": int(feed.get("compression", 1)), + "canonical_columns": list(feed.get("canonical_columns", [])), + "transform": transforms.get(feed["name"]), + } + ) + return descriptors + + def _verify_files(self, applied: Dict[str, Any]) -> Path: + entrypoint: Optional[Path] = None + for item in applied.get("files", []): + path = self.roots.resolve( + applied["target_root_id"], item["relative_path"], require_file=True + ) + if sha256_bytes(path.read_bytes()) != item["sha256"]: + raise AgentError("BTAG-RUN-SOURCE-HASH", "applied source changed after approval") + if item["relative_path"] == applied.get("entrypoint"): + entrypoint = path + if entrypoint is None: + raise AgentError("BTAG-RUN-ENTRYPOINT", "controlled entrypoint is absent") + name = entrypoint.name + profile = applied.get("profile") + if profile == "python_bundle" and name != "run.py": + raise AgentError("BTAG-RUN-PROFILE", "bundle entrypoint must be run.py") + if profile == "single_test" and not name.startswith("test_"): + raise AgentError("BTAG-RUN-PROFILE", "test entrypoint must be a generated test") + return entrypoint + + @staticmethod + def _child_environment( + descriptors: List[Dict[str, Any]], + mode: str, + engine_root: Optional[Path] = None, + ) -> Dict[str, str]: + environment = { + "PATH": "/usr/bin:/bin", + "TMPDIR": "/tmp", + "PYTHONDONTWRITEBYTECODE": "1", + "PYTHONNOUSERSITE": "1", + "PYTEST_DISABLE_PLUGIN_AUTOLOAD": "1", + "BACKTRADER_AGENT_DATASETS_JSON": json.dumps( + descriptors, sort_keys=True, separators=(",", ":") + ), + "BACKTRADER_AGENT_MODE": mode, + } + if engine_root is not None: + environment["PYTHONPATH"] = str(engine_root) + return environment + + def _resolve_engine( + self, + validation_token: Dict[str, Any], + ) -> Tuple[Optional[Path], Dict[str, Any]]: + bindings = validation_token.get("bindings", {}) + root_id = bindings.get("engine_root_id") + if root_id is None: + return None, { + "hash": bindings.get("engine_hash"), + "kind": "active-python-environment", + } + descriptor = inspect_engine(self.roots, str(root_id)) + if descriptor["engine_hash"] != bindings.get("engine_hash"): + raise AgentError( + "BTAG-ENGINE-HASH", + "registered Backtrader engine changed after validation", + ) + record = self.roots.get_record(str(root_id)) + root = Path(record["path"]).resolve(strict=True) + probe = subprocess.run( + [sys.executable, "-c", ENGINE_PROBE], + cwd=self.state_root, + env=self._child_environment([], "runonce", root), + stdin=subprocess.DEVNULL, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + timeout=15, + check=False, + shell=False, + ) + try: + attestation = json.loads(probe.stdout.decode("utf-8")) + imported = Path(attestation["path"]).resolve(strict=True) + relative_import = imported.relative_to(root).as_posix() + except (KeyError, OSError, ValueError, json.JSONDecodeError) as exc: + raise AgentError( + "BTAG-ENGINE-IMPORT", + "registered Backtrader engine could not be imported from its bound root", + ) from exc + if ( + probe.returncode != 0 + or not relative_import.startswith("backtrader/") + or ( + descriptor["version"] != "unknown" + and attestation.get("version") != descriptor["version"] + ) + ): + raise AgentError( + "BTAG-ENGINE-IMPORT", + "child-process Backtrader import does not match the registered engine", + ) + return root, { + "hash": descriptor["engine_hash"], + "kind": "registered-local", + "root_id": descriptor["root_id"], + "version": descriptor["version"], + "version_file_sha256": descriptor["version_file_sha256"], + "import_relative_path": relative_import, + } + + def run( + self, + applied: Dict[str, Any], + dataset: Dict[str, Any], + validation_token: Dict[str, Any], + run_token: Dict[str, Any], + *, + mode: str, + idempotency_key: str, + timeout_seconds: int = 120, + ) -> Dict[str, Any]: + if timeout_seconds < 1 or timeout_seconds > 600: + raise AgentError("BTAG-RUN-TIMEOUT", "timeout must be between 1 and 600 seconds") + self._verify_applied(applied) + dataset = self._verify_registered_dataset(dataset) + self.authority.verify( + validation_token, + kind="validation", + subject_hash=applied["artifact_hash"], + required_bindings={ + "artifact_record_hash": applied["artifact_record_hash"], + "dataset_hash": dataset["manifest_hash"], + "dataset_id": dataset["dataset_id"], + "session_id": applied["session_id"], + "spec_hash": applied["spec_hash"], + }, + ) + if ( + applied["dataset_id"] != dataset["dataset_id"] + or applied["dataset_manifest_hash"] != dataset["manifest_hash"] + or applied["validation_token_hash"] != hash_object(validation_token) + or applied["validation_token_id"] != validation_token["token_id"] + ): + raise AgentError( + "BTAG-RUN-PROVENANCE", + "applied artifact, validation, and registered dataset bindings disagree", + ) + subject = self.compute_run_subject(applied, dataset, validation_token, mode=mode) + self.authority.verify( + run_token, + kind="run", + subject_hash=subject, + required_bindings={ + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied["applied_record_hash"], + "artifact_hash": applied["artifact_hash"], + "artifact_record_hash": applied["artifact_record_hash"], + "change_manifest_hash": applied["change_manifest_hash"], + "validation_token_id": validation_token["token_id"], + "validation_token_hash": hash_object(validation_token), + "dataset_hash": dataset["manifest_hash"], + "dataset_id": dataset["dataset_id"], + "mode": mode, + "session_id": applied["session_id"], + "spec_hash": applied["spec_hash"], + }, + ) + action_path = self._action_path(idempotency_key) + request_hash = hash_object( + { + "action": "controlled-run", + "subject_hash": subject, + "run_token_id": run_token["token_id"], + "timeout_seconds": timeout_seconds, + } + ) + effect_id = hash_object( + { + "idempotency_key": idempotency_key, + "request_hash": request_hash, + } + ) + run_id = f"run-{subject[:20]}" + run_root = self.state_root / "runs" / run_id + engine_root, engine_descriptor = self._resolve_engine(validation_token) + run_manifest: Dict[str, Any] = { + "schema_version": "run-manifest-v1", + "run_id": run_id, + "artifact_hash": applied["artifact_hash"], + "dataset_id": dataset["dataset_id"], + "engine": engine_descriptor, + "environment_hash": ( + validation_token["bindings"].get("environment_hash") + if re.fullmatch( + r"[0-9a-f]{64}", + str(validation_token["bindings"].get("environment_hash", "")), + ) + else hash_object(validation_token["bindings"].get("environment_hash")) + ), + "run_profile": { + "name": "controlled-runner-v1", + "output_profile": applied["profile"], + "mode": mode, + "entrypoint": Path(applied["entrypoint"]).name, + "timeout_seconds": timeout_seconds, + }, + "approval_id": run_token["approval_id"], + "extensions": { + "backtrader_agent": { + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied["applied_record_hash"], + "dataset_manifest_hash": dataset["manifest_hash"], + "validation_token_id": validation_token["token_id"], + } + }, + } + run_manifest["manifest_hash"] = hash_object(run_manifest) + sessions = SessionStore(self.state_root) + if action_path.exists(): + recorded = read_json(action_path) + if recorded.get("request_hash") != request_hash: + raise AgentError( + "BTAG-IDEMPOTENCY-CONFLICT", + "idempotency key was already used for another run", + ) + result = recorded.get("result") + if not isinstance(result, dict): + raise AgentError("BTAG-RUN-CONFLICT", "recorded run result is invalid") + self._verify_persisted_result( + result, + run_id=run_id, + mode=mode, + applied=applied, + dataset=dataset, + validation_token=validation_token, + run_token=run_token, + ) + self._verify_persisted_manifest(run_root, result, run_manifest) + report_files = self._render_reports_resumable(run_root, result) + self._finish_successful_session( + sessions, + session_id=applied["session_id"], + subject=subject, + effect_id=effect_id, + idempotency_key=idempotency_key, + run_token=run_token, + result=result, + report_hash=report_files["report_hash"], + ) + return result + self.authority.consume(run_token, effect_id=effect_id) + + entrypoint = self._verify_files(applied) + descriptors = self._dataset_descriptors(dataset) + self._begin_or_resume_session( + sessions, + session_id=applied["session_id"], + subject=subject, + effect_id=effect_id, + idempotency_key=idempotency_key, + run_token=run_token, + ) + persisted_result_path = run_root / "run-result.json" + if persisted_result_path.exists(): + result = read_json(persisted_result_path) + self._verify_persisted_result( + result, + run_id=run_id, + mode=mode, + applied=applied, + dataset=dataset, + validation_token=validation_token, + run_token=run_token, + ) + self._verify_persisted_manifest(run_root, result, run_manifest) + report_files = self._render_reports_resumable(run_root, result) + self._persist_exact_json( + action_path, + { + "schema_version": "idempotent-action-v1", + "request_hash": request_hash, + "result": result, + }, + ) + self._finish_successful_session( + sessions, + session_id=applied["session_id"], + subject=subject, + effect_id=effect_id, + idempotency_key=idempotency_key, + run_token=run_token, + result=result, + report_hash=report_files["report_hash"], + ) + return result + if applied["profile"] == "python_bundle": + argv = [sys.executable, entrypoint.name] + else: + argv = [ + sys.executable, + "-m", + "pytest", + entrypoint.name, + "-q", + "-s", + "-p", + "no:cacheprovider", + ] + environment = self._child_environment(descriptors, mode, engine_root) + + def mark_failed(code: str) -> None: + current = sessions.load(applied["session_id"]) + if current["state"] == "RUNNING": + sessions.transition( + applied["session_id"], + "FAILED", + "controlled-run-failed", + {"diagnostic": hash_object({"code": code, "subject": subject})}, + idempotency_key=idempotency_key, + approval_token_id=run_token["token_id"], + effect_references={"run_failure_code": code}, + ) + + started = time.monotonic() + try: + completed = subprocess.run( + argv, + cwd=str(entrypoint.parent), + env=environment, + stdin=subprocess.DEVNULL, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + timeout=timeout_seconds, + check=False, + shell=False, + preexec_fn=_resource_limits(timeout_seconds) if os.name == "posix" else None, + ) + except subprocess.TimeoutExpired as exc: + mark_failed("BTAG-RUN-TIMEOUT") + raise AgentError("BTAG-RUN-TIMEOUT", "controlled child process timed out") from exc + duration = time.monotonic() - started + stdout = completed.stdout + stderr = completed.stderr + if len(stdout) > self.MAX_OUTPUT_BYTES or len(stderr) > self.MAX_OUTPUT_BYTES: + mark_failed("BTAG-RUN-OUTPUT") + raise AgentError("BTAG-RUN-OUTPUT", "child output exceeded the byte quota") + stdout_text = stdout.decode("utf-8", errors="replace") + stderr_text = stderr.decode("utf-8", errors="replace") + if completed.returncode != 0: + redacted = self._redact_stderr( + stderr_text, + state_root=self.state_root, + entrypoint=entrypoint, + descriptors=descriptors, + ) + mark_failed("BTAG-RUN-FAILED") + raise AgentError( + "BTAG-RUN-FAILED", + "controlled child process failed", + details={"returncode": completed.returncode, "stderr": redacted}, + ) + payload = None + for line in stdout_text.splitlines(): + if line.startswith(RESULT_PREFIX): + try: + payload = json.loads(line[len(RESULT_PREFIX) :]) + except json.JSONDecodeError as exc: + mark_failed("BTAG-RUN-RESULT") + raise AgentError( + "BTAG-RUN-RESULT", "child emitted malformed structured result" + ) from exc + if not isinstance(payload, dict) or not isinstance(payload.get("metrics"), dict): + mark_failed("BTAG-RUN-RESULT") + raise AgentError("BTAG-RUN-RESULT", "child emitted no structured metrics") + try: + metrics = normalize_metrics(payload["metrics"]) + except AgentError: + mark_failed("BTAG-RUN-METRIC") + raise + + self._persist_exact_json(run_root / "run-manifest.json", run_manifest) + persisted_manifest = run_root / "run-manifest.json" + result: Dict[str, Any] = { + "schema_version": "run-result-v1", + "run_id": run_id, + "status": "passed", + "metrics": metrics, + "diagnostics": [], + "artifacts": [ + { + "path": "run-manifest.json", + "role": "run_manifest", + "bytes": persisted_manifest.stat().st_size, + "sha256": sha256_bytes(persisted_manifest.read_bytes()), + } + ], + "extensions": { + "backtrader_agent": { + "mode": mode, + "duration_seconds": round(duration, 6), + "dataset_manifest_hash": dataset["manifest_hash"], + "applied_artifact_hash": applied["applied_artifact_hash"], + "manifest_hash": run_manifest["manifest_hash"], + "validation_token_id": validation_token["token_id"], + "run_token_id": run_token["token_id"], + "environment_policy": { + "home_forwarded": False, + "inherited_environment": False, + }, + "limitations": [ + "P0 uses a timeout- and quota-bound local child process, not an OS sandbox.", + "P0 does not claim verified network isolation.", + "Only product-generated, hash-approved candidates are executable.", + ], + } + }, + } + result["result_hash"] = hash_object(result) + try: + report_files = self._render_reports_resumable(run_root, result) + except (AgentError, OSError) as exc: + raise AgentError( + "BTAG-RUN-PERSIST", + "run output persistence was interrupted; retry the same effect", + ) from exc + record = { + "schema_version": "idempotent-action-v1", + "request_hash": request_hash, + "result": result, + } + self._persist_exact_json(action_path, record) + self._finish_successful_session( + sessions, + session_id=applied["session_id"], + subject=subject, + effect_id=effect_id, + idempotency_key=idempotency_key, + run_token=run_token, + result=result, + report_hash=report_files["report_hash"], + ) + return result diff --git a/src/backtrader_agent/scaffold.py b/src/backtrader_agent/scaffold.py new file mode 100644 index 0000000..92dfa37 --- /dev/null +++ b/src/backtrader_agent/scaffold.py @@ -0,0 +1,574 @@ +"""Seven-archetype, two-profile deterministic scaffold renderer.""" + +import re +from pathlib import Path +from typing import Any, Dict, List + +from .canonical import ( + atomic_write_bytes, + atomic_write_json, + canonical_json_bytes, + hash_object, + read_json, + sha256_bytes, +) +from .contracts import ARCHETYPES as CONTRACT_ARCHETYPES +from .contracts import PROFILES as CONTRACT_PROFILES +from .contracts import StrategySpec +from .errors import AgentError +from .tokens import TokenAuthority + +ARCHETYPES = tuple(sorted(CONTRACT_ARCHETYPES)) +PROFILES = tuple(sorted(CONTRACT_PROFILES)) +SESSION_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_-]{1,79}$") +HASH_RE = re.compile(r"^[0-9a-f]{64}$") + + +def load_product_artifact_record( + state_root: Path, + session_id: str, + artifact_hash: str, + authority: TokenAuthority, +) -> Dict[str, Any]: + """Load and authenticate the renderer-owned provenance record.""" + + if not SESSION_RE.fullmatch(session_id) or not HASH_RE.fullmatch(artifact_hash): + raise AgentError("BTAG-PROVENANCE-ID", "artifact provenance identifiers are malformed") + path = Path(state_root) / "sessions" / session_id / "artifacts" / f"{artifact_hash}.json" + if not path.is_file() or path.is_symlink(): + raise AgentError( + "BTAG-PROVENANCE-MISSING", + "artifact was not generated by the product renderer for this session", + ) + record = read_json(path) + payload = authority.verify_product_record(record) + expected_hash = payload.get("record_hash") + actual_hash = hash_object( + {key: value for key, value in payload.items() if key != "record_hash"} + ) + if expected_hash != actual_hash: + raise AgentError("BTAG-PROVENANCE-HASH", "artifact provenance record hash is invalid") + if ( + payload.get("schema_version") != "artifact-provenance-v1" + or payload.get("generated_by") != "backtrader-agent" + or payload.get("renderer_version") != "scaffold-v1" + or payload.get("session_id") != session_id + or payload.get("artifact_hash") != artifact_hash + ): + raise AgentError("BTAG-PROVENANCE-BINDING", "artifact provenance record is inconsistent") + return payload + + +ARCHETYPE_CODE = { + "single_data_indicator": ( + """ self.fast = bt.ind.SMA(self.data.close, period=self.p.fast_period) + self.slow = bt.ind.SMA(self.data.close, period=self.p.slow_period)""", + """ if not self.position and self.fast[0] > self.slow[0]: + self.buy(size=1) + elif self.position and self.fast[0] < self.slow[0]: + self.close()""", + ), + "multi_indicator_system": ( + """ self.fast = bt.ind.EMA(self.data.close, period=self.p.fast_period) + self.slow = bt.ind.SMA(self.data.close, period=self.p.slow_period) + self.rsi = bt.ind.RSI(self.data.close, period=max(2, self.p.fast_period))""", + """ if not self.position and self.fast[0] > self.slow[0] and self.rsi[0] < 70: + self.buy(size=1) + elif self.position and (self.fast[0] < self.slow[0] or self.rsi[0] > 75): + self.close()""", + ), + "multi_asset_allocation": ( + """ self.execution_data = self.datas[0] + self.signal_data = self.datas[1] if len(self.datas) > 1 else self.datas[0] + self.signal_sma = bt.ind.SMA(self.signal_data.close, period=self.p.fast_period)""", + """ if not self.getposition(self.execution_data) and self.signal_data.close[0] > self.signal_sma[0]: + self.buy(data=self.execution_data, size=1) + elif self.getposition(self.execution_data) and self.signal_data.close[0] < self.signal_sma[0]: + self.close(data=self.execution_data)""", + ), + "multi_timeframe": ( + """ self.execution_data = self.datas[0] + self.higher_timeframe = self.datas[1] if len(self.datas) > 1 else self.datas[0] + self.higher_sma = bt.ind.SMA(self.higher_timeframe.close, period=self.p.fast_period)""", + """ if not self.position and self.higher_timeframe.close[0] > self.higher_sma[0]: + self.buy(data=self.execution_data, size=1) + elif self.position and self.higher_timeframe.close[0] < self.higher_sma[0]: + self.close(data=self.execution_data)""", + ), + "pairs_spread": ( + """ self.leg_a = self.datas[0] + self.leg_b = self.datas[1] if len(self.datas) > 1 else self.datas[0] + self.spread = self.leg_a.close - self.leg_b.close + self.spread_mean = bt.ind.SMA(self.spread, period=self.p.fast_period)""", + """ deviation = self.spread[0] - self.spread_mean[0] + if not self.getposition(self.leg_a) and deviation < 0: + self.buy(data=self.leg_a, size=1) + if self.leg_b is not self.leg_a: + self.sell(data=self.leg_b, size=1) + elif self.getposition(self.leg_a) and deviation >= 0: + self.close(data=self.leg_a) + if self.leg_b is not self.leg_a: + self.close(data=self.leg_b)""", + ), + "order_risk": ( + """ self.signal = bt.ind.SMA(self.data.close, period=self.p.fast_period) + self.atr = bt.ind.ATR(self.data, period=max(2, self.p.fast_period)) + self.entry_price = None""", + """ if not self.position and self.data.close[0] > self.signal[0]: + self.buy(size=1) + self.entry_price = float(self.data.close[0]) + elif self.position: + stop = self.entry_price - 2.0 * float(self.atr[0]) + if self.data.close[0] < self.signal[0] or self.data.close[0] <= stop: + self.close() + self.entry_price = None""", + ), + "precomputed_ml": ( + """ if not hasattr(self.data, "signal"): + raise RuntimeError("registered dataset must expose the precomputed signal line") + self.model_signal = self.data.signal""", + """ if not self.position and self.model_signal[0] > 0: + self.buy(size=1) + elif self.position and self.model_signal[0] <= 0: + self.close()""", + ), +} + + +def _strategy_source(spec: StrategySpec) -> str: + init_body, next_body = ARCHETYPE_CODE[spec.archetype] + fast = int(spec.parameter_defaults.get("fast_period", 5)) + slow = int(spec.parameter_defaults.get("slow_period", 12)) + return f'''"""Generated by backtrader-agent from StrategySpec {spec.spec_hash}.""" +import backtrader as bt + + +class GeneratedStrategy(bt.Strategy): + params = ( + ("fast_period", {fast}), + ("slow_period", {slow}), + ) + + def __init__(self): +{init_body} + self._agent_buy_count = 0 + self._agent_sell_count = 0 + + def next(self): +{next_body} + + def notify_order(self, order): + if order.status == order.Completed: + if order.isbuy(): + self._agent_buy_count += 1 + elif order.issell(): + self._agent_sell_count += 1 +''' + + +def _pandas_custom_feed_source(dataset: Dict[str, Any]) -> str: + classes = [] + branches = [] + for index, feed in enumerate(dataset.get("feeds", [])): + if feed.get("format") != "pandas_custom_lines": + continue + canonical_columns = list(feed.get("canonical_columns", [])) + custom_lines = tuple(canonical_columns[7:]) + class_name = f"AgentPandasData{index}" + parameters = tuple((line_name, line_name) for line_name in custom_lines) + if custom_lines: + classes.append( + f"class {class_name}(bt.feeds.PandasData):\n" + f" lines = {custom_lines!r}\n" + f" params = {parameters!r}\n" + ) + else: + class_name = "bt.feeds.PandasData" + branches.append(f' if feed_name == {feed["name"]!r}:\n' f" return {class_name}\n") + body = "\n\n".join(classes) + if body: + body += "\n\n" + return ( + body + + "def _pandas_custom_feed_class(feed_name):\n" + + "".join(branches) + + ' raise RuntimeError("custom Pandas feed was not rendered for this dataset")\n' + ) + + +def _runner_source(spec: StrategySpec, dataset: Dict[str, Any]) -> str: + custom_feed_source = _pandas_custom_feed_source(dataset) + return f'''"""Controlled child-process entrypoint generated by backtrader-agent.""" +import json +import math +import os + +import backtrader as bt +import pandas as pd +from backtrader import TimeFrame + +from strategy_{spec.module_slug} import GeneratedStrategy + + +TIMEFRAMES = {{ + "Ticks": TimeFrame.Ticks, + "MicroSeconds": TimeFrame.MicroSeconds, + "Seconds": TimeFrame.Seconds, + "Minutes": TimeFrame.Minutes, + "Days": TimeFrame.Days, + "Weeks": TimeFrame.Weeks, + "Months": TimeFrame.Months, + "Years": TimeFrame.Years, +}} + + +class CanonicalBacktraderCSVData(bt.feeds.BacktraderCSVData): + """Load canonical CAS rows through Backtrader's fixed CSV parser.""" + + def _loadline(self, tokens): + native = list(tokens[:7]) + native[0] = native[0][:10] + return super()._loadline(native) + + +class CanonicalYahooCSVData(bt.feeds.YahooFinanceCSVData): + """Adapt canonical CAS rows to the offline Yahoo parser contract.""" + + def _loadline(self, tokens): + native = [ + tokens[0][:10], + tokens[1], + tokens[2], + tokens[3], + tokens[4], + tokens[4], + tokens[5], + ] + return super()._loadline(native) + + +class CanonicalMT5CSVData(bt.feeds.GenericCSVData): + """Controlled MT5 materialization adapter; input is already canonical CAS.""" + + +{custom_feed_source} + + +def _csv_feed(descriptor): + common = {{ + "dataname": descriptor["path"], + "headers": True, + "timeframe": TIMEFRAMES[descriptor["timeframe"]], + "compression": descriptor["compression"], + }} + adapter = descriptor["adapter"] + if adapter == "generic_csv": + return bt.feeds.GenericCSVData( + dtformat="%Y-%m-%dT%H:%M:%SZ", + datetime=0, + open=1, + high=2, + low=3, + close=4, + volume=5, + openinterest=6, + **common, + ) + if adapter == "backtrader_csv": + return CanonicalBacktraderCSVData(**common) + if adapter == "yahoo_csv": + return CanonicalYahooCSVData( + reverse=False, + adjclose=False, + adjvolume=False, + round=False, + **common, + ) + if adapter == "mt5_csv": + return CanonicalMT5CSVData( + dtformat="%Y-%m-%dT%H:%M:%SZ", + datetime=0, + open=1, + high=2, + low=3, + close=4, + volume=5, + openinterest=6, + **common, + ) + raise RuntimeError("CSV dataset adapter is not product-allowlisted") + + +def _pandas_feed(descriptor): + frame = pd.read_csv( + descriptor["path"], + parse_dates=["datetime"], + ) + feed_class = ( + _pandas_custom_feed_class(descriptor["name"]) + if descriptor["adapter"] == "pandas_custom_lines" + else bt.feeds.PandasData + ) + parameters = {{ + "dataname": frame, + "datetime": "datetime", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + "timeframe": TIMEFRAMES[descriptor["timeframe"]], + "compression": descriptor["compression"], + }} + return feed_class(**parameters) + + +def _load_feed(descriptor): + adapter = descriptor["adapter"] + if adapter in {{ + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + }}: + return _csv_feed(descriptor) + if adapter in {{"pandas", "pandas_custom_lines"}}: + return _pandas_feed(descriptor) + raise RuntimeError("dataset adapter is not product-allowlisted") + + +def _nested(value, *parts, default=None): + current = value + for part in parts: + if not isinstance(current, dict) or part not in current: + return default + current = current[part] + return current + + +def _execute(): + descriptors = json.loads(os.environ["BACKTRADER_AGENT_DATASETS_JSON"]) + mode = os.environ.get("BACKTRADER_AGENT_MODE", "runonce") + cerebro = bt.Cerebro(stdstats=False) + for descriptor in descriptors: + feed = _load_feed(descriptor) + transform = descriptor.get("transform") + if transform is None: + cerebro.adddata(feed, name=descriptor["name"]) + else: + parameters = transform["parameters"] + if transform["profile_id"] == "resample": + cerebro.resampledata( + feed, + name=descriptor["name"], + timeframe=TIMEFRAMES[parameters["timeframe"]], + compression=parameters["compression"], + ) + elif transform["profile_id"] == "replay": + cerebro.replaydata( + feed, + name=descriptor["name"], + timeframe=TIMEFRAMES[parameters["timeframe"]], + compression=parameters["compression"], + ) + else: + raise RuntimeError("dataset transform is not product-allowlisted") + start_cash = {float(spec.value.get("cash", 100000.0))!r} + cerebro.broker.setcash(start_cash) + cerebro.broker.setcommission(commission={float(spec.value.get("commission", 0.0))!r}) + cerebro.addstrategy(GeneratedStrategy) + cerebro.addanalyzer(bt.analyzers.TradeAnalyzer, _name="trades") + cerebro.addanalyzer(bt.analyzers.DrawDown, _name="drawdown") + cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name="sharpe") + cerebro.addanalyzer(bt.analyzers.Returns, _name="returns") + strategies = cerebro.run(runonce=(mode == "runonce")) + strategy = strategies[0] + trade = strategy.analyzers.trades.get_analysis() + drawdown = strategy.analyzers.drawdown.get_analysis() + sharpe = strategy.analyzers.sharpe.get_analysis() + returns = strategy.analyzers.returns.get_analysis() + final_value = float(cerebro.broker.getvalue()) + trade_count = int(_nested(trade, "total", "closed", default=0) or 0) + won = int(_nested(trade, "won", "total", default=0) or 0) + lost = int(_nested(trade, "lost", "total", default=0) or 0) + metrics = {{ + "bar_num": int(len(strategy)), + "buy_count": int(strategy._agent_buy_count), + "sell_count": int(strategy._agent_sell_count), + "win_count": won, + "loss_count": lost, + "trade_num": trade_count, + "final_value": final_value, + "sharpe_ratio": sharpe.get("sharperatio") if isinstance(sharpe, dict) else None, + "annual_return": float(returns.get("rnorm", 0.0) or 0.0), + "max_drawdown": float(_nested(drawdown, "max", "drawdown", default=0.0) or 0.0), + "return_rate": ((final_value / start_cash - 1.0) * 100.0) if start_cash else 0.0, + }} + for value in metrics.values(): + if isinstance(value, float) and not math.isfinite(value): + raise RuntimeError("non-finite metric") + return metrics + + +if __name__ == "__main__": + print("BACKTRADER_AGENT_RESULT=" + json.dumps({{"metrics": _execute()}}, sort_keys=True)) +''' + + +def _single_test_source(spec: StrategySpec, dataset: Dict[str, Any]) -> str: + strategy = _strategy_source(spec) + runner = _runner_source(spec, dataset).replace( + f"from strategy_{spec.module_slug} import GeneratedStrategy\n\n", "" + ) + runner = runner.replace('if __name__ == "__main__":\n', "def test_generated_strategy():\n") + runner = runner.replace( + ' print("BACKTRADER_AGENT_RESULT=" + json.dumps({"metrics": _execute()}, sort_keys=True))', + " metrics = _execute()\n" + ' assert metrics["final_value"] is not None\n' + ' print("BACKTRADER_AGENT_RESULT=" + json.dumps({"metrics": metrics}, sort_keys=True))', + ) + return strategy + "\n\n" + runner + + +def _config_source(spec: StrategySpec, dataset: Dict[str, Any]) -> str: + return f"""schema_version: generated-config-v1 +strategy: + name: {spec.value['name']} + slug: {spec.slug} + archetype: {spec.archetype} +dataset_id: {dataset['dataset_id']} +dataset_manifest_hash: {dataset['manifest_hash']} +cash: {float(spec.value.get('cash', 100000.0))} +commission: {float(spec.value.get('commission', 0.0))} +execution_modes: + - runonce + - runnext +""" + + +class ArtifactRenderer: + def __init__(self, state_root: Path) -> None: + self.state_root = Path(state_root) + + def render( + self, session_id: str, spec: StrategySpec, dataset: Dict[str, Any] + ) -> Dict[str, Any]: + if not SESSION_RE.fullmatch(session_id): + raise AgentError("BTAG-SESSION-ID", "session ID is malformed") + if dataset.get("dataset_id") != spec.value["dataset_id"]: + raise AgentError("BTAG-RENDER-DATASET", "StrategySpec dataset ID does not match") + revision = hash_object( + { + "spec_hash": spec.spec_hash, + "dataset_hash": dataset.get("manifest_hash"), + "renderer": "scaffold-v1", + } + )[:20] + draft_root = self.state_root / "sessions" / session_id / "drafts" / revision + if spec.profile == "python_bundle": + file_contents = { + "config.yaml": _config_source(spec, dataset).encode("utf-8"), + f"strategy_{spec.module_slug}.py": _strategy_source(spec).encode("utf-8"), + "run.py": _runner_source(spec, dataset).encode("utf-8"), + } + roles = { + "config.yaml": "config", + f"strategy_{spec.module_slug}.py": "strategy", + "run.py": "runner", + } + entrypoint = "run.py" + else: + name = f"test_{spec.slug}.py" + file_contents = {name: _single_test_source(spec, dataset).encode("utf-8")} + roles = {name: "strategy"} + entrypoint = name + draft_root.mkdir(parents=True, exist_ok=True) + files: List[Dict[str, Any]] = [] + for relative_path, content in sorted(file_contents.items()): + destination = draft_root / relative_path + if destination.exists() and destination.read_bytes() != content: + raise AgentError("BTAG-DRAFT-CONFLICT", "draft revision has conflicting bytes") + if not destination.exists(): + atomic_write_bytes(destination, content, create_only=True) + files.append( + { + "path": relative_path, + "role": roles[relative_path], + "sha256": sha256_bytes(content), + "bytes": len(content), + } + ) + portable = { + "schema_version": "artifact-manifest-v1", + "artifact_id": f"artifact-{revision}", + "slug": spec.slug, + "spec_hash": spec.spec_hash, + "dataset_id": dataset["dataset_id"], + "output_profile": spec.profile, + "files": files, + "extensions": { + "backtrader_agent": { + "generated_by": "backtrader-agent", + "renderer_version": "scaffold-v1", + "session_id": session_id, + "archetype": spec.archetype, + "dataset_manifest_hash": dataset["manifest_hash"], + "entrypoint": entrypoint, + } + }, + } + portable["artifact_hash"] = hash_object(portable) + manifest_path = draft_root / "artifact-manifest.json" + if manifest_path.exists(): + existing = manifest_path.read_bytes() + expected = canonical_json_bytes(portable) + b"\n" + if existing != expected: + raise AgentError("BTAG-DRAFT-MANIFEST", "draft manifest conflicts") + else: + atomic_write_json(manifest_path, portable, create_only=True) + state_root = self.state_root.resolve() + resolved_draft = draft_root.resolve(strict=True) + try: + draft_relative = resolved_draft.relative_to(state_root).as_posix() + except ValueError as exc: + raise AgentError( + "BTAG-DRAFT-PATH", "private draft must remain inside state root" + ) from exc + record_payload: Dict[str, Any] = { + "schema_version": "artifact-provenance-v1", + "generated_by": "backtrader-agent", + "renderer_version": "scaffold-v1", + "session_id": session_id, + "artifact_hash": portable["artifact_hash"], + "spec_hash": spec.spec_hash, + "dataset_id": dataset["dataset_id"], + "dataset_manifest_hash": dataset["manifest_hash"], + "draft_relative_path": draft_relative, + "manifest_sha256": sha256_bytes(manifest_path.read_bytes()), + } + record_payload["record_hash"] = hash_object(record_payload) + record = { + **record_payload, + "signature": TokenAuthority(self.state_root).sign_product_record(record_payload), + } + record_path = ( + self.state_root + / "sessions" + / session_id + / "artifacts" + / f"{portable['artifact_hash']}.json" + ) + if record_path.exists(): + if read_json(record_path) != record: + raise AgentError( + "BTAG-PROVENANCE-CONFLICT", + "artifact provenance record conflicts with the rendered bytes", + ) + else: + atomic_write_json(record_path, record, create_only=True) + return { + **portable, + "_draft_path": str(draft_root), + "_artifact_record_hash": record_payload["record_hash"], + } diff --git a/src/backtrader_agent/sessions.py b/src/backtrader_agent/sessions.py new file mode 100644 index 0000000..cc72bdb --- /dev/null +++ b/src/backtrader_agent/sessions.py @@ -0,0 +1,304 @@ +"""Explicit session state, append-only hash chain, and safe recovery.""" + +import json +import os +import re +import time +from datetime import datetime, timezone +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +from .canonical import ( + atomic_write_bytes, + atomic_write_json, + canonical_json_bytes, + hash_object, + read_json, +) +from .errors import AgentError + +SESSION_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_-]{1,79}$") +TERMINAL = {"COMPLETED", "CANCELLED", "ARCHIVED"} +TRANSITIONS = { + "NEW": {"DATA_READY", "CANCELLED"}, + "DATA_READY": {"SPEC_DRAFT", "NEEDS_REVALIDATION", "CANCELLED"}, + "SPEC_DRAFT": {"SPEC_APPROVED", "CANCELLED"}, + "SPEC_APPROVED": {"SOURCES_SELECTED", "CANCELLED"}, + "SOURCES_SELECTED": {"DRAFT_READY", "CANCELLED"}, + "DRAFT_READY": {"VALIDATED", "NEEDS_REVALIDATION", "CANCELLED"}, + "VALIDATED": {"APPLY_PREPARED", "NEEDS_REVALIDATION", "CANCELLED"}, + "APPLY_PREPARED": {"APPLIED", "NEEDS_REVALIDATION", "CANCELLED"}, + "APPLIED": {"RUN_APPROVED", "NEEDS_REVALIDATION", "CANCELLED"}, + "RUN_APPROVED": {"RUNNING", "NEEDS_REVALIDATION", "CANCELLED"}, + "RUNNING": {"PASSED", "FAILED", "PAUSED"}, + "FAILED": {"REPAIRING", "CANCELLED"}, + "REPAIRING": {"DRAFT_READY", "CANCELLED"}, + "PASSED": {"REPORTED", "CANCELLED"}, + "REPORTED": {"COMPLETED", "CANCELLED"}, + "PAUSED": {"RUNNING", "NEEDS_REVALIDATION", "CANCELLED"}, + "NEEDS_REVALIDATION": {"DATA_READY", "DRAFT_READY", "CANCELLED"}, + "COMPLETED": {"ARCHIVED"}, + "CANCELLED": {"ARCHIVED"}, + "ARCHIVED": set(), +} + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat().replace("+00:00", "Z") + + +class SessionStore: + def __init__(self, state_root: Path) -> None: + self.state_root = Path(state_root) + self.sessions_root = self.state_root / "sessions" + + def _directory(self, session_id: str) -> Path: + if not SESSION_RE.fullmatch(session_id): + raise AgentError("BTAG-SESSION-ID", "session ID is malformed") + return self.sessions_root / session_id + + def _manifest_path(self, session_id: str) -> Path: + return self._directory(session_id) / "manifest.json" + + def _journal_path(self, session_id: str) -> Path: + return self._directory(session_id) / "journal.jsonl" + + def create(self, session_id: str, *, parent_session_id: Optional[str] = None) -> Dict[str, Any]: + directory = self._directory(session_id) + manifest_path = directory / "manifest.json" + if manifest_path.exists(): + existing = read_json(manifest_path) + if existing.get("session_id") == session_id: + return existing + raise AgentError("BTAG-SESSION-CONFLICT", "session path contains another session") + directory.mkdir(parents=True, exist_ok=True) + journal = directory / "journal.jsonl" + atomic_write_bytes(journal, b"", create_only=True) + manifest: Dict[str, Any] = { + "schema_version": "agent-session-manifest-v1", + "session_id": session_id, + "parent_session_id": parent_session_id, + "product": "backtrader-agent", + "product_version": "0.1.0", + "state": "NEW", + "state_revision": 0, + "last_sequence": 0, + "last_event_hash": "0" * 64, + "journal": "journal.jsonl", + "allowed_next_actions": sorted(TRANSITIONS["NEW"]), + "artifacts": {}, + "approvals": {"apply": None, "execute": None}, + "diagnostics": [], + } + manifest["checkpoint_hash"] = hash_object( + {key: value for key, value in manifest.items() if key != "checkpoint_hash"} + ) + atomic_write_json(manifest_path, manifest, create_only=True) + return manifest + + def load(self, session_id: str) -> Dict[str, Any]: + path = self._manifest_path(session_id) + if not path.exists(): + raise AgentError("BTAG-SESSION-UNKNOWN", "session does not exist") + manifest = read_json(path) + expected = manifest.get("checkpoint_hash") + actual = hash_object( + {key: value for key, value in manifest.items() if key != "checkpoint_hash"} + ) + if expected != actual: + raise AgentError("BTAG-SESSION-CHECKPOINT", "session checkpoint hash is invalid") + return manifest + + def _append(self, session_id: str, event: Dict[str, Any]) -> None: + journal = self._journal_path(session_id) + data = canonical_json_bytes(event) + b"\n" + descriptor = os.open(str(journal), os.O_WRONLY | os.O_APPEND) + try: + os.write(descriptor, data) + os.fsync(descriptor) + finally: + os.close(descriptor) + + def transition( + self, + session_id: str, + to_state: str, + action_type: str, + input_hashes: Dict[str, str], + *, + idempotency_key: Optional[str] = None, + approval_token_id: Optional[str] = None, + effect_references: Optional[Dict[str, str]] = None, + ) -> Dict[str, Any]: + manifest = self.load(session_id) + from_state = manifest["state"] + if to_state not in TRANSITIONS.get(from_state, set()): + raise AgentError( + "BTAG-STATE-TRANSITION", + "requested session state transition is not legal", + details={"from": from_state, "to": to_state}, + ) + normalized_inputs = {str(key): str(value) for key, value in input_hashes.items()} + effects = {str(key): str(value) for key, value in (effect_references or {}).items()} + sequence = int(manifest["last_sequence"]) + 1 + event: Dict[str, Any] = { + "schema_version": "agent-event-v1", + "session_id": session_id, + "sequence": sequence, + "event_type": "STATE_TRANSITION", + "action_type": action_type, + "from_state": from_state, + "to_state": to_state, + "normalized_input_hashes": dict(sorted(normalized_inputs.items())), + "idempotency_key": idempotency_key, + "approval_token_id": approval_token_id, + "effect_references": dict(sorted(effects.items())), + "previous_event_hash": manifest["last_event_hash"], + "status": "committed", + "timestamp": _now(), + } + event["event_hash"] = hash_object(event) + self._append(session_id, event) + manifest["state"] = to_state + manifest["state_revision"] = int(manifest["state_revision"]) + 1 + manifest["last_sequence"] = sequence + manifest["last_event_hash"] = event["event_hash"] + manifest["allowed_next_actions"] = sorted(TRANSITIONS[to_state]) + manifest["artifacts"].update(effects) + if approval_token_id and to_state == "APPLIED": + manifest["approvals"]["apply"] = approval_token_id + if approval_token_id and to_state == "RUN_APPROVED": + manifest["approvals"]["execute"] = approval_token_id + manifest["checkpoint_hash"] = hash_object( + {key: value for key, value in manifest.items() if key != "checkpoint_hash"} + ) + atomic_write_json(self._manifest_path(session_id), manifest) + return manifest + + def _parse_valid_prefix(self, session_id: str, data: bytes) -> Tuple[List[Dict[str, Any]], int]: + events: List[Dict[str, Any]] = [] + offset = 0 + expected_sequence = 1 + expected_previous = "0" * 64 + for line in data.splitlines(keepends=True): + line_start = offset + offset += len(line) + if not line.endswith(b"\n"): + return events, line_start + try: + event = json.loads(line.decode("utf-8")) + except (UnicodeDecodeError, json.JSONDecodeError): + return events, line_start + stored_hash = event.get("event_hash") + actual_hash = hash_object( + {key: value for key, value in event.items() if key != "event_hash"} + ) + if ( + event.get("session_id") != session_id + or event.get("sequence") != expected_sequence + or event.get("previous_event_hash") != expected_previous + or stored_hash != actual_hash + ): + return events, line_start + if event.get("to_state") not in TRANSITIONS.get(event.get("from_state"), set()): + return events, line_start + if events and event.get("from_state") != events[-1].get("to_state"): + return events, line_start + if not events and event.get("from_state") != "NEW": + return events, line_start + events.append(event) + expected_sequence += 1 + expected_previous = stored_hash + return events, len(data) + + def recover(self, session_id: str) -> Dict[str, Any]: + directory = self._directory(session_id) + journal = directory / "journal.jsonl" + if not journal.exists(): + raise AgentError("BTAG-SESSION-JOURNAL", "session journal is missing") + data = journal.read_bytes() + events, valid_bytes = self._parse_valid_prefix(session_id, data) + if valid_bytes < len(data): + suffix = data[valid_bytes:] + corrupt = directory / f"journal.corrupt.{time.time_ns()}.jsonl" + atomic_write_bytes(corrupt, suffix, create_only=True) + atomic_write_bytes(journal, data[:valid_bytes]) + previous = read_json(self._manifest_path(session_id)) + state = events[-1]["to_state"] if events else "NEW" + last_hash = events[-1]["event_hash"] if events else "0" * 64 + artifacts: Dict[str, str] = {} + approvals = {"apply": None, "execute": None} + for event in events: + artifacts.update(event.get("effect_references", {})) + token_id = event.get("approval_token_id") + if token_id and event.get("to_state") == "APPLIED": + approvals["apply"] = token_id + if token_id and event.get("to_state") == "RUN_APPROVED": + approvals["execute"] = token_id + manifest: Dict[str, Any] = { + "schema_version": "agent-session-manifest-v1", + "session_id": session_id, + "parent_session_id": previous.get("parent_session_id"), + "product": "backtrader-agent", + "product_version": "0.1.0", + "state": state, + "state_revision": len(events), + "last_sequence": len(events), + "last_event_hash": last_hash, + "journal": "journal.jsonl", + "allowed_next_actions": sorted(TRANSITIONS[state]), + "artifacts": artifacts, + "approvals": approvals, + "diagnostics": previous.get("diagnostics", []), + } + manifest["checkpoint_hash"] = hash_object( + {key: value for key, value in manifest.items() if key != "checkpoint_hash"} + ) + atomic_write_json(self._manifest_path(session_id), manifest) + if state == "RUNNING": + manifest = self.transition( + session_id, + "PAUSED", + "session-recover", + {"journal": last_hash}, + ) + return manifest + + def cancel(self, session_id: str) -> Dict[str, Any]: + manifest = self.load(session_id) + if manifest["state"] in TERMINAL: + raise AgentError("BTAG-STATE-TERMINAL", "terminal session cannot be cancelled") + return self.transition(session_id, "CANCELLED", "session-cancel", {}) + + def archive(self, session_id: str) -> Dict[str, Any]: + manifest = self.load(session_id) + if manifest["state"] not in {"COMPLETED", "CANCELLED"}: + raise AgentError( + "BTAG-STATE-ARCHIVE", "only completed or cancelled sessions may archive" + ) + return self.transition(session_id, "ARCHIVED", "session-archive", {}) + + def list(self) -> List[Dict[str, Any]]: + """Return compact summaries of every session manifest on disk. + + Corrupt manifests are skipped so one damaged session cannot hide the + rest of the registry from a listing command. + """ + + if not self.sessions_root.is_dir(): + return [] + summaries: List[Dict[str, Any]] = [] + for path in sorted(self.sessions_root.glob("*/manifest.json")): + try: + manifest = read_json(path) + except (OSError, ValueError): + continue + summaries.append( + { + "session_id": manifest.get("session_id"), + "state": manifest.get("state"), + "state_revision": manifest.get("state_revision"), + "last_sequence": manifest.get("last_sequence"), + } + ) + return summaries diff --git a/src/backtrader_agent/tokens.py b/src/backtrader_agent/tokens.py new file mode 100644 index 0000000..929fde7 --- /dev/null +++ b/src/backtrader_agent/tokens.py @@ -0,0 +1,635 @@ +"""Short-lived, locally signed, hash-bound capability tokens.""" + +import hmac +import os +import re +import secrets +import time +from contextlib import contextmanager +from pathlib import Path +from typing import Any, Dict, Iterator, Optional + +from .canonical import ( + atomic_write_bytes, + atomic_write_json, + canonical_json_bytes, + hash_object, + read_json, +) +from .errors import AgentError + +TOKEN_KINDS = {"validation", "change", "run"} +ACTION_TOKEN_KINDS = {"change", "run"} +REQUIRED_BINDINGS = { + "validation": { + "artifact_record_hash", + "dataset_hash", + "dataset_id", + "engine_hash", + "environment_hash", + "session_id", + "spec_hash", + }, + "change": { + "artifact_hash", + "artifact_record_hash", + "change_manifest_hash", + "dataset_hash", + "dataset_id", + "session_id", + "spec_hash", + "validation_token_hash", + "validation_token_id", + }, + "run": { + "applied_artifact_hash", + "applied_record_hash", + "artifact_hash", + "artifact_record_hash", + "change_manifest_hash", + "dataset_hash", + "dataset_id", + "mode", + "session_id", + "spec_hash", + "validation_token_hash", + "validation_token_id", + }, +} +APPROVAL_REQUEST_RE = re.compile(r"^aprq-[0-9a-f]{24}$") +EFFECT_ID_RE = re.compile(r"^[0-9a-f]{64}$") +HASH_RE = re.compile(r"^[0-9a-f]{64}$") +SESSION_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_-]{1,79}$") +BOUND_RECORD_KINDS = { + "prepared-change": "prepared-change-record-v1", + "applied-artifact": "applied-artifact-record-v1", +} +APPROVAL_SESSION_STATES = { + "change": "APPLY_PREPARED", + "run": "APPLIED", +} + + +class TokenAuthority: + def __init__(self, state_root: Path) -> None: + self.state_root = Path(state_root) + self.secret_path = self.state_root / "token-secret.key" + self.approval_root = self.state_root / "approvals" + + def _secret(self) -> bytes: + if not self.secret_path.exists(): + secret = secrets.token_bytes(32) + atomic_write_bytes(self.secret_path, secret, create_only=True) + try: + self.secret_path.chmod(0o600) + except OSError: + pass + secret = self.secret_path.read_bytes() + if len(secret) != 32: + raise AgentError("BTAG-TOKEN-SECRET", "local token secret has invalid length") + return secret + + def _signature(self, payload: Dict[str, Any]) -> str: + return hmac.new(self._secret(), canonical_json_bytes(payload), "sha256").hexdigest() + + def sign_product_record(self, record: Dict[str, Any]) -> str: + """Seal an internal product record with a domain-separated local signature.""" + + return self._signature({"domain": "backtrader-agent-product-record-v1", "record": record}) + + def verify_product_record(self, record: Dict[str, Any]) -> Dict[str, Any]: + signature = record.get("signature") + payload = {key: value for key, value in record.items() if key != "signature"} + if not isinstance(signature, str) or not hmac.compare_digest( + signature, self.sign_product_record(payload) + ): + raise AgentError( + "BTAG-PROVENANCE-SIGNATURE", + "product-generated artifact record signature is invalid", + ) + return payload + + def _bound_record_path(self, kind: str, session_id: str, subject_hash: str) -> Path: + if kind not in BOUND_RECORD_KINDS: + raise AgentError("BTAG-RECORD-KIND", "bound product record kind is not allowlisted") + if not SESSION_RE.fullmatch(session_id) or not HASH_RE.fullmatch(subject_hash): + raise AgentError("BTAG-RECORD-ID", "bound product record identifiers are malformed") + return self.state_root / "sessions" / session_id / "records" / kind / f"{subject_hash}.json" + + def store_bound_record( + self, + kind: str, + session_id: str, + subject_hash: str, + payload: Dict[str, Any], + ) -> Dict[str, Any]: + """Persist an immutable, signed product record for an approval subject.""" + + if "record_hash" in payload or "signature" in payload: + raise AgentError( + "BTAG-RECORD-FIELDS", + "bound product record payload contains reserved fields", + ) + portable = { + **payload, + "schema_version": BOUND_RECORD_KINDS.get(kind), + "record_kind": kind, + "generated_by": "backtrader-agent", + "session_id": session_id, + "subject_hash": subject_hash, + } + if portable["schema_version"] is None: + raise AgentError("BTAG-RECORD-KIND", "bound product record kind is not allowlisted") + portable["record_hash"] = hash_object(portable) + record = { + **portable, + "signature": self.sign_product_record(portable), + } + path = self._bound_record_path(kind, session_id, subject_hash) + if path.exists(): + if path.is_symlink() or not path.is_file() or read_json(path) != record: + raise AgentError( + "BTAG-RECORD-CONFLICT", + "bound product record conflicts with immutable product state", + ) + else: + atomic_write_json(path, record, create_only=True) + return portable + + def load_bound_record( + self, + kind: str, + session_id: str, + subject_hash: str, + ) -> Dict[str, Any]: + """Load and authenticate a product-owned approval/apply record.""" + + path = self._bound_record_path(kind, session_id, subject_hash) + if not path.is_file() or path.is_symlink(): + raise AgentError( + "BTAG-RECORD-MISSING", + "approval subject has no product-owned signed record", + ) + payload = self.verify_product_record(read_json(path)) + expected_hash = payload.get("record_hash") + actual_hash = hash_object( + {key: value for key, value in payload.items() if key != "record_hash"} + ) + if ( + expected_hash != actual_hash + or payload.get("schema_version") != BOUND_RECORD_KINDS[kind] + or payload.get("record_kind") != kind + or payload.get("generated_by") != "backtrader-agent" + or payload.get("session_id") != session_id + or payload.get("subject_hash") != subject_hash + ): + raise AgentError( + "BTAG-RECORD-BINDING", + "bound product record is inconsistent with its approval subject", + ) + return payload + + def _validate_approval_context( + self, + kind: str, + subject_hash: str, + bindings: Dict[str, str], + ) -> None: + """Recompute approval context from signed records and session state.""" + + from .sessions import SessionStore + + if kind == "run" and bindings.get("mode") not in {"runonce", "runnext"}: + raise AgentError("BTAG-RUN-MODE", "mode must be runonce or runnext") + session_id = bindings["session_id"] + session = SessionStore(self.state_root).load(session_id) + expected_state = APPROVAL_SESSION_STATES[kind] + if session.get("state") != expected_state: + raise AgentError( + "BTAG-APPROVAL-SESSION", + "session is not ready for this approval", + details={"expected_state": expected_state, "state": session.get("state")}, + ) + artifacts = session.get("artifacts", {}) + if kind == "change": + record = self.load_bound_record("prepared-change", session_id, subject_hash) + manifest = record.get("change_manifest") + if not isinstance(manifest, dict): + raise AgentError( + "BTAG-APPROVAL-RECORD", + "prepared change record has no canonical manifest", + ) + expected_bindings = { + "artifact_hash": manifest.get("artifact_hash"), + "artifact_record_hash": manifest.get("artifact_record_hash"), + "change_manifest_hash": manifest.get("manifest_hash"), + "dataset_hash": manifest.get("dataset_manifest_hash"), + "dataset_id": manifest.get("dataset_id"), + "session_id": manifest.get("session_id"), + "spec_hash": manifest.get("spec_hash"), + "validation_token_hash": manifest.get("validation_token_hash"), + "validation_token_id": manifest.get("validation_token_id"), + } + expected_session = { + "artifact_hash": manifest.get("artifact_hash"), + "artifact_record_hash": manifest.get("artifact_record_hash"), + "approved_spec_hash": manifest.get("spec_hash"), + "change_manifest_hash": manifest.get("manifest_hash"), + "dataset_id": manifest.get("dataset_id"), + "dataset_manifest_hash": manifest.get("dataset_manifest_hash"), + "validation_token_hash": manifest.get("validation_token_hash"), + "validation_token_id": manifest.get("validation_token_id"), + } + if ( + manifest.get("manifest_hash") != subject_hash + or record.get("validation_token_hash") != manifest.get("validation_token_hash") + or any(bindings.get(key) != value for key, value in expected_bindings.items()) + or any(artifacts.get(key) != value for key, value in expected_session.items()) + ): + raise AgentError( + "BTAG-APPROVAL-BINDING", + "change approval does not match the signed prepared change and session", + ) + return + + applied_hash = bindings["applied_artifact_hash"] + record = self.load_bound_record("applied-artifact", session_id, applied_hash) + applied = record.get("applied_artifact") + if not isinstance(applied, dict): + raise AgentError( + "BTAG-APPROVAL-RECORD", + "applied artifact record has no canonical artifact", + ) + expected_bindings = { + "applied_artifact_hash": applied.get("applied_artifact_hash"), + "applied_record_hash": record.get("record_hash"), + "artifact_hash": applied.get("artifact_hash"), + "artifact_record_hash": applied.get("artifact_record_hash"), + "change_manifest_hash": applied.get("change_manifest_hash"), + "dataset_hash": applied.get("dataset_manifest_hash"), + "dataset_id": applied.get("dataset_id"), + "mode": bindings.get("mode"), + "session_id": applied.get("session_id"), + "spec_hash": applied.get("spec_hash"), + "validation_token_hash": applied.get("validation_token_hash"), + "validation_token_id": applied.get("validation_token_id"), + } + expected_session = { + "applied_artifact_hash": applied.get("applied_artifact_hash"), + "applied_record_hash": record.get("record_hash"), + "artifact_hash": applied.get("artifact_hash"), + "artifact_record_hash": applied.get("artifact_record_hash"), + "approved_spec_hash": applied.get("spec_hash"), + "change_manifest_hash": applied.get("change_manifest_hash"), + "dataset_id": applied.get("dataset_id"), + "dataset_manifest_hash": applied.get("dataset_manifest_hash"), + "validation_token_hash": applied.get("validation_token_hash"), + "validation_token_id": applied.get("validation_token_id"), + } + expected_subject = hash_object( + { + "applied_artifact_hash": applied.get("applied_artifact_hash"), + "dataset_manifest_hash": applied.get("dataset_manifest_hash"), + "validation_token_id": applied.get("validation_token_id"), + "mode": bindings.get("mode"), + "profile": "controlled-runner-v1", + } + ) + if ( + expected_subject != subject_hash + or any(bindings.get(key) != value for key, value in expected_bindings.items()) + or any(artifacts.get(key) != value for key, value in expected_session.items()) + ): + raise AgentError( + "BTAG-APPROVAL-BINDING", + "run approval does not match the signed applied artifact and session", + ) + + @contextmanager + def _approval_lock(self, request_id: str) -> Iterator[None]: + if not APPROVAL_REQUEST_RE.fullmatch(request_id): + raise AgentError("BTAG-APPROVAL-ID", "approval request ID is malformed") + lock_path = self.approval_root / f"{request_id}.lock" + lock_path.parent.mkdir(parents=True, exist_ok=True) + try: + descriptor = os.open( + str(lock_path), + os.O_CREAT | os.O_EXCL | os.O_WRONLY, + 0o600, + ) + except FileExistsError as exc: + raise AgentError( + "BTAG-APPROVAL-BUSY", "approval request is already being updated" + ) from exc + try: + os.close(descriptor) + yield + finally: + try: + lock_path.unlink() + except FileNotFoundError: + pass + + def _approval_path(self, request_id: str) -> Path: + if not APPROVAL_REQUEST_RE.fullmatch(request_id): + raise AgentError("BTAG-APPROVAL-ID", "approval request ID is malformed") + return self.approval_root / f"{request_id}.json" + + @staticmethod + def _validate_bindings(kind: str, bindings: Dict[str, str]) -> None: + if kind not in TOKEN_KINDS: + raise AgentError("BTAG-TOKEN-KIND", "token kind is not allowlisted") + missing = REQUIRED_BINDINGS[kind] - set(bindings) + if missing: + raise AgentError( + "BTAG-TOKEN-BINDING", + "required token bindings are missing", + details={"missing": sorted(missing)}, + ) + + def issue_validation( + self, + subject_hash: str, + bindings: Dict[str, str], + *, + ttl_seconds: int = 900, + ) -> Dict[str, Any]: + if ttl_seconds < 1 or ttl_seconds > 3600: + raise AgentError("BTAG-TOKEN-TTL", "token TTL must be between 1 and 3600 seconds") + self._validate_bindings("validation", bindings) + now = int(time.time()) + payload: Dict[str, Any] = { + "schema_version": "action-token-v1", + "token_id": f"tok-{secrets.token_hex(12)}", + "kind": "validation", + "subject_hash": subject_hash, + "bindings": dict(sorted(bindings.items())), + "issuer": "deterministic-validator", + "issued_at": now, + "expires_at": now + ttl_seconds, + } + payload["signature"] = self._signature(payload) + return payload + + def issue( + self, + kind: str, + subject_hash: str, + bindings: Dict[str, str], + *, + approval: str, + ttl_seconds: int = 900, + ) -> Dict[str, Any]: + """Compatibility shim restricted to deterministic validation tokens. + + Action tokens must come from ``prepare_approval`` then ``grant_approval``; + accepting a caller-provided label for change/run was not an approval boundary. + """ + + if kind != "validation" or approval != "validator": + raise AgentError( + "BTAG-APPROVAL-REQUIRED", + "change and run tokens require a persisted local approval request", + ) + return self.issue_validation(subject_hash, bindings, ttl_seconds=ttl_seconds) + + def prepare_approval( + self, + kind: str, + subject_hash: str, + bindings: Dict[str, str], + *, + ttl_seconds: int = 900, + ) -> Dict[str, Any]: + if kind not in ACTION_TOKEN_KINDS: + raise AgentError( + "BTAG-APPROVAL-KIND", "only change or run actions may request approval" + ) + if ttl_seconds < 1 or ttl_seconds > 3600: + raise AgentError("BTAG-TOKEN-TTL", "token TTL must be between 1 and 3600 seconds") + normalized_bindings = {str(key): str(value) for key, value in bindings.items()} + self._validate_bindings(kind, normalized_bindings) + self._validate_approval_context(kind, subject_hash, normalized_bindings) + now = int(time.time()) + request: Dict[str, Any] = { + "schema_version": "approval-request-v1", + "request_id": f"aprq-{secrets.token_hex(12)}", + "kind": kind, + "subject_hash": subject_hash, + "bindings": dict(sorted(normalized_bindings.items())), + "state": "PENDING", + "created_at": now, + "expires_at": now + ttl_seconds, + } + request["request_hash"] = hash_object(request) + atomic_write_json( + self._approval_path(request["request_id"]), + request, + create_only=True, + ) + return request + + def grant_approval( + self, + request_id: str, + *, + approver: str, + confirmed: bool, + ) -> Dict[str, Any]: + if not confirmed: + raise AgentError( + "BTAG-APPROVAL-CONFIRM", "local approval requires explicit confirmation" + ) + if not approver.strip(): + raise AgentError("BTAG-APPROVAL-ACTOR", "approver identity is required") + path = self._approval_path(request_id) + with self._approval_lock(request_id): + if not path.is_file(): + raise AgentError("BTAG-APPROVAL-NOT-FOUND", "approval request does not exist") + request = read_json(path) + portable = {key: value for key, value in request.items() if key != "request_hash"} + if hash_object(portable) != request.get("request_hash"): + raise AgentError("BTAG-APPROVAL-HASH", "approval request hash is invalid") + if request.get("state") != "PENDING": + raise AgentError("BTAG-APPROVAL-STATE", "approval request is no longer pending") + bindings = request.get("bindings") + if not isinstance(bindings, dict): + raise AgentError("BTAG-APPROVAL-BINDING", "approval bindings are malformed") + normalized_bindings = {str(key): str(value) for key, value in bindings.items()} + self._validate_bindings(str(request.get("kind")), normalized_bindings) + self._validate_approval_context( + str(request.get("kind")), + str(request.get("subject_hash")), + normalized_bindings, + ) + now = int(time.time()) + if int(request.get("expires_at", 0)) < now: + request["state"] = "EXPIRED" + request["expired_at"] = now + request["request_hash"] = hash_object( + {key: value for key, value in request.items() if key != "request_hash"} + ) + atomic_write_json(path, request) + raise AgentError("BTAG-APPROVAL-EXPIRED", "approval request has expired") + approval_id = f"approval-{secrets.token_hex(12)}" + token: Dict[str, Any] = { + "schema_version": "action-token-v1", + "token_id": f"tok-{secrets.token_hex(12)}", + "kind": request["kind"], + "subject_hash": request["subject_hash"], + "bindings": request["bindings"], + "approval_request_id": request_id, + "approval_id": approval_id, + "approver_hash": hash_object({"approver": approver.strip()}), + "issued_at": now, + "expires_at": request["expires_at"], + } + token["signature"] = self._signature(token) + request.update( + { + "state": "ISSUED", + "approval_id": approval_id, + "approver_hash": token["approver_hash"], + "token_id": token["token_id"], + "token_hash": hash_object(token), + "token": token, + "approved_at": now, + } + ) + request["request_hash"] = hash_object( + {key: value for key, value in request.items() if key != "request_hash"} + ) + atomic_write_json(path, request) + if request["kind"] == "run": + from .sessions import SessionStore + + try: + SessionStore(self.state_root).transition( + request["bindings"]["session_id"], + "RUN_APPROVED", + "run-approve", + { + "approval_request": request["request_hash"], + "run_subject": request["subject_hash"], + }, + approval_token_id=token["token_id"], + effect_references={"run_approval_id": approval_id}, + ) + except AgentError: + request["state"] = "REVOKED" + request["revoked_at"] = int(time.time()) + request["request_hash"] = hash_object( + {key: value for key, value in request.items() if key != "request_hash"} + ) + atomic_write_json(path, request) + raise + return { + "schema_version": "approval-grant-v1", + "approval_id": approval_id, + "request_id": request_id, + "token": token, + } + + def _action_record(self, token: Dict[str, Any]) -> Dict[str, Any]: + request_id = token.get("approval_request_id") + if not isinstance(request_id, str): + raise AgentError( + "BTAG-APPROVAL-REQUIRED", "action token has no persisted approval request" + ) + path = self._approval_path(request_id) + if not path.is_file(): + raise AgentError("BTAG-APPROVAL-NOT-FOUND", "persisted approval record does not exist") + record = read_json(path) + portable = {key: value for key, value in record.items() if key != "request_hash"} + if hash_object(portable) != record.get("request_hash"): + raise AgentError("BTAG-APPROVAL-HASH", "approval record hash is invalid") + if record.get("token_hash") != hash_object(token): + raise AgentError("BTAG-APPROVAL-TOKEN", "token does not match its approval record") + if record.get("token") != token: + raise AgentError("BTAG-APPROVAL-TOKEN", "persisted token bytes do not match") + return record + + def verify( + self, + token: Dict[str, Any], + *, + kind: str, + subject_hash: str, + required_bindings: Optional[Dict[str, str]] = None, + ) -> Dict[str, Any]: + if not isinstance(token, dict): + raise AgentError("BTAG-TOKEN-TYPE", "token must be an object") + payload = {key: value for key, value in token.items() if key != "signature"} + signature = token.get("signature") + if not isinstance(signature, str) or not hmac.compare_digest( + signature, self._signature(payload) + ): + raise AgentError("BTAG-TOKEN-SIGNATURE", "token signature is invalid") + if token.get("kind") != kind: + raise AgentError("BTAG-TOKEN-KIND", "token cannot be reused for another action") + if token.get("subject_hash") != subject_hash: + raise AgentError("BTAG-TOKEN-BINDING", "token subject hash no longer matches") + if int(token.get("expires_at", 0)) < int(time.time()): + raise AgentError("BTAG-TOKEN-EXPIRED", "token has expired") + bindings = token.get("bindings", {}) + for key, expected in (required_bindings or {}).items(): + if bindings.get(key) != expected: + raise AgentError("BTAG-TOKEN-BINDING", "token context no longer matches") + if kind in ACTION_TOKEN_KINDS: + record = self._action_record(token) + if record.get("kind") != kind or record.get("subject_hash") != subject_hash: + raise AgentError( + "BTAG-APPROVAL-BINDING", "approval record no longer matches the action" + ) + if record.get("state") not in {"ISSUED", "CONSUMED"}: + raise AgentError("BTAG-APPROVAL-STATE", "approval is not usable") + return token + + def require_issued(self, token: Dict[str, Any]) -> None: + record = self._action_record(token) + if record.get("state") != "ISSUED": + raise AgentError("BTAG-TOKEN-CONSUMED", "action token was already consumed or revoked") + + def consume(self, token: Dict[str, Any], *, effect_id: str) -> Dict[str, Any]: + if not EFFECT_ID_RE.fullmatch(effect_id): + raise AgentError("BTAG-TOKEN-EFFECT", "effect ID must be a SHA-256 hash") + request_id = token.get("approval_request_id") + if not isinstance(request_id, str): + raise AgentError( + "BTAG-APPROVAL-REQUIRED", "action token has no persisted approval request" + ) + path = self._approval_path(request_id) + with self._approval_lock(request_id): + record = self._action_record(token) + if record.get("state") == "CONSUMED": + if record.get("effect_id") == effect_id: + return record + raise AgentError( + "BTAG-TOKEN-CONSUMED", + "action token was already consumed by another effect", + ) + if record.get("state") != "ISSUED": + raise AgentError( + "BTAG-TOKEN-CONSUMED", "action token was already consumed or revoked" + ) + now = int(time.time()) + if int(record.get("expires_at", 0)) < now: + record["state"] = "EXPIRED" + record["expired_at"] = now + record["request_hash"] = hash_object( + {key: value for key, value in record.items() if key != "request_hash"} + ) + atomic_write_json(path, record) + raise AgentError("BTAG-TOKEN-EXPIRED", "action token has expired") + record.update( + { + "state": "CONSUMED", + "consumed_at": now, + "effect_id": effect_id, + } + ) + record["request_hash"] = hash_object( + {key: value for key, value in record.items() if key != "request_hash"} + ) + atomic_write_json(path, record) + return record diff --git a/src/backtrader_agent/validator.py b/src/backtrader_agent/validator.py new file mode 100644 index 0000000..378cfa3 --- /dev/null +++ b/src/backtrader_agent/validator.py @@ -0,0 +1,624 @@ +"""Import-free AST and artifact validation for candidate strategies.""" + +import ast +import re +from pathlib import Path, PurePosixPath +from typing import Any, Dict, List, Optional, Tuple + +from .canonical import canonical_json_bytes, hash_object, sha256_bytes +from .errors import AgentError +from .scaffold import load_product_artifact_record +from .sessions import SessionStore +from .tokens import TokenAuthority + +ALLOWED_IMPORT_ALIASES = { + "backtrader": {None, "bt"}, + "json": {None}, + "math": {None}, + "os": {None}, + "csv": {None}, + "datetime": {None}, + "pandas": {None, "pd"}, +} +ALLOWED_FROM_IMPORTS = { + "backtrader": {"Cerebro", "Indicator", "Order", "Strategy", "TimeFrame"}, + "datetime": {"date", "datetime", "time", "timedelta", "timezone"}, +} +LOCAL_STRATEGY_RE = re.compile(r"^strategy_[a-z][a-z0-9_]{1,63}$") +ALLOWED_LOCAL_IMPORTS = {"GeneratedStrategy"} +DENIED_DYNAMIC_CALLS = {"exec", "eval", "compile", "__import__"} +DENIED_FILESYSTEM_CALLS = {"open"} +DENIED_REFLECTION_CALLS = { + "getattr", + "setattr", + "delattr", + "globals", + "locals", + "vars", +} +SAFE_ENVIRONMENT_KEYS = { + "BACKTRADER_AGENT_DATASETS_JSON", + "BACKTRADER_AGENT_MODE", +} +ALLOWED_BACKTRADER_TOP_LEVEL = { + "Cerebro", + "Indicator", + "Order", + "Strategy", + "TimeFrame", + "analyzers", + "date2num", + "feeds", + "ind", + "indicators", + "num2date", +} +ALLOWED_BACKTRADER_FEEDS = { + "BacktraderCSVData", + "GenericCSVData", + "PandasData", + "YahooFinanceCSVData", +} +ALLOWED_BACKTRADER_ANALYZERS = { + "AnnualReturn", + "DrawDown", + "PeriodStats", + "Returns", + "SQN", + "SharpeRatio", + "TimeDrawDown", + "TradeAnalyzer", + "Transactions", + "VWR", +} +ALLOWED_PANDAS_CAPABILITIES = {"read_csv"} +LIVE_MARKERS = { + "CCXTStore", + "IBStore", + "OandaStore", + "VCStore", + "MetaQuotesStore", + "LiveBroker", +} +ABSOLUTE_PATH_RE = re.compile(r"^(?:/|[A-Za-z]:[\\/])") + + +def _diagnostic( + code: str, + message: str, + filename: str, + node: Optional[ast.AST] = None, + *, + hint: Optional[str] = None, +) -> Dict[str, Any]: + value: Dict[str, Any] = { + "code": code, + "severity": "error", + "message": message, + "path": PurePosixPath(filename).as_posix(), + } + if node is not None: + value["line"] = int(getattr(node, "lineno", 1)) + value["column"] = int(getattr(node, "col_offset", 0)) + if hint: + value["hint"] = hint + return value + + +def _attribute_path(node: ast.AST) -> Optional[Tuple[str, ...]]: + parts = [] + current = node + while isinstance(current, ast.Attribute): + parts.append(current.attr) + current = current.value + if not isinstance(current, ast.Name): + return None + return tuple([current.id] + list(reversed(parts))) + + +def _constant_string(node: ast.AST) -> Optional[str]: + if isinstance(node, ast.Constant) and isinstance(node.value, str): + return node.value + return None + + +def _backtrader_path_allowed(path: Tuple[str, ...]) -> bool: + if len(path) < 2 or path[1] not in ALLOWED_BACKTRADER_TOP_LEVEL: + return False + if path[1] in {"ind", "indicators"}: + if len(path) == 2: + return True + return len(path) <= 3 and all(not part.startswith("_") for part in path[2:]) + if path[1] == "feeds": + if len(path) == 2: + return True + return len(path) == 3 and path[2] in ALLOWED_BACKTRADER_FEEDS + if path[1] == "analyzers": + if len(path) == 2: + return True + return len(path) == 3 and path[2] in ALLOWED_BACKTRADER_ANALYZERS + return len(path) == 2 + + +def _is_direct_strategy_base(base: ast.expr) -> bool: + if isinstance(base, ast.Name): + return base.id in {"Strategy", "GeneratedStrategy"} + if isinstance(base, ast.Attribute) and base.attr == "Strategy": + return isinstance(base.value, ast.Name) and base.value.id in {"bt", "backtrader"} + return False + + +def _calls_super_init(function: ast.FunctionDef) -> bool: + for node in ast.walk(function): + if not isinstance(node, ast.Call) or not isinstance(node.func, ast.Attribute): + continue + if node.func.attr != "__init__": + continue + owner = node.func.value + if isinstance(owner, ast.Call) and isinstance(owner.func, ast.Name): + if owner.func.id == "super": + return True + return False + + +class StrategyValidator: + """Validates source bytes without importing or executing candidate code.""" + + def __init__(self, authority: Optional[TokenAuthority] = None) -> None: + self.authority = authority + + def validate_source(self, source: str, filename: str) -> List[Dict[str, Any]]: + try: + tree = ast.parse(source, filename=filename, mode="exec") + except SyntaxError as exc: + return [ + { + "code": "BTAG-AST-SYNTAX", + "severity": "error", + "message": "candidate contains invalid Python syntax", + "path": PurePosixPath(filename).as_posix(), + "line": int(exc.lineno or 1), + "column": int(exc.offset or 0), + } + ] + diagnostics: List[Dict[str, Any]] = [] + parents = { + child: parent for parent in ast.walk(tree) for child in ast.iter_child_nodes(parent) + } + strategy_classes = 0 + for node in ast.walk(tree): + if isinstance(node, ast.Import): + for alias in node.names: + aliases = ALLOWED_IMPORT_ALIASES.get(alias.name) + if aliases is None or alias.asname not in aliases: + diagnostics.append( + _diagnostic( + "BTAG-SEC-IMPORT", + "module import or alias is not capability-allowlisted", + filename, + node, + ) + ) + elif isinstance(node, ast.ImportFrom): + module = node.module or "" + imported_names = {alias.name for alias in node.names} + has_alias = any(alias.asname is not None for alias in node.names) + if module == "os": + diagnostics.append( + _diagnostic( + "BTAG-SEC-FROM-IMPORT", + "from-import from os is forbidden", + filename, + node, + ) + ) + elif LOCAL_STRATEGY_RE.fullmatch(module): + if ( + has_alias + or "*" in imported_names + or not imported_names.issubset(ALLOWED_LOCAL_IMPORTS) + ): + diagnostics.append( + _diagnostic( + "BTAG-SEC-LOCAL-IMPORT", + "local strategy import may expose only GeneratedStrategy", + filename, + node, + ) + ) + elif ( + module not in ALLOWED_FROM_IMPORTS + or has_alias + or "*" in imported_names + or not imported_names.issubset(ALLOWED_FROM_IMPORTS.get(module, set())) + ): + diagnostics.append( + _diagnostic( + "BTAG-SEC-IMPORT", + "from-import is not capability-allowlisted", + filename, + node, + ) + ) + elif isinstance(node, ast.Call): + name = node.func.id if isinstance(node.func, ast.Name) else None + if name in DENIED_DYNAMIC_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-DYNAMIC", + "dynamic code execution is forbidden", + filename, + node, + ) + ) + if name in DENIED_FILESYSTEM_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-FILESYSTEM", + "candidate filesystem access is forbidden", + filename, + node, + ) + ) + if name in DENIED_REFLECTION_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-REFLECTION", + "reflective capability lookup is forbidden", + filename, + node, + ) + ) + path = _attribute_path(node.func) + if path == ("os", "environ", "get"): + key = _constant_string(node.args[0]) if node.args else None + if key not in SAFE_ENVIRONMENT_KEYS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-ENVIRONMENT", + "environment key is not capability-allowlisted", + filename, + node, + ) + ) + if isinstance(node.func, ast.Name) and node.func.id in LIVE_MARKERS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-LIVE", + "live broker or store APIs are forbidden", + filename, + node, + ) + ) + if isinstance(node.func, ast.Attribute) and node.func.attr in LIVE_MARKERS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-LIVE", + "live broker or store APIs are forbidden", + filename, + node, + ) + ) + elif isinstance(node, ast.Attribute): + path = _attribute_path(node) + if node.attr.startswith("__"): + diagnostics.append( + _diagnostic( + "BTAG-SEC-REFLECTION", + "dunder attribute access is forbidden", + filename, + node, + ) + ) + if path and path[0] == "os": + if path == ("os", "environ"): + parent = parents.get(node) + if isinstance(parent, ast.Subscript): + key_node = parent.slice + if isinstance(key_node, ast.Index): + key_node = key_node.value + key = _constant_string(key_node) + if key not in SAFE_ENVIRONMENT_KEYS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-ENVIRONMENT", + "environment key is not capability-allowlisted", + filename, + parent, + ) + ) + elif not ( + isinstance(parent, ast.Attribute) + and parent.attr == "get" + and isinstance(parents.get(parent), ast.Call) + ): + diagnostics.append( + _diagnostic( + "BTAG-SEC-ENVIRONMENT", + "environment mapping cannot be transferred", + filename, + node, + ) + ) + elif path != ("os", "environ", "get"): + diagnostics.append( + _diagnostic( + "BTAG-SEC-CAPABILITY", + "os capability is not allowlisted", + filename, + node, + ) + ) + if path and path[0] in {"pd", "pandas"}: + if len(path) != 2 or path[1] not in ALLOWED_PANDAS_CAPABILITIES: + diagnostics.append( + _diagnostic( + "BTAG-SEC-CAPABILITY", + "Pandas capability is not allowlisted", + filename, + node, + ) + ) + if path and path[0] in {"bt", "backtrader"}: + if not _backtrader_path_allowed(path): + diagnostics.append( + _diagnostic( + "BTAG-SEC-CAPABILITY", + "Backtrader capability is not allowlisted", + filename, + node, + ) + ) + elif isinstance(node, ast.Name): + if node.id in DENIED_DYNAMIC_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-DYNAMIC", + "dynamic code capability cannot be transferred", + filename, + node, + ) + ) + if node.id in DENIED_FILESYSTEM_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-FILESYSTEM", + "filesystem capability cannot be transferred", + filename, + node, + ) + ) + if node.id in DENIED_REFLECTION_CALLS: + diagnostics.append( + _diagnostic( + "BTAG-SEC-REFLECTION", + "reflective capability cannot be transferred", + filename, + node, + ) + ) + if node.id == "__builtins__": + diagnostics.append( + _diagnostic( + "BTAG-SEC-REFLECTION", + "builtins namespace access is forbidden", + filename, + node, + ) + ) + if node.id == "os": + parent = parents.get(node) + if not ( + isinstance(parent, ast.Attribute) + and parent.value is node + and parent.attr == "environ" + ): + diagnostics.append( + _diagnostic( + "BTAG-SEC-CAPABILITY", + "os module object cannot be transferred", + filename, + node, + ) + ) + elif isinstance(node, ast.Constant) and isinstance(node.value, str): + value = node.value + if ( + ABSOLUTE_PATH_RE.match(value) + or ".." in PurePosixPath(value.replace("\\", "/")).parts + ): + diagnostics.append( + _diagnostic( + "BTAG-SEC-PATH", + "absolute or parent-traversing path literal is forbidden", + filename, + node, + ) + ) + elif isinstance(node, ast.ClassDef): + direct = any(_is_direct_strategy_base(base) for base in node.bases) + if direct: + strategy_classes += 1 + init_method = next( + ( + item + for item in node.body + if isinstance(item, ast.FunctionDef) and item.name == "__init__" + ), + None, + ) + # Current dev intentionally initializes direct bt.Strategy subclasses + # before their user __init__. Only cooperative custom parents need super. + if init_method is not None and not direct: + looks_like_strategy = node.name.endswith("Strategy") + if looks_like_strategy and not _calls_super_init(init_method): + diagnostics.append( + _diagnostic( + "BTAG-VAL-COOPERATIVE-INIT", + "custom Strategy parent initialization must follow its MRO", + filename, + init_method, + hint="call super().__init__() when a custom parent or mixin owns initialization", + ) + ) + if filename.startswith(("strategy_", "test_")): + if strategy_classes == 0: + diagnostics.append( + _diagnostic( + "BTAG-VAL-STRATEGY", + "candidate must define a direct bt.Strategy subclass", + filename, + ) + ) + diagnostics.sort( + key=lambda item: ( + item["path"], + item.get("line", 0), + item.get("column", 0), + item["code"], + ) + ) + return diagnostics + + def validate_artifact( + self, + artifact: Dict[str, Any], + *, + bindings: Optional[Dict[str, str]] = None, + approval: Optional[str] = None, + session_id: Optional[str] = None, + ) -> Dict[str, Any]: + draft_path_raw = artifact.get("_draft_path") + if not isinstance(draft_path_raw, str): + raise AgentError("BTAG-ARTIFACT-DRAFT", "private draft location is missing") + draft_path = Path(draft_path_raw).resolve(strict=True) + portable = { + key: value + for key, value in artifact.items() + if not key.startswith("_") and key != "artifact_hash" + } + public_artifact = {key: value for key, value in artifact.items() if not key.startswith("_")} + if hash_object(portable) != artifact.get("artifact_hash"): + raise AgentError("BTAG-ARTIFACT-HASH", "artifact manifest hash is invalid") + product_record: Optional[Dict[str, Any]] = None + if self.authority is not None: + if not isinstance(session_id, str): + raise AgentError( + "BTAG-PROVENANCE-SESSION", + "session ID is required for executable artifact validation", + ) + product_record = load_product_artifact_record( + self.authority.state_root, + session_id, + artifact["artifact_hash"], + self.authority, + ) + expected_draft = ( + self.authority.state_root / product_record["draft_relative_path"] + ).resolve(strict=True) + extension = artifact.get("extensions", {}).get("backtrader_agent", {}) + manifest_path = expected_draft / "artifact-manifest.json" + session = SessionStore(self.authority.state_root).load(session_id) + if ( + draft_path != expected_draft + or not manifest_path.is_file() + or manifest_path.is_symlink() + or sha256_bytes(manifest_path.read_bytes()) != product_record["manifest_sha256"] + or manifest_path.read_bytes() != canonical_json_bytes(public_artifact) + b"\n" + or extension.get("generated_by") != "backtrader-agent" + or extension.get("renderer_version") != "scaffold-v1" + or extension.get("session_id") != session_id + or extension.get("dataset_manifest_hash") != product_record["dataset_manifest_hash"] + or product_record["spec_hash"] != artifact.get("spec_hash") + or product_record["dataset_id"] != artifact.get("dataset_id") + or session.get("state") != "DRAFT_READY" + or session.get("artifacts", {}).get("artifact_hash") + != artifact.get("artifact_hash") + or session.get("artifacts", {}).get("approved_spec_hash") + != artifact.get("spec_hash") + or session.get("artifacts", {}).get("dataset_id") != artifact.get("dataset_id") + or session.get("artifacts", {}).get("dataset_manifest_hash") + != product_record["dataset_manifest_hash"] + ): + raise AgentError( + "BTAG-PROVENANCE-BINDING", + "artifact provenance does not match its product session and private draft", + ) + diagnostics: List[Dict[str, Any]] = [] + total_size = 0 + for file_entry in artifact.get("files", []): + relative = file_entry.get("path", "") + candidate_path = draft_path / relative + try: + resolved = candidate_path.resolve(strict=True) + resolved.relative_to(draft_path) + except (OSError, ValueError) as exc: + raise AgentError("BTAG-ARTIFACT-PATH", "artifact file escapes its draft") from exc + if not resolved.is_file() or resolved.is_symlink(): + raise AgentError("BTAG-ARTIFACT-TYPE", "artifact member must be a regular file") + data = resolved.read_bytes() + total_size += len(data) + if sha256_bytes(data) != file_entry.get("sha256"): + raise AgentError("BTAG-ARTIFACT-FILE-HASH", "artifact member hash is invalid") + if relative.endswith(".py"): + try: + source = data.decode("utf-8") + except UnicodeDecodeError as exc: + raise AgentError( + "BTAG-ARTIFACT-ENCODING", "Python candidate must be UTF-8" + ) from exc + diagnostics.extend(self.validate_source(source, relative)) + if len(artifact.get("files", [])) > 8 or total_size > 512 * 1024: + diagnostics.append( + _diagnostic( + "BTAG-ARTIFACT-QUOTA", + "artifact exceeds file count or byte quota", + "artifact-manifest.json", + ) + ) + status = "passed" if not diagnostics else "failed" + report: Dict[str, Any] = { + "schema_version": "validation-report-v1", + "validation_id": f"validation-{artifact['artifact_hash'][:20]}", + "artifact_hash": artifact["artifact_hash"], + "dataset_id": artifact["dataset_id"], + "evidence": { + "manifest": "passed", + "hashes": "passed", + "ast": status, + "security": status, + "current_fork": status, + }, + "diagnostics": diagnostics, + "status": status, + } + report["validation_hash"] = hash_object(report) + if status == "passed" and self.authority is not None: + if bindings is None or approval is None or product_record is None: + raise AgentError( + "BTAG-VALIDATION-TOKEN", + "bindings and validator approval are required to issue a token", + ) + token_bindings = dict(bindings) + expected_dataset_hash = product_record["dataset_manifest_hash"] + if token_bindings.get("dataset_hash") != expected_dataset_hash: + raise AgentError( + "BTAG-VALIDATION-DATASET", + "validation dataset binding does not match the rendered artifact", + ) + token_bindings.update( + { + "artifact_record_hash": product_record["record_hash"], + "dataset_id": product_record["dataset_id"], + "session_id": product_record["session_id"], + "spec_hash": product_record["spec_hash"], + "validation_hash": report["validation_hash"], + } + ) + report["validation_token"] = self.authority.issue( + "validation", + artifact["artifact_hash"], + token_bindings, + approval=approval, + ) + return report diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..7edbf4d --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,7 @@ +from pathlib import Path +import sys + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +SRC_ROOT = PROJECT_ROOT / "src" +if str(SRC_ROOT) not in sys.path: + sys.path.insert(0, str(SRC_ROOT)) diff --git a/tests/helpers.py b/tests/helpers.py new file mode 100644 index 0000000..8516359 --- /dev/null +++ b/tests/helpers.py @@ -0,0 +1,233 @@ +import json +import os +from datetime import datetime, timedelta, timezone +from pathlib import Path + +ENGINE_ROOT_ENV = "BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT" + + +def resolve_acceptance_engine_root(anchor: Path) -> Path: + """Find a Backtrader engine root for acceptance/controlled runs. + + A valid engine root is a directory containing ``backtrader/__init__.py`` + and ``backtrader/version.py``. Resolution order: the explicit + ``BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT`` environment variable, sibling + source checkouts named ``backtrader`` or ``back_trader`` relative to the + anchor, the anchor's parent and the anchor itself, and finally the + installed ``backtrader`` package's parent directory. Raises ``RuntimeError`` + with actionable guidance when no candidate is valid so a fresh checkout + fails loudly instead of producing a misleading ``BTAG-ENGINE-LAYOUT`` error. + """ + + candidates = [] + env_value = os.environ.get(ENGINE_ROOT_ENV) + if env_value: + candidates.append(Path(env_value)) + anchor_resolved = Path(anchor).resolve() + candidates.extend( + [ + anchor_resolved.parent / "backtrader", + anchor_resolved.parent / "back_trader", + anchor_resolved.parent, + anchor_resolved, + ] + ) + try: + import backtrader # noqa: WPS433 lazy import keeps helpers import-light + + candidates.append(Path(backtrader.__file__).resolve().parent.parent) + except Exception: # pragma: no cover - backtrader is optional for helpers import + pass + for candidate in candidates: + if ( + (candidate / "backtrader" / "__init__.py").is_file() + and (candidate / "backtrader" / "version.py").is_file() + ): + return candidate.resolve() + raise RuntimeError( + "No Backtrader engine root found. Set " + f"{ENGINE_ROOT_ENV} to a directory containing " + "backtrader/__init__.py and backtrader/version.py " + "(a source checkout or the installed site-packages directory)." + ) + + +def write_price_csv( + path: Path, + *, + rows: int = 40, + include_signal: bool = True, + price_offset: float = 0.0, +) -> Path: + header = "date,open,high,low,close,volume,openinterest" + if include_signal: + header += ",signal" + lines = [header] + for index in range(rows): + day = index + 1 + date = f"2024-01-{day:02d}" if day <= 31 else f"2024-02-{day - 31:02d}" + close = 100.0 + price_offset + index + row = ( + f"{date},{close - 0.5:.2f},{close + 1:.2f},{close - 1:.2f}," + f"{close:.2f},{1000 + index},0" + ) + if include_signal: + row += f",{1 if index % 4 < 2 else -1}" + lines.append(row) + path.write_text("\n".join(lines) + "\n", encoding="utf-8") + return path + + +def write_adapter_price_csv( + path: Path, + adapter: str, + *, + rows: int = 40, + price_offset: float = 0.0, +) -> Path: + """Write the native, offline text shape accepted by one P0 adapter.""" + + delimiter = "\t" if adapter == "mt5_csv" else "," + headers = { + "generic_csv": [ + "datetime", + "open", + "high", + "low", + "close", + "volume", + "openinterest", + ], + "backtrader_csv": [ + "date", + "open", + "high", + "low", + "close", + "volume", + "openinterest", + ], + "yahoo_csv": ["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"], + "mt5_csv": ["", "", "", "", "", ""], + "pandas": [ + "datetime", + "open", + "high", + "low", + "close", + "volume", + "openinterest", + ], + "pandas_custom_lines": [ + "datetime", + "open", + "high", + "low", + "close", + "volume", + "openinterest", + "signal", + ], + } + lines = [delimiter.join(headers[adapter])] + start = datetime(2024, 1, 1, tzinfo=timezone.utc) + for index in range(rows): + timestamp = start + timedelta(days=index) + close = 100.0 + price_offset + index + date_values = { + "generic_csv": timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"), + "backtrader_csv": timestamp.strftime("%Y-%m-%d"), + "yahoo_csv": timestamp.strftime("%Y-%m-%d"), + "mt5_csv": timestamp.strftime("%Y.%m.%d %H:%M:%S"), + "pandas": timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"), + "pandas_custom_lines": timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"), + } + values = [ + date_values[adapter], + f"{close - 0.5:.2f}", + f"{close + 1:.2f}", + f"{close - 1:.2f}", + f"{close:.2f}", + ] + if adapter == "yahoo_csv": + values.extend([f"{close:.2f}", str(1000 + index)]) + elif adapter == "mt5_csv": + values.append(str(1000 + index)) + else: + values.extend([str(1000 + index), "0"]) + if adapter == "pandas_custom_lines": + values.append(str(1 if index % 4 < 2 else -1)) + lines.append(delimiter.join(values)) + path.write_text("\n".join(lines) + "\n", encoding="utf-8") + return path + + +def data_spec(relative_path: str = "prices.csv") -> dict: + return { + "schema_version": "dataset-manifest-v1", + "name": "fixture-prices", + "feeds": [ + { + "feed_id": "primary", + "name": "primary", + "role": "execution", + "root_id": "input", + "relative_path": relative_path, + "format": "generic_csv", + "datetime_format": "%Y-%m-%d", + "timeframe": "Days", + "compression": 1, + "timezone": "UTC", + "bar_semantics": "close", + "columns": { + "datetime": "date", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest", + "signal": "signal", + }, + } + ], + "alignment": {"mode": "intersection", "minimum_overlap": 1}, + } + + +def strategy_spec( + dataset_id: str, + *, + archetype: str = "single_data_indicator", + profile: str = "python_bundle", +) -> dict: + return { + "spec_version": "strategy-spec-v1", + "name": "Fixture Momentum", + "slug": "fixture_momentum", + "category": "trend_following", + "archetype": archetype, + "output_profile": profile, + "dataset_id": dataset_id, + "feeds": [{"name": "primary", "role": "execution"}], + "parameters": { + "fast_period": {"type": "integer", "default": 5, "minimum": 2}, + "slow_period": {"type": "integer", "default": 12, "minimum": 3}, + }, + "entry": "long when the fast signal is above the slow signal", + "exit": "close when the fast signal is below the slow signal", + "sizing": {"kind": "fixed", "stake": 1}, + "risk": {"max_position": 1}, + "cash": 100000.0, + "commission": 0.001, + "analyzers": ["TradeAnalyzer", "DrawDown", "SharpeRatio", "SQN"], + "run_modes": ["runonce", "runnext"], + "allowed_imports": ["backtrader", "json", "os", "math"], + "non_goals": ["live trading"], + "open_questions": [], + } + + +def dump_json(path: Path, value: dict) -> Path: + path.write_text(json.dumps(value, indent=2, sort_keys=True) + "\n", encoding="utf-8") + return path diff --git a/tests/test_catalog_snapshot.py b/tests/test_catalog_snapshot.py new file mode 100644 index 0000000..3e2389b --- /dev/null +++ b/tests/test_catalog_snapshot.py @@ -0,0 +1,121 @@ +import hashlib +from pathlib import Path + +import pytest + +from backtrader_agent.catalog import EXPECTED_COUNTS, SnapshotCatalog +from backtrader_agent.errors import AgentError + +EXPECTED_ASSET_SHA256 = "30973a10bd434e7935aa5b45577a5d5de0221a58b53a4c00a8124006438c5828" + + +def test_packaged_catalog_has_full_verified_metadata_and_fourteen_templates() -> None: + catalog = SnapshotCatalog() + assert catalog.manifest["counts"] == EXPECTED_COUNTS + assert catalog.manifest["entry_count"] == 1155 + assert len(catalog.templates()) == 14 + assert len(catalog.templates(archetype="pairs_spread", profile="python_bundle")) == 1 + results = catalog.search( + "moving average trend", + archetype="single_data_indicator", + profile="single_test", + top_k=3, + ) + assert len(results) == 3 + assert all(result["source_available"] is False for result in results) + assert catalog.inspect(results[0]["entry_id"])["source_available"] is False + + snapshot = ( + Path(__file__).resolve().parents[1] + / "src" + / "backtrader_agent" + / "resources" + / "catalog" + / "corpus-v1.jsonl" + ) + assert hashlib.sha256(snapshot.read_bytes()).hexdigest() == EXPECTED_ASSET_SHA256 + + +def test_source_attached_refresh_rebuilds_both_adapters_without_mutating_source( + tmp_path: Path, +) -> None: + functional = tmp_path / "functional" + packages = tmp_path / "packages" + output = tmp_path / "state" / "source-catalog.jsonl" + test_dir = functional / "trend" + package_dir = packages / "trend" / "0001_example" + test_dir.mkdir(parents=True) + package_dir.mkdir(parents=True) + test_path = test_dir / "test_0001_example.py" + strategy_path = package_dir / "strategy_example.py" + test_path.write_text( + "import backtrader as bt\nclass Example(bt.Strategy):\n pass\n", + encoding="utf-8", + ) + strategy_path.write_text( + "import backtrader as bt\nclass Example(bt.Strategy):\n pass\n", + encoding="utf-8", + ) + config_path = package_dir / "config.yaml" + run_path = package_dir / "run.py" + config_path.write_text("period: 5\n", encoding="utf-8") + run_path.write_text("from strategy_example import Example\n", encoding="utf-8") + inputs = (test_path, strategy_path, config_path, run_path) + before = { + path.relative_to(tmp_path).as_posix(): hashlib.sha256(path.read_bytes()).hexdigest() + for path in inputs + } + + manifest = SnapshotCatalog.refresh_source_attached( + functional, + packages, + output, + require_verified_counts=False, + ) + assert manifest["mode"] == "source-attached" + assert manifest["counts"] == { + "functional_tests": 1, + "strategy_packages": 1, + "mapped": 1, + } + rebuilt = SnapshotCatalog(snapshot_path=output) + assert rebuilt.inspect("trend/0001_example")["source_available"] is True + repeated_output = tmp_path / "state" / "source-catalog-repeated.jsonl" + repeated = SnapshotCatalog.refresh_source_attached( + functional, + packages, + repeated_output, + require_verified_counts=False, + ) + assert repeated["snapshot_hash"] == manifest["snapshot_hash"] + assert repeated_output.read_bytes() == output.read_bytes() + after = { + path.relative_to(tmp_path).as_posix(): hashlib.sha256(path.read_bytes()).hexdigest() + for path in inputs + } + assert after == before + + with pytest.raises(AgentError) as error: + SnapshotCatalog.refresh_source_attached( + functional, + packages, + functional / "forbidden-output.jsonl", + require_verified_counts=False, + ) + assert error.value.code == "BTAG-CATALOG-OUTPUT" + + +def test_source_attached_verified_baseline_gate_rejects_partial_corpora( + tmp_path: Path, +) -> None: + functional = tmp_path / "functional" + packages = tmp_path / "packages" + functional.mkdir() + packages.mkdir() + with pytest.raises(AgentError) as error: + SnapshotCatalog.refresh_source_attached( + functional, + packages, + tmp_path / "catalog.jsonl", + ) + assert error.value.code == "BTAG-CATALOG-COUNTS" diff --git a/tests/test_cli_extended_actions.py b/tests/test_cli_extended_actions.py new file mode 100644 index 0000000..a253343 --- /dev/null +++ b/tests/test_cli_extended_actions.py @@ -0,0 +1,183 @@ +from pathlib import Path + +from backtrader_agent.canonical import hash_object +from backtrader_agent.cli import build_parser, dispatch +from backtrader_agent.contracts import StrategySpec +from backtrader_agent.scaffold import ArtifactRenderer +from backtrader_agent.sessions import SessionStore + +from helpers import dump_json, strategy_spec + + +def _call(*arguments: str): + return dispatch(build_parser().parse_args(list(arguments))) + + +def _metrics(final_value: float = 100000.0) -> dict: + return { + "bar_num": 40, + "buy_count": 1, + "sell_count": 1, + "win_count": 0, + "loss_count": 0, + "trade_num": 0, + "final_value": final_value, + "sharpe_ratio": None, + "annual_return": None, + "max_drawdown": 0.0, + "return_rate": 0.0, + } + + +def _write_run(state: Path, run_id: str, metrics: dict) -> None: + root = state / "runs" / run_id + root.mkdir(parents=True) + core = { + "schema_version": "run-result-v1", + "run_id": run_id, + "status": "passed", + "metrics": metrics, + "diagnostics": [], + "artifacts": [], + "extensions": {"backtrader_agent": {"mode": "runonce"}}, + } + dump_json(root / "run-result.json", {**core, "result_hash": hash_object(core)}) + (root / "report.md").write_text("# immutable report\n", encoding="utf-8") + (root / "report.html").write_text("

    immutable report

    \n", encoding="utf-8") + + +def test_compare_and_report_use_only_private_hash_verified_run_ids(tmp_path: Path) -> None: + state = tmp_path / "state" + left_id = "run-" + "a" * 20 + right_id = "run-" + "b" * 20 + _write_run(state, left_id, _metrics()) + _write_run(state, right_id, _metrics()) + common = ("--state-root", str(state)) + + comparison = _call( + *common, + "compare", + "--left-run-id", + left_id, + "--right-run-id", + right_id, + ) + assert comparison["status"] == "passed" + viewed = _call(*common, "report", "--run-id", left_id, "--format", "markdown") + assert viewed["content"] == "# immutable report\n" + assert len(viewed["sha256"]) == 64 + + +def test_catalog_refresh_uses_read_only_registered_roots(tmp_path: Path) -> None: + state = tmp_path / "state" + functional = tmp_path / "functional" + packages = tmp_path / "packages" + (functional / "trend").mkdir(parents=True) + (packages / "trend" / "alpha").mkdir(parents=True) + (functional / "trend" / "test_alpha.py").write_text("class Alpha: pass\n", encoding="utf-8") + package = packages / "trend" / "alpha" + (package / "strategy_alpha.py").write_text("class Alpha: pass\n", encoding="utf-8") + (package / "config.yaml").write_text("name: alpha\n", encoding="utf-8") + (package / "run.py").write_text("print('alpha')\n", encoding="utf-8") + common = ("--state-root", str(state)) + for root_id, path in (("functional", functional), ("packages", packages)): + _call( + *common, + "roots", + "register", + "--id", + root_id, + "--path", + str(path), + "--kind", + "dataset", + ) + + refreshed = _call( + *common, + "catalog", + "refresh", + "--functional-root-id", + "functional", + "--package-root-id", + "packages", + "--allow-count-drift", + ) + assert refreshed["counts"] == { + "functional_tests": 1, + "strategy_packages": 1, + "mapped": 1, + } + assert (state / "catalog" / "source-attached.jsonl").is_file() + + +def test_failed_session_repair_revises_spec_and_rerenders_owned_draft(tmp_path: Path) -> None: + state = tmp_path / "state" + session_id = "repair-1" + dataset_id = "ds_" + "d" * 64 + dataset = { + "schema_version": "dataset-manifest-v1", + "dataset_id": dataset_id, + "manifest_hash": "e" * 64, + } + original = StrategySpec.from_dict(strategy_spec(dataset_id)) + artifact = ArtifactRenderer(state).render(session_id, original, dataset) + sessions = SessionStore(state) + sessions.create(session_id) + transitions = ( + ("DATA_READY", "dataset-register", {"dataset_manifest_hash": dataset["manifest_hash"]}), + ("SPEC_DRAFT", "spec-draft", {"spec_hash": original.spec_hash}), + ("SPEC_APPROVED", "spec-approve", {"approved_spec_hash": original.spec_hash}), + ("SOURCES_SELECTED", "sources-select", {}), + ("DRAFT_READY", "draft-render", {"artifact_hash": artifact["artifact_hash"]}), + ("VALIDATED", "strategy-validate", {"validation_hash": "1" * 64}), + ("APPLY_PREPARED", "change-prepare", {"change_manifest_hash": "2" * 64}), + ("APPLIED", "change-apply", {"applied_artifact_hash": "3" * 64}), + ("RUN_APPROVED", "run-approve", {"run_approval_id": "approval-test"}), + ("RUNNING", "controlled-run-start", {"run_id": "run-" + "4" * 20}), + ("FAILED", "controlled-run-failed", {"failed_run_id": "run-" + "4" * 20}), + ) + for state_name, action, effects in transitions: + sessions.transition( + session_id, + state_name, + action, + {"fixture": hash_object({"state": state_name})}, + effect_references=effects, + ) + + revised = strategy_spec(dataset_id) + revised["parameters"]["fast_period"]["default"] = 6 + failure = { + "schema_version": "run-result-v1", + "run_id": "run-" + "4" * 20, + "status": "failed", + "diagnostics": [ + { + "code": "BTAG-RUN-FIXTURE", + "severity": "error", + "message": "fixture failure", + } + ], + } + spec_path = dump_json(tmp_path / "revised-spec.json", revised) + dataset_path = dump_json(tmp_path / "dataset.json", dataset) + failure_path = dump_json(tmp_path / "failure.json", failure) + result = _call( + "--state-root", + str(state), + "repair", + "--session-id", + session_id, + "--spec", + str(spec_path), + "--dataset-manifest", + str(dataset_path), + "--failure-report", + str(failure_path), + ) + + assert result["repair"]["old_approvals_reusable"] is False + assert result["repair"]["previous_spec_hash"] == original.spec_hash + assert result["repair"]["revised_spec_hash"] != original.spec_hash + assert sessions.load(session_id)["state"] == "DRAFT_READY" diff --git a/tests/test_cli_workflow.py b/tests/test_cli_workflow.py new file mode 100644 index 0000000..ed38147 --- /dev/null +++ b/tests/test_cli_workflow.py @@ -0,0 +1,258 @@ +import json +from pathlib import Path + +from backtrader_agent.canonical import hash_object +from backtrader_agent.cli import build_parser, dispatch +from backtrader_agent.contracts import StrategySpec + +from helpers import data_spec, dump_json, strategy_spec, write_price_csv + + +def _call(*arguments: str): + return dispatch(build_parser().parse_args(list(arguments))) + + +def test_cli_data_to_run_workflow_is_hash_chained_and_completes(tmp_path: Path) -> None: + workspace = tmp_path / "workspace" + inputs = tmp_path / "inputs" + workspace.mkdir() + inputs.mkdir() + write_price_csv(inputs / "prices.csv", rows=40) + state = workspace / ".backtrader-agent" + common = ("--state-root", str(state)) + + _call( + *common, + "roots", + "register", + "--id", + "workspace", + "--path", + str(workspace), + "--kind", + "workspace", + "--writable", + ) + _call( + *common, + "roots", + "register", + "--id", + "input", + "--path", + str(inputs), + "--kind", + "dataset", + ) + _call(*common, "session", "create", "--session-id", "workflow-1") + + data_spec_path = dump_json(tmp_path / "data-spec.json", data_spec()) + dataset = _call( + *common, + "data", + "register", + "--session-id", + "workflow-1", + "--spec", + str(data_spec_path), + ) + dataset_path = dump_json(tmp_path / "dataset.json", dataset) + + spec_path = dump_json( + tmp_path / "strategy-spec.json", + strategy_spec(dataset["dataset_id"], profile="python_bundle"), + ) + canonical_spec = _call( + *common, + "spec", + "--session-id", + "workflow-1", + "--approve", + "--file", + str(spec_path), + ) + assert StrategySpec.from_dict(canonical_spec).spec_hash == canonical_spec["spec_hash"] + canonical_spec_path = dump_json(tmp_path / "canonical-spec.json", canonical_spec) + artifact = _call( + *common, + "draft", + "--session-id", + "workflow-1", + "--spec", + str(canonical_spec_path), + "--dataset-manifest", + str(dataset_path), + ) + artifact_path = Path(artifact["_draft_path"]) / "artifact-manifest.json" + validation = _call( + *common, + "validate", + "--session-id", + "workflow-1", + "--artifact-manifest", + str(artifact_path), + "--draft-root", + artifact["_draft_path"], + "--dataset-hash", + dataset["manifest_hash"], + "--engine-hash", + "local-engine", + "--environment-hash", + "test-environment", + ) + validation_token_path = dump_json( + tmp_path / "validation-token.json", validation["validation_token"] + ) + files = [ + { + "source": item["path"], + "target": f"strategies/generated/cli/{item['path']}", + } + for item in artifact["files"] + ] + prepared = _call( + *common, + "changes", + "prepare", + "--session-id", + "workflow-1", + "--draft-root", + artifact["_draft_path"], + "--files", + json.dumps(files), + "--target-root-id", + "workspace", + "--validation-token", + str(validation_token_path), + ) + prepared_path = dump_json(tmp_path / "change-manifest.json", prepared) + change_request = _call( + *common, + "approval", + "request", + "--kind", + "change", + "--subject-hash", + prepared["manifest_hash"], + "--bindings", + json.dumps( + { + "artifact_hash": prepared["artifact_hash"], + "artifact_record_hash": prepared["artifact_record_hash"], + "change_manifest_hash": prepared["manifest_hash"], + "dataset_hash": prepared["dataset_manifest_hash"], + "dataset_id": prepared["dataset_id"], + "spec_hash": prepared["spec_hash"], + "validation_token_hash": prepared["validation_token_hash"], + "validation_token_id": validation["validation_token"]["token_id"], + "session_id": "workflow-1", + } + ), + ) + change_grant = _call( + *common, + "approval", + "grant", + "--request-id", + change_request["request_id"], + "--approver", + "local-user", + "--confirm", + ) + change_token_path = dump_json(tmp_path / "change-token.json", change_grant["token"]) + applied = _call( + *common, + "changes", + "apply", + "--manifest", + str(prepared_path), + "--change-token", + str(change_token_path), + "--idempotency-key", + "workflow-apply", + ) + applied_path = dump_json(tmp_path / "applied.json", applied) + + run_subject = _call( + *common, + "run-subject", + "--applied-artifact", + str(applied_path), + "--dataset-manifest", + str(dataset_path), + "--validation-token", + str(validation_token_path), + "--mode", + "runonce", + ) + run_request = _call( + *common, + "approval", + "request", + "--kind", + "run", + "--subject-hash", + run_subject["subject_hash"], + "--bindings", + json.dumps( + { + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied["applied_record_hash"], + "artifact_hash": applied["artifact_hash"], + "artifact_record_hash": applied["artifact_record_hash"], + "change_manifest_hash": applied["change_manifest_hash"], + "validation_token_id": validation["validation_token"]["token_id"], + "validation_token_hash": hash_object(validation["validation_token"]), + "dataset_hash": dataset["manifest_hash"], + "dataset_id": dataset["dataset_id"], + "mode": "runonce", + "session_id": "workflow-1", + "spec_hash": applied["spec_hash"], + } + ), + ) + run_grant = _call( + *common, + "approval", + "grant", + "--request-id", + run_request["request_id"], + "--approver", + "local-user", + "--confirm", + ) + run_token_path = dump_json(tmp_path / "run-token.json", run_grant["token"]) + result = _call( + *common, + "run", + "--applied-artifact", + str(applied_path), + "--dataset-manifest", + str(dataset_path), + "--validation-token", + str(validation_token_path), + "--run-token", + str(run_token_path), + "--mode", + "runonce", + "--idempotency-key", + "workflow-run", + "--timeout", + "30", + ) + assert result["status"] == "passed" + session = _call(*common, "session", "status", "--session-id", "workflow-1") + assert session["state"] == "COMPLETED" + assert session["artifacts"]["dataset_manifest_hash"] == dataset["manifest_hash"] + assert session["artifacts"]["run_result_hash"] == result["result_hash"] + assert session["approvals"]["apply"] == change_grant["token"]["token_id"] + assert session["approvals"]["execute"] == run_grant["token"]["token_id"] + + journal_path = state / "sessions/workflow-1/journal.jsonl" + events = [json.loads(line) for line in journal_path.read_text(encoding="utf-8").splitlines()] + assert [event["sequence"] for event in events] == list(range(1, len(events) + 1)) + assert events[-1]["to_state"] == "COMPLETED" + assert all( + events[index]["previous_event_hash"] == events[index - 1]["event_hash"] + for index in range(1, len(events)) + ) diff --git a/tests/test_data_cas.py b/tests/test_data_cas.py new file mode 100644 index 0000000..461d9c2 --- /dev/null +++ b/tests/test_data_cas.py @@ -0,0 +1,154 @@ +import json +from pathlib import Path + +import pytest +from jsonschema import Draft202012Validator + +from backtrader_agent.data import DatasetService +from backtrader_agent.errors import AgentError +from backtrader_agent.roots import RootRegistry + +from helpers import data_spec, write_adapter_price_csv, write_price_csv + + +def test_dataset_inspect_register_preview_is_stable_and_immutable(tmp_path: Path) -> None: + workspace = tmp_path / "workspace" + input_root = tmp_path / "input" + workspace.mkdir() + input_root.mkdir() + write_price_csv(input_root / "prices.csv") + + state_root = workspace / ".backtrader-agent" + roots = RootRegistry(state_root) + roots.register("workspace", workspace, writable=True, kind="workspace") + roots.register("input", input_root, writable=False, kind="dataset") + service = DatasetService(roots, state_root) + + inspected = service.inspect(data_spec()) + assert inspected["status"] == "valid" + assert inspected["feeds"][0]["row_count"] == 40 + assert len(inspected["feeds"][0]["normalized_sha256"]) == 64 + + registered = service.register(data_spec()) + repeated = service.register(data_spec()) + for field in ( + "schema_version", + "dataset_id", + "spec_hash", + "semantic_hash", + "manifest_hash", + "feeds", + "master_feed", + "alignment", + "status", + "diagnostics", + "transforms", + "provenance", + ): + assert field in registered + assert registered["dataset_id"] == "ds_" + registered["semantic_hash"] + schema_path = ( + Path(__file__).resolve().parents[1] + / "src/backtrader_agent/resources/contracts/dataset-manifest-v1.schema.json" + ) + schema = json.loads(schema_path.read_text(encoding="utf-8")) + Draft202012Validator(schema).validate(registered) + assert repeated["dataset_id"] == registered["dataset_id"] + assert repeated["manifest_hash"] == registered["manifest_hash"] + + preview = service.preview(registered["dataset_id"], rows=2) + assert preview["feeds"][0]["head"][0]["datetime"] == "2024-01-01T00:00:00Z" + assert preview["feeds"][0]["tail"][-1]["close"] == "139" + + cas_relative = registered["feeds"][0]["extensions"]["backtrader_agent"]["cas_relative_path"] + assert (state_root / cas_relative).read_bytes() + + +def test_dataset_rejects_traversal_and_invalid_ohlc(tmp_path: Path) -> None: + workspace = tmp_path / "workspace" + input_root = tmp_path / "input" + workspace.mkdir() + input_root.mkdir() + bad = input_root / "bad.csv" + bad.write_text( + "date,open,high,low,close,volume,openinterest\n" "2024-01-01,10,8,9,10,1,0\n", + encoding="utf-8", + ) + roots = RootRegistry(workspace / ".backtrader-agent") + roots.register("input", input_root, writable=False, kind="dataset") + service = DatasetService(roots, workspace / ".backtrader-agent") + + with pytest.raises(AgentError, match="BTAG-PATH"): + service.inspect(data_spec("../escape.csv")) + with pytest.raises(AgentError, match="BTAG-DATA-OHLC"): + service.inspect(data_spec("bad.csv")) + + +@pytest.mark.parametrize( + "adapter", + [ + "generic_csv", + "backtrader_csv", + "yahoo_csv", + "mt5_csv", + "pandas", + "pandas_custom_lines", + ], +) +def test_all_six_offline_adapters_materialize_canonical_csv( + tmp_path: Path, + adapter: str, +) -> None: + input_root = tmp_path / "input" + input_root.mkdir() + write_adapter_price_csv(input_root / "prices.csv", adapter) + state = tmp_path / "state" + roots = RootRegistry(state) + roots.register("input", input_root, writable=False, kind="dataset") + spec = data_spec() + spec["feeds"][0]["format"] = adapter + spec["feeds"][0]["columns"] = {"signal": "signal"} if adapter == "pandas_custom_lines" else {} + if adapter == "mt5_csv": + spec["feeds"][0]["delimiter"] = "\t" + manifest = DatasetService(roots, state).register(spec) + assert manifest["feeds"][0]["format"] == adapter + expected_last_column = "signal" if adapter == "pandas_custom_lines" else "openinterest" + assert manifest["feeds"][0]["canonical_columns"][-1] == expected_last_column + cas_path = state / manifest["feeds"][0]["extensions"]["backtrader_agent"]["cas_relative_path"] + assert cas_path.suffix == ".csv" + + +@pytest.mark.parametrize("profile_id", ["resample", "replay"]) +def test_typed_resample_and_replay_are_preserved_in_registered_manifest( + tmp_path: Path, + profile_id: str, +) -> None: + input_root = tmp_path / "input" + input_root.mkdir() + write_price_csv(input_root / "prices.csv") + state = tmp_path / "state" + roots = RootRegistry(state) + roots.register("input", input_root, writable=False, kind="dataset") + spec = data_spec() + spec["feeds"][0]["timeframe"] = "Minutes" + spec["transforms"] = [ + { + "profile_id": profile_id, + "parameters": {"feed": "primary", "timeframe": "Days", "compression": 1}, + } + ] + manifest = DatasetService(roots, state).register(spec) + assert manifest["transforms"] == spec["transforms"] + + +def test_pandas_adapter_rejects_pickle_instead_of_deserializing_it(tmp_path: Path) -> None: + input_root = tmp_path / "input" + input_root.mkdir() + (input_root / "prices.pkl").write_bytes(b"not-a-tabular-csv") + state = tmp_path / "state" + roots = RootRegistry(state) + roots.register("input", input_root, writable=False, kind="dataset") + spec = data_spec("prices.pkl") + spec["feeds"][0]["format"] = "pandas" + with pytest.raises(AgentError, match="BTAG-DATA-PANDAS-MATERIALIZED"): + DatasetService(roots, state).inspect(spec) diff --git a/tests/test_distribution_contracts.py b/tests/test_distribution_contracts.py new file mode 100644 index 0000000..25adc27 --- /dev/null +++ b/tests/test_distribution_contracts.py @@ -0,0 +1,203 @@ +import hashlib +import json +import os +import shutil +import subprocess +import sys +import zipfile +from pathlib import Path + +from jsonschema import Draft202012Validator + +from backtrader_agent.audit import SCHEMA_NAMES +from backtrader_agent.contracts import StrategySpec + +from helpers import strategy_spec + +PRODUCT_ROOT = Path(__file__).resolve().parents[1] +PACKAGE_ROOT = PRODUCT_ROOT / "src" / "backtrader_agent" + + +def test_source_distribution_manifest_covers_every_file() -> None: + manifest_path = PRODUCT_ROOT / "manifest.json" + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + excluded_parts = {"__pycache__", ".pytest_cache", "dist", "build", ".git"} + actual = { + path.relative_to(PRODUCT_ROOT).as_posix() + for path in PRODUCT_ROOT.rglob("*") + if path.is_file() + and path != manifest_path + and not excluded_parts.intersection(path.parts) + and not any(part.endswith(".egg-info") for part in path.parts) + and path.suffix != ".pyc" + } + assert manifest["file_count"] == len(actual) + assert set(manifest["files"]) == actual + for relative, expected_hash in manifest["files"].items(): + digest = hashlib.sha256((PRODUCT_ROOT / relative).read_bytes()).hexdigest() + assert digest == expected_hash + + +def test_public_contract_assets_are_named_and_canonical() -> None: + contracts = PACKAGE_ROOT / "resources" / "contracts" + assert {path.name for path in contracts.glob("*.json")} == SCHEMA_NAMES + parsed = { + path.name: json.loads(path.read_text(encoding="utf-8")) for path in contracts.glob("*.json") + } + for schema in parsed.values(): + Draft202012Validator.check_schema(schema) + data_schema = parsed["dataset-manifest-v1.schema.json"] + assert "DataSpec" in data_schema["$defs"] + assert set(data_schema["$defs"]["DataSpec"]["required"]) == { + "schema_version", + "spec_hash", + "feeds", + "master_feed", + "alignment", + "transforms", + } + session_schema = parsed["agent-session-manifest-v1.schema.json"] + assert "AgentEvent" in session_schema["$defs"] + comparison = json.loads( + (PACKAGE_ROOT / "resources/policies/comparison-profile-v1.json").read_text(encoding="utf-8") + ) + assert comparison["profile_version"] == "comparison-profile-v1" + assert comparison["integer_metrics"] == [ + "bar_num", + "buy_count", + "sell_count", + "win_count", + "loss_count", + "trade_num", + ] + assert comparison["float_metrics"] == [ + "final_value", + "sharpe_ratio", + "annual_return", + "max_drawdown", + "return_rate", + ] + assert comparison["nullable_metrics"] == ["sharpe_ratio", "annual_return"] + assert comparison["default_float_tolerance"] == { + "rel_tol": 1e-7, + "abs_tol": 1e-9, + } + + canonical = StrategySpec.from_dict(strategy_spec("ds_" + "a" * 64)).to_dict() + Draft202012Validator(parsed["strategy-spec-v1.schema.json"]).validate(canonical) + assert canonical["spec_version"] == "strategy-spec-v1" + assert canonical["output_profile"] == "python_bundle" + assert canonical["archetype"] == "single_data_indicator" + assert "schema_version" not in canonical + assert "profile" not in canonical + assert "execution_modes" not in canonical + + legacy = strategy_spec("ds_" + "b" * 64) + legacy["schema_version"] = legacy.pop("spec_version") + legacy["profile"] = legacy.pop("output_profile") + legacy["execution_modes"] = legacy.pop("run_modes") + legacy["archetype"] = "single_indicator" + migrated = StrategySpec.from_dict(legacy).to_dict() + assert migrated["archetype"] == "single_data_indicator" + assert migrated["run_modes"] == ["runonce", "runnext"] + + corpus = json.loads( + (PACKAGE_ROOT / "resources/catalog/corpus-manifest.json").read_text(encoding="utf-8") + ) + Draft202012Validator(parsed["corpus-manifest-v1.schema.json"]).validate(corpus) + + +def test_built_wheel_contains_all_contracts_policy_catalog_and_payload(tmp_path: Path) -> None: + source_copy = tmp_path / "source" + shutil.copytree( + PRODUCT_ROOT, + source_copy, + ignore=shutil.ignore_patterns( + "build", "*.egg-info", "__pycache__", ".pytest_cache", "*.pyc" + ), + ) + wheel_dir = tmp_path / "wheel" + wheel_dir.mkdir() + subprocess.run( + [ + sys.executable, + "-m", + "pip", + "wheel", + str(source_copy), + "--no-deps", + "--no-build-isolation", + "--wheel-dir", + str(wheel_dir), + ], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + wheel = next(wheel_dir.glob("backtrader_agent-*.whl")) + with zipfile.ZipFile(wheel) as archive: + names = set(archive.namelist()) + for schema_name in SCHEMA_NAMES: + assert f"backtrader_agent/resources/contracts/{schema_name}" in names + assert "backtrader_agent/resources/policies/comparison-profile-v1.json" in names + assert "backtrader_agent/resources/catalog/corpus-v1.jsonl" in names + assert "backtrader_agent/resources/catalog/snapshot.jsonl" in names + assert "backtrader_agent/resources/catalog/corpus-manifest.json" in names + assert "backtrader_agent/resources/agent-payload.md" in names + for relative in ( + "claude-code/backtrader-agent.md", + "codex/backtrader-agent.toml", + "opencode/backtrader-agent.md", + "openclaw/workspace/AGENTS.md", + "openclaw/workspace/IDENTITY.md", + "openclaw/workspace/README.md", + "openclaw/workspace/registration-manifest.template.json", + ): + assert f"backtrader_agent/resources/adapters/{relative}" in names + assert "backtrader_agent/resources/distribution-manifest.json" in names + with zipfile.ZipFile(wheel) as archive: + corpus = archive.read("backtrader_agent/resources/catalog/corpus-v1.jsonl") + assert ( + hashlib.sha256(corpus).hexdigest() + == "30973a10bd434e7935aa5b45577a5d5de0221a58b53a4c00a8124006438c5828" + ) + assert len(corpus.splitlines()) == 1156 + + clean_target = tmp_path / "clean-site" + subprocess.run( + [ + sys.executable, + "-m", + "pip", + "install", + "--no-deps", + "--target", + str(clean_target), + str(wheel), + ], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + outside = tmp_path / "outside-repository" + outside.mkdir() + completed = subprocess.run( + [ + sys.executable, + "-S", + "-c", + ( + "from backtrader_agent.catalog import SnapshotCatalog; " + "c=SnapshotCatalog(); print(c.manifest['entry_count'], len(c.templates()))" + ), + ], + cwd=outside, + env={"PYTHONPATH": str(clean_target), "PATH": os.environ.get("PATH", "")}, + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + assert completed.stdout.strip() == "1155 14" diff --git a/tests/test_run_resume.py b/tests/test_run_resume.py new file mode 100644 index 0000000..96b1314 --- /dev/null +++ b/tests/test_run_resume.py @@ -0,0 +1,111 @@ +from pathlib import Path + +import pytest + +from backtrader_agent.canonical import atomic_write_json, hash_object +from backtrader_agent.errors import AgentError +from backtrader_agent.report import METRIC_NAMES +from backtrader_agent.roots import RootRegistry +from backtrader_agent.runner import ControlledRunner +from backtrader_agent.sessions import SessionStore +from backtrader_agent.tokens import TokenAuthority + + +def _running_session(store: SessionStore, session_id: str, subject: str, effect_id: str) -> None: + store.create(session_id) + for state in ( + "DATA_READY", + "SPEC_DRAFT", + "SPEC_APPROVED", + "SOURCES_SELECTED", + "DRAFT_READY", + "VALIDATED", + "APPLY_PREPARED", + ): + store.transition(session_id, state, state.lower(), {"input": state}) + store.transition( + session_id, + "APPLIED", + "changes-apply", + {"applied": "a" * 64}, + approval_token_id="tok-change", + ) + store.transition( + session_id, + "RUN_APPROVED", + "run-approve", + {"run": subject}, + approval_token_id="tok-run", + ) + store.transition( + session_id, + "RUNNING", + "controlled-run-start", + {"run": subject}, + idempotency_key="run-effect", + approval_token_id="tok-run", + effect_references={ + "run_subject_hash": subject, + "run_effect_id": effect_id, + }, + ) + + +def test_partial_report_and_paused_session_resume_same_effect(tmp_path: Path) -> None: + state = tmp_path / "state" + subject = "a" * 64 + effect_id = "b" * 64 + sessions = SessionStore(state) + _running_session(sessions, "session-resume", subject, effect_id) + assert sessions.recover("session-resume")["state"] == "PAUSED" + + with pytest.raises(AgentError, match="BTAG-RUN-SESSION"): + ControlledRunner._begin_or_resume_session( + sessions, + session_id="session-resume", + subject=subject, + effect_id="c" * 64, + idempotency_key="run-effect", + run_token={"token_id": "tok-run"}, + ) + + result = { + "schema_version": "run-result-v1", + "run_id": "run-" + subject[:20], + "status": "passed", + "metrics": dict.fromkeys(METRIC_NAMES, 1), + "diagnostics": [], + "artifacts": [], + "extensions": { + "backtrader_agent": { + "mode": "runonce", + "dataset_manifest_hash": "d" * 64, + "applied_artifact_hash": "e" * 64, + "manifest_hash": "f" * 64, + "validation_token_id": "tok-validation", + "run_token_id": "tok-run", + "limitations": [], + } + }, + } + result["result_hash"] = hash_object(result) + run_root = state / "runs" / result["run_id"] + run_root.mkdir(parents=True) + atomic_write_json(run_root / "run-result.json", result, create_only=True) + + runner = ControlledRunner(RootRegistry(state), state, TokenAuthority(state)) + reports = runner._render_reports_resumable(run_root, result) + assert (run_root / "report.md").is_file() + assert (run_root / "report.html").is_file() + + runner._finish_successful_session( + sessions, + session_id="session-resume", + subject=subject, + effect_id=effect_id, + idempotency_key="run-effect", + run_token={"token_id": "tok-run"}, + result=result, + report_hash=reports["report_hash"], + ) + assert sessions.load("session-resume")["state"] == "COMPLETED" diff --git a/tests/test_runner_installer_audit.py b/tests/test_runner_installer_audit.py new file mode 100644 index 0000000..9a50b92 --- /dev/null +++ b/tests/test_runner_installer_audit.py @@ -0,0 +1,816 @@ +import json +import os +import shlex +import shutil +import subprocess +import sys +from pathlib import Path + +import pytest +from jsonschema import Draft202012Validator + +import backtrader_agent +from backtrader_agent.audit import IndependenceAuditor +from backtrader_agent.changes import ChangeManager +from backtrader_agent.catalog import SnapshotCatalog +from backtrader_agent.canonical import hash_object +from backtrader_agent.contracts import ARCHETYPES, StrategySpec +from backtrader_agent.data import DatasetService +from backtrader_agent.engines import inspect_engine +from backtrader_agent.errors import AgentError +from backtrader_agent.installer import AdapterInstaller +from backtrader_agent.roots import RootRegistry +from backtrader_agent.report import compare_metrics +from backtrader_agent.runner import ControlledRunner +from backtrader_agent.scaffold import ArtifactRenderer +from backtrader_agent.sessions import SessionStore +from backtrader_agent.tokens import TokenAuthority +from backtrader_agent.validator import StrategyValidator + +from helpers import ( + data_spec, + resolve_acceptance_engine_root, + strategy_spec, + write_adapter_price_csv, + write_price_csv, +) + +PACKAGE_ROOT = Path(backtrader_agent.__file__).resolve().parent +PRODUCT_ROOT = PACKAGE_ROOT.parents[1] +CONTRACT_ROOT = PACKAGE_ROOT / "resources/contracts" +BACKTRADER_ROOT = resolve_acceptance_engine_root(PRODUCT_ROOT) + + +def validate_contract(name: str, value: dict) -> None: + schema = json.loads((CONTRACT_ROOT / name).read_text(encoding="utf-8")) + Draft202012Validator(schema).validate(value) + + +def test_controlled_child_environment_does_not_forward_home() -> None: + environment = ControlledRunner._child_environment([], "runonce") + assert "HOME" not in environment + completed = subprocess.run( + [ + sys.executable, + "-c", + "import os; print('present' if 'HOME' in os.environ else 'absent')", + ], + check=True, + env=environment, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + assert completed.stdout.strip() == "absent" + + +ADAPTER_BY_ARCHETYPE = { + "single_data_indicator": "generic_csv", + "multi_indicator_system": "backtrader_csv", + "multi_asset_allocation": "yahoo_csv", + "multi_timeframe": "mt5_csv", + "pairs_spread": "pandas", + "order_risk": "generic_csv", + "precomputed_ml": "pandas_custom_lines", +} + + +def _matrix_data_spec(archetype: str) -> dict: + value = data_spec() + primary = value["feeds"][0] + adapter = ADAPTER_BY_ARCHETYPE[archetype] + primary["format"] = adapter + primary["columns"] = {"signal": "signal"} if adapter == "pandas_custom_lines" else {} + primary.pop("datetime_format", None) + if archetype == "multi_timeframe": + primary["timeframe"] = "Minutes" + primary["delimiter"] = "\t" + if archetype in {"multi_asset_allocation", "multi_timeframe", "pairs_spread"}: + secondary = { + **primary, + "columns": dict(primary["columns"]), + "feed_id": "secondary", + "name": "secondary", + "role": "signal" if archetype != "pairs_spread" else "hedge", + "relative_path": "secondary.csv", + } + value["feeds"].append(secondary) + if archetype == "multi_timeframe": + value["transforms"] = [ + { + "profile_id": "resample", + "parameters": { + "feed": "secondary", + "timeframe": "Days", + "compression": 1, + }, + } + ] + return value + + +def _execute_matrix_mode( + root: Path, + profile: str, + archetype: str, + mode: str, +) -> tuple: + workspace = root / "workspace" + input_root = root / "input" + workspace.mkdir(parents=True) + input_root.mkdir(parents=True) + adapter = ADAPTER_BY_ARCHETYPE[archetype] + write_adapter_price_csv(input_root / "prices.csv", adapter, rows=40) + write_adapter_price_csv( + input_root / "secondary.csv", + adapter, + rows=40, + price_offset=7.0, + ) + state = workspace / ".backtrader-agent" + + roots = RootRegistry(state) + roots.register("workspace", workspace, writable=True, kind="workspace") + roots.register("input", input_root, writable=False, kind="dataset") + roots.register("engine", BACKTRADER_ROOT, writable=False, kind="engine") + engine = inspect_engine(roots, "engine") + sessions = SessionStore(state) + session_id = f"session-{mode}" + sessions.create(session_id) + dataset_input = _matrix_data_spec(archetype) + dataset = DatasetService(roots, state).register(dataset_input) + sessions.transition( + session_id, + "DATA_READY", + "dataset-register", + {"dataset": dataset["manifest_hash"]}, + effect_references={ + "dataset_id": dataset["dataset_id"], + "dataset_manifest_hash": dataset["manifest_hash"], + }, + ) + raw_spec = strategy_spec( + dataset["dataset_id"], + profile=profile, + archetype=archetype, + ) + raw_spec["feeds"] = [{"name": feed["name"], "role": feed["role"]} for feed in dataset["feeds"]] + spec = StrategySpec.from_dict(raw_spec) + sessions.transition( + session_id, + "SPEC_DRAFT", + "spec-draft", + {"spec": spec.spec_hash}, + effect_references={"spec_hash": spec.spec_hash}, + ) + sessions.transition( + session_id, + "SPEC_APPROVED", + "spec-approve", + {"spec": spec.spec_hash}, + effect_references={"approved_spec_hash": spec.spec_hash}, + ) + sources = SnapshotCatalog().search(archetype.replace("_", " "), top_k=1) + assert sources + sessions.transition( + session_id, + "SOURCES_SELECTED", + "sources-select", + {"catalog": sources[0]["source_hash"]}, + effect_references={"selected_source_hash": sources[0]["source_hash"]}, + ) + artifact = ArtifactRenderer(state).render(session_id, spec, dataset) + sessions.transition( + session_id, + "DRAFT_READY", + "draft-render", + {"artifact": artifact["artifact_hash"]}, + effect_references={"artifact_hash": artifact["artifact_hash"]}, + ) + assert { + "schema_version", + "artifact_id", + "spec_hash", + "dataset_id", + "output_profile", + "files", + "artifact_hash", + }.issubset(artifact) + validate_contract( + "artifact-manifest-v1.schema.json", + {key: value for key, value in artifact.items() if not key.startswith("_")}, + ) + + authority = TokenAuthority(state) + validator = StrategyValidator(authority) + validation_report = validator.validate_artifact( + artifact, + bindings={ + "dataset_hash": dataset["manifest_hash"], + "engine_hash": engine["engine_hash"], + "engine_root_id": "engine", + "environment_hash": "test-environment", + }, + approval="validator", + session_id=session_id, + ) + assert validation_report["status"] == "passed" + sessions.transition( + session_id, + "VALIDATED", + "strategy-validate", + {"validation": validation_report["validation_hash"]}, + effect_references={ + "artifact_record_hash": validation_report["validation_token"]["bindings"][ + "artifact_record_hash" + ], + "validation_hash": validation_report["validation_hash"], + "validation_token_hash": hash_object(validation_report["validation_token"]), + "validation_token_id": validation_report["validation_token"]["token_id"], + }, + ) + assert { + "schema_version", + "validation_id", + "artifact_hash", + "dataset_id", + "status", + "diagnostics", + "evidence", + "validation_hash", + }.issubset(validation_report) + validate_contract("validation-report-v1.schema.json", validation_report) + validation_token = validation_report["validation_token"] + + changes = ChangeManager(roots, state, authority) + prepared = changes.prepare( + session_id=session_id, + draft_root=Path(artifact["_draft_path"]), + files=[ + { + "source": item["path"], + "target": f"strategies/generated/e2e/{mode}/{item['path']}", + } + for item in artifact["files"] + ], + target_root_id="workspace", + validation_token=validation_token, + ) + change_request = authority.prepare_approval( + "change", + prepared["manifest_hash"], + { + "artifact_hash": prepared["artifact_hash"], + "artifact_record_hash": prepared["artifact_record_hash"], + "change_manifest_hash": prepared["manifest_hash"], + "dataset_hash": prepared["dataset_manifest_hash"], + "dataset_id": prepared["dataset_id"], + "spec_hash": prepared["spec_hash"], + "validation_token_hash": prepared["validation_token_hash"], + "validation_token_id": validation_token["token_id"], + "session_id": session_id, + }, + ) + change_token = authority.grant_approval( + change_request["request_id"], + approver="local-user", + confirmed=True, + )["token"] + applied = changes.apply(prepared, change_token, idempotency_key=f"e2e-apply-{mode}") + assert sessions.load(session_id)["state"] == "APPLIED" + + run_subject = ControlledRunner.compute_run_subject( + applied, + dataset, + validation_token, + mode=mode, + ) + run_request = authority.prepare_approval( + "run", + run_subject, + { + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied["applied_record_hash"], + "artifact_hash": applied["artifact_hash"], + "artifact_record_hash": applied["artifact_record_hash"], + "change_manifest_hash": applied["change_manifest_hash"], + "validation_token_id": validation_token["token_id"], + "validation_token_hash": hash_object(validation_token), + "dataset_hash": dataset["manifest_hash"], + "dataset_id": dataset["dataset_id"], + "mode": mode, + "session_id": session_id, + "spec_hash": applied["spec_hash"], + }, + ) + run_token = authority.grant_approval( + run_request["request_id"], + approver="local-user", + confirmed=True, + )["token"] + assert sessions.load(session_id)["state"] == "RUN_APPROVED" + result = ControlledRunner(roots, state, authority).run( + applied, + dataset, + validation_token, + run_token, + mode=mode, + idempotency_key=f"e2e-run-{mode}", + timeout_seconds=30, + ) + assert result["status"] == "passed" + assert sessions.load(session_id)["state"] == "COMPLETED" + assert result["metrics"]["final_value"] is not None + assert result["metrics"]["return_rate"] == pytest.approx( + (result["metrics"]["final_value"] / 100000.0 - 1.0) * 100.0 + ) + assert isinstance(result["artifacts"], list) + assert { + "schema_version", + "run_id", + "status", + "metrics", + "diagnostics", + "artifacts", + "result_hash", + }.issubset(result) + validate_contract("run-result-v1.schema.json", result) + run_manifest = json.loads( + (state / "runs" / result["run_id"] / "run-manifest.json").read_text(encoding="utf-8") + ) + assert { + "schema_version", + "run_id", + "artifact_hash", + "dataset_id", + "engine", + "environment_hash", + "run_profile", + "approval_id", + "manifest_hash", + }.issubset(run_manifest) + validate_contract("run-manifest-v1.schema.json", run_manifest) + assert run_manifest["engine"]["root_id"] == "engine" + assert run_manifest["engine"]["hash"] == engine["engine_hash"] + assert run_manifest["engine"]["version"] == engine["version"] + assert run_manifest["engine"]["import_relative_path"] == "backtrader/__init__.py" + assert (state / "runs" / result["run_id"] / "report.md").is_file() + assert all(set(item) == {"path", "role", "bytes", "sha256"} for item in result["artifacts"]) + + repeated = ControlledRunner(roots, state, authority).run( + applied, + dataset, + validation_token, + run_token, + mode=mode, + idempotency_key=f"e2e-run-{mode}", + timeout_seconds=30, + ) + assert repeated == result + return result, dataset, run_manifest, sources[0] + + +@pytest.mark.parametrize("archetype", sorted(ARCHETYPES)) +@pytest.mark.parametrize("profile", ["python_bundle", "single_test"]) +def test_controlled_end_to_end_run_and_report( + tmp_path: Path, + profile: str, + archetype: str, +) -> None: + modes = {} + datasets = {} + manifests = {} + source = None + for mode in ("runonce", "runnext"): + result, dataset, run_manifest, source = _execute_matrix_mode( + tmp_path / mode, + profile, + archetype, + mode, + ) + modes[mode] = result + datasets[mode] = dataset + manifests[mode] = run_manifest + comparison = compare_metrics(modes["runonce"]["metrics"], modes["runnext"]["metrics"]) + assert comparison["status"] == "passed", comparison + assert datasets["runonce"]["semantic_hash"] == datasets["runnext"]["semantic_hash"] + assert manifests["runonce"]["run_profile"]["mode"] == "runonce" + assert manifests["runnext"]["run_profile"]["mode"] == "runnext" + + evidence_root = os.environ.get("BACKTRADER_AGENT_ACCEPTANCE_EVIDENCE_DIR") + if evidence_root: + evidence = { + "schema_version": "acceptance-cell-v1", + "cell_id": f"{archetype}:{profile}", + "archetype": archetype, + "profile": profile, + "status": "passed", + "modes": { + mode: { + "result_hash": modes[mode]["result_hash"], + "run_manifest_hash": manifests[mode]["manifest_hash"], + } + for mode in ("runonce", "runnext") + }, + "comparison": comparison, + "data": { + "formats": sorted({feed["format"] for feed in datasets["runonce"]["feeds"]}), + "feed_count": len(datasets["runonce"]["feeds"]), + "transforms": datasets["runonce"]["transforms"], + "custom_lines": sorted( + { + line + for feed in datasets["runonce"]["feeds"] + for line in feed.get("canonical_columns", [])[7:] + } + ), + }, + "source": { + "entry_id": source["entry_id"], + "source_hash": source["source_hash"], + }, + } + path = Path(evidence_root) / f"{archetype}--{profile}.json" + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(evidence, sort_keys=True) + "\n", encoding="utf-8") + + +def test_executable_validation_requires_signed_product_provenance(tmp_path: Path) -> None: + workspace = tmp_path / "workspace" + input_root = tmp_path / "input" + workspace.mkdir() + input_root.mkdir() + write_price_csv(input_root / "prices.csv") + state = workspace / ".backtrader-agent" + roots = RootRegistry(state) + roots.register("input", input_root, writable=False, kind="dataset") + sessions = SessionStore(state) + session_id = "provenance-1" + sessions.create(session_id) + dataset = DatasetService(roots, state).register(data_spec()) + sessions.transition( + session_id, + "DATA_READY", + "dataset-register", + {"dataset": dataset["manifest_hash"]}, + effect_references={ + "dataset_id": dataset["dataset_id"], + "dataset_manifest_hash": dataset["manifest_hash"], + }, + ) + spec = StrategySpec.from_dict(strategy_spec(dataset["dataset_id"])) + sessions.transition( + session_id, + "SPEC_DRAFT", + "spec-draft", + {"spec": spec.spec_hash}, + effect_references={"spec_hash": spec.spec_hash}, + ) + sessions.transition( + session_id, + "SPEC_APPROVED", + "spec-approve", + {"spec": spec.spec_hash}, + effect_references={"approved_spec_hash": spec.spec_hash}, + ) + sessions.transition(session_id, "SOURCES_SELECTED", "sources-select", {"catalog": "fixture"}) + artifact = ArtifactRenderer(state).render(session_id, spec, dataset) + sessions.transition( + session_id, + "DRAFT_READY", + "draft-render", + {"artifact": artifact["artifact_hash"]}, + effect_references={"artifact_hash": artifact["artifact_hash"]}, + ) + authority = TokenAuthority(state) + validator = StrategyValidator(authority) + bindings = { + "dataset_hash": dataset["manifest_hash"], + "engine_hash": "e" * 64, + "environment_hash": "test-environment", + } + assert ( + validator.validate_artifact( + artifact, + bindings=bindings, + approval="validator", + session_id=session_id, + )["status"] + == "passed" + ) + + forged = { + key: value + for key, value in artifact.items() + if key not in {"artifact_hash", "_artifact_record_hash"} + } + forged["artifact_id"] = "artifact-forged" + forged["artifact_hash"] = hash_object( + { + key: value + for key, value in forged.items() + if not key.startswith("_") and key != "artifact_hash" + } + ) + with pytest.raises(AgentError, match="BTAG-PROVENANCE-MISSING"): + validator.validate_artifact( + forged, + bindings=bindings, + approval="validator", + session_id=session_id, + ) + + external_draft = tmp_path / "external-draft" + shutil.copytree(Path(artifact["_draft_path"]), external_draft) + outside = {**artifact, "_draft_path": str(external_draft)} + with pytest.raises(AgentError, match="BTAG-PROVENANCE-BINDING"): + validator.validate_artifact( + outside, + bindings=bindings, + approval="validator", + session_id=session_id, + ) + + sessions.create("provenance-2", parent_session_id=session_id) + with pytest.raises(AgentError, match="BTAG-PROVENANCE-MISSING"): + validator.validate_artifact( + artifact, + bindings=bindings, + approval="validator", + session_id="provenance-2", + ) + + record_path = ( + state / "sessions" / session_id / "artifacts" / f"{artifact['artifact_hash']}.json" + ) + record = json.loads(record_path.read_text(encoding="utf-8")) + record["dataset_id"] = "ds_" + "f" * 64 + record_path.write_text(json.dumps(record, sort_keys=True) + "\n", encoding="utf-8") + with pytest.raises(AgentError, match="BTAG-PROVENANCE-SIGNATURE"): + validator.validate_artifact( + artifact, + bindings=bindings, + approval="validator", + session_id=session_id, + ) + + +def test_run_approval_is_bound_to_the_session_applied_artifact(tmp_path: Path) -> None: + state = tmp_path / "state" + sessions = SessionStore(state) + session_id = "run-binding" + sessions.create(session_id) + artifact_hash = "a" * 64 + artifact_record_hash = "r" * 64 + spec_hash = "b" * 64 + dataset_id = "ds_" + "d" * 64 + dataset_hash = "d" * 64 + validation_token_id = "tok-validation" + validation_token_hash = "v" * 64 + change_manifest_hash = "c" * 64 + transitions = ( + ( + "DATA_READY", + "dataset-register", + {"dataset_id": dataset_id, "dataset_manifest_hash": dataset_hash}, + ), + ("SPEC_DRAFT", "spec-draft", {"spec_hash": spec_hash}), + ("SPEC_APPROVED", "spec-approve", {"approved_spec_hash": spec_hash}), + ("SOURCES_SELECTED", "sources-select", {}), + ("DRAFT_READY", "draft-render", {"artifact_hash": artifact_hash}), + ( + "VALIDATED", + "strategy-validate", + { + "artifact_record_hash": artifact_record_hash, + "validation_hash": "e" * 64, + "validation_token_hash": validation_token_hash, + "validation_token_id": validation_token_id, + }, + ), + ( + "APPLY_PREPARED", + "changes-prepare", + {"change_manifest_hash": change_manifest_hash}, + ), + ) + for state_name, action, effects in transitions: + sessions.transition( + session_id, + state_name, + action, + {"input": hash_object({"state": state_name})}, + effect_references=effects, + ) + + authority = TokenAuthority(state) + applied_portable = { + "schema_version": "applied-artifact-v1", + "applied_artifact_id": "applied-fixture", + "generated_by": "backtrader-agent", + "session_id": session_id, + "target_root_id": "workspace", + "profile": "single_test", + "entrypoint": "test_fixture.py", + "artifact_hash": artifact_hash, + "artifact_record_hash": artifact_record_hash, + "spec_hash": spec_hash, + "dataset_id": dataset_id, + "dataset_manifest_hash": dataset_hash, + "change_manifest_hash": change_manifest_hash, + "validation_token_id": validation_token_id, + "validation_token_hash": validation_token_hash, + "approval_id": "approval-change", + "files": [], + } + applied_portable["applied_artifact_hash"] = hash_object(applied_portable) + applied = {**applied_portable, "status": "applied"} + applied_record = authority.store_bound_record( + "applied-artifact", + session_id, + applied["applied_artifact_hash"], + {"applied_artifact": applied}, + ) + sessions.transition( + session_id, + "APPLIED", + "changes-apply", + {"applied": applied["applied_artifact_hash"]}, + effect_references={ + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied_record["record_hash"], + }, + ) + mode = "runonce" + subject = hash_object( + { + "applied_artifact_hash": applied["applied_artifact_hash"], + "dataset_manifest_hash": dataset_hash, + "validation_token_id": validation_token_id, + "mode": mode, + "profile": "controlled-runner-v1", + } + ) + bindings = { + "applied_artifact_hash": applied["applied_artifact_hash"], + "applied_record_hash": applied_record["record_hash"], + "artifact_hash": artifact_hash, + "artifact_record_hash": artifact_record_hash, + "change_manifest_hash": change_manifest_hash, + "dataset_hash": dataset_hash, + "dataset_id": dataset_id, + "mode": mode, + "session_id": session_id, + "spec_hash": spec_hash, + "validation_token_hash": validation_token_hash, + "validation_token_id": validation_token_id, + } + with pytest.raises(AgentError, match="BTAG-RUN-MODE"): + authority.prepare_approval( + "run", + hash_object( + { + "applied_artifact_hash": applied["applied_artifact_hash"], + "dataset_manifest_hash": dataset_hash, + "validation_token_id": validation_token_id, + "mode": "arbitrary", + "profile": "controlled-runner-v1", + } + ), + {**bindings, "mode": "arbitrary"}, + ) + for field in ( + "applied_artifact_hash", + "applied_record_hash", + "artifact_record_hash", + "change_manifest_hash", + "validation_token_hash", + "validation_token_id", + ): + forged = {**bindings, field: "f" * 64} + if field == "validation_token_id": + forged[field] = "tok-forged" + with pytest.raises((AgentError, KeyError), match="BTAG-(APPROVAL|RECORD)"): + authority.prepare_approval("run", subject, forged) + + request = authority.prepare_approval("run", subject, bindings) + record_path = ( + state + / "sessions" + / session_id + / "records" + / "applied-artifact" + / f"{applied['applied_artifact_hash']}.json" + ) + record_bytes = record_path.read_bytes() + forged_record = json.loads(record_bytes) + forged_record["artifact_record_hash"] = "f" * 64 + record_path.write_text(json.dumps(forged_record, sort_keys=True) + "\n", encoding="utf-8") + with pytest.raises(AgentError, match="BTAG-PROVENANCE-SIGNATURE"): + authority.grant_approval( + request["request_id"], + approver="local-user", + confirmed=True, + ) + record_path.write_bytes(record_bytes) + + request = authority.prepare_approval("run", subject, bindings) + grant = authority.grant_approval( + request["request_id"], + approver="local-user", + confirmed=True, + ) + assert grant["token"]["bindings"] == bindings + assert sessions.load(session_id)["state"] == "RUN_APPROVED" + + +def test_installer_is_create_only_idempotent_and_independence_audit_passes( + tmp_path: Path, +) -> None: + installer = AdapterInstaller() + expected = { + "claude": ".claude/agents/backtrader-agent.md", + "codex": ".codex/agents/backtrader-agent.toml", + "opencode": ".opencode/agents/backtrader-agent.md", + "openclaw": ".openclaw/workspaces/backtrader-agent/AGENTS.md", + } + targets = {} + results = {} + for host, relative in expected.items(): + target = tmp_path / (f"{host} target" if host == "openclaw" else f"{host}-target") + target.mkdir() + targets[host] = target + preview = installer.install(target, host, apply=False) + assert preview["status"] == "preview" + results[host] = installer.install(target, host, apply=True) + repeated = installer.install(target, host, apply=True) + assert results[host]["status"] == "installed" + assert repeated["status"] == "unchanged" + assert (target / relative).is_file() + assert installer.uninstall(target, host, apply=False)["status"] == "preview" + + canonical_pairs = ( + ( + PRODUCT_ROOT / "adapters/claude-code/backtrader-agent.md", + PACKAGE_ROOT / "resources/adapters/claude-code/backtrader-agent.md", + ), + ( + PRODUCT_ROOT / "adapters/codex/backtrader-agent.toml", + PACKAGE_ROOT / "resources/adapters/codex/backtrader-agent.toml", + ), + ( + PRODUCT_ROOT / "adapters/opencode/backtrader-agent.md", + PACKAGE_ROOT / "resources/adapters/opencode/backtrader-agent.md", + ), + ( + PRODUCT_ROOT / "adapters/openclaw/workspace/AGENTS.md", + PACKAGE_ROOT / "resources/adapters/openclaw/workspace/AGENTS.md", + ), + ( + PRODUCT_ROOT / "adapters/openclaw/workspace/IDENTITY.md", + PACKAGE_ROOT / "resources/adapters/openclaw/workspace/IDENTITY.md", + ), + ( + PRODUCT_ROOT / "adapters/openclaw/workspace/README.md", + PACKAGE_ROOT / "resources/adapters/openclaw/workspace/README.md", + ), + ( + PRODUCT_ROOT / "adapters/openclaw/workspace/registration-manifest.template.json", + PACKAGE_ROOT + / "resources/adapters/openclaw/workspace/registration-manifest.template.json", + ), + ) + for source, packaged in canonical_pairs: + assert source.read_bytes() == packaged.read_bytes() + assert (PRODUCT_ROOT / "SKILL.md").read_bytes() == ( + PACKAGE_ROOT / "resources/agent-payload.md" + ).read_bytes() + + openclaw_target = targets["openclaw"] + openclaw = results["openclaw"] + workspace = openclaw_target / ".openclaw/workspaces/backtrader-agent" + assert (workspace / "AGENTS.md").is_file() + assert (workspace / "IDENTITY.md").is_file() + assert (workspace / "registration-manifest.json").is_file() + assert not (openclaw_target / ".openclaw/agents/backtrader-agent/agent.json").exists() + registration = json.loads( + (workspace / "registration-manifest.json").read_text(encoding="utf-8") + ) + registration_argv = shlex.split(registration["registration_command"]) + assert registration_argv[registration_argv.index("--workspace") + 1] == str(workspace) + assert shlex.split(registration["invocation_command"])[-1] == registration["first_request"] + assert openclaw["manual_registration"]["command"] == registration["registration_command"] + assert openclaw["manual_registration"]["invoke"] == registration["invocation_command"] + assert openclaw["manual_registration"]["executed"] is False + assert registration_argv[:4] == ["openclaw", "agents", "add", "backtrader-agent"] + assert registration_argv[-1] == "--non-interactive" + assert openclaw["manual_registration"]["verify"] == "openclaw agents list" + + for host, relative in expected.items(): + removed = installer.uninstall(targets[host], host, apply=True) + assert removed["status"] == "uninstalled" + assert not (targets[host] / relative).exists() + + product_root = Path(__file__).resolve().parents[1] + report = IndependenceAuditor(product_root).audit() + assert report["status"] == "passed", report diff --git a/tests/test_scaffold_validator_catalog.py b/tests/test_scaffold_validator_catalog.py new file mode 100644 index 0000000..85e85a3 --- /dev/null +++ b/tests/test_scaffold_validator_catalog.py @@ -0,0 +1,101 @@ +from pathlib import Path + +import pytest + +from backtrader_agent.catalog import SnapshotCatalog +from backtrader_agent.contracts import StrategySpec +from backtrader_agent.scaffold import ARCHETYPES, PROFILES, ArtifactRenderer +from backtrader_agent.validator import StrategyValidator + +from helpers import strategy_spec + + +def test_all_fourteen_scaffolds_render_and_validate_without_requiring_direct_strategy_super( + tmp_path: Path, +) -> None: + renderer = ArtifactRenderer(tmp_path / "state") + validator = StrategyValidator() + dataset = { + "dataset_id": "ds_" + "a" * 64, + "manifest_hash": "a" * 64, + "feeds": [ + {"name": "primary", "role": "execution", "columns": {"signal": "signal"}}, + {"name": "secondary", "role": "signal", "columns": {}}, + ], + } + + for archetype in ARCHETYPES: + for profile in PROFILES: + spec = StrategySpec.from_dict( + strategy_spec("ds_" + "a" * 64, archetype=archetype, profile=profile) + ) + artifact = renderer.render("session-1", spec, dataset) + report = validator.validate_artifact(artifact) + assert report["status"] == "passed", (archetype, profile, report["diagnostics"]) + strategy_file = next(item for item in artifact["files"] if item["role"] == "strategy") + source = (Path(artifact["_draft_path"]) / strategy_file["path"]).read_text( + encoding="utf-8" + ) + assert "class GeneratedStrategy(bt.Strategy)" in source + assert "super().__init__()" not in source + + +def test_validator_rejects_dynamic_execution_but_accepts_legacy_style_strategy() -> None: + validator = StrategyValidator() + legacy = """ +import backtrader as bt +class LegacyStrategy(bt.Strategy): + params = (("period", 5),) + def __init__(self): + self.sma = bt.ind.SMA(self.data.close, period=self.p.period) +""" + assert validator.validate_source(legacy, "strategy.py") == [] + + dangerous = legacy + "\neval('1 + 1')\n" + diagnostics = validator.validate_source(dangerous, "strategy.py") + assert any(item["code"] == "BTAG-SEC-DYNAMIC" for item in diagnostics) + + +@pytest.mark.parametrize( + ("payload", "expected_code"), + [ + ("import os\nos.execlp('/bin/sh', 'sh')", "BTAG-SEC-CAPABILITY"), + ("from os import execlp\nexeclp('/bin/sh', 'sh')", "BTAG-SEC-FROM-IMPORT"), + ("from pathlib import Path\nPath('x').read_text()", "BTAG-SEC-IMPORT"), + ("open('secret.txt').read()", "BTAG-SEC-FILESYSTEM"), + ("reader = open\nreader('secret.txt')", "BTAG-SEC-FILESYSTEM"), + ("getattr(object(), '__class__')", "BTAG-SEC-REFLECTION"), + ("import socket\nsocket.socket()", "BTAG-SEC-IMPORT"), + ( + "from strategy_helper import os\nos.execlp('/bin/sh', 'sh')", + "BTAG-SEC-LOCAL-IMPORT", + ), + ("import backtrader_agent\nbacktrader_agent.cli.main()", "BTAG-SEC-IMPORT"), + ("import backtrader as bt\nbt.os.system('id')", "BTAG-SEC-CAPABILITY"), + ( + "import os\nvalue = os.environ.get('HOME')", + "BTAG-SEC-ENVIRONMENT", + ), + ], +) +def test_validator_denies_real_capability_escape_vectors(payload: str, expected_code: str) -> None: + source = ( + "import backtrader as bt\n" + "class EscapeStrategy(bt.Strategy):\n" + " def next(self):\n" + " pass\n" + f"{payload}\n" + ) + diagnostics = StrategyValidator().validate_source(source, "strategy_escape.py") + assert any(item["code"] == expected_code for item in diagnostics), diagnostics + + +def test_snapshot_search_is_deterministic_and_has_provenance() -> None: + catalog = SnapshotCatalog() + first = catalog.search("multi timeframe clock", top_k=3) + second = catalog.search("multi timeframe clock", top_k=3) + assert first == second + assert first + assert all(item["source_hash"] for item in first) + inspected = catalog.inspect(first[0]["entry_id"]) + assert inspected["source_available"] is False diff --git a/tests/test_tokens_changes_sessions.py b/tests/test_tokens_changes_sessions.py new file mode 100644 index 0000000..c411b75 --- /dev/null +++ b/tests/test_tokens_changes_sessions.py @@ -0,0 +1,460 @@ +import json +from pathlib import Path + +import pytest + +from backtrader_agent.canonical import atomic_write_json, hash_object, sha256_bytes +from backtrader_agent.changes import ChangeManager +from backtrader_agent.contracts import StrategySpec +from backtrader_agent.errors import AgentError +from backtrader_agent.roots import RootRegistry +from backtrader_agent.scaffold import ArtifactRenderer +from backtrader_agent.sessions import SessionStore +from backtrader_agent.tokens import TokenAuthority +from backtrader_agent.validator import StrategyValidator + +from helpers import strategy_spec + + +def _validated_product_artifact( + workspace: Path, + session_id: str, + *, + profile: str, +) -> tuple: + state = workspace / ".backtrader-agent" + roots = RootRegistry(state) + roots.register("workspace", workspace, writable=True, kind="workspace") + authority = TokenAuthority(state) + sessions = SessionStore(state) + sessions.create(session_id) + dataset = { + "dataset_id": "ds_" + "d" * 64, + "manifest_hash": "d" * 64, + "feeds": [ + { + "name": "primary", + "role": "execution", + "canonical_columns": [ + "datetime", + "open", + "high", + "low", + "close", + "volume", + "openinterest", + ], + } + ], + } + sessions.transition( + session_id, + "DATA_READY", + "dataset-register", + {"dataset": dataset["manifest_hash"]}, + effect_references={ + "dataset_id": dataset["dataset_id"], + "dataset_manifest_hash": dataset["manifest_hash"], + }, + ) + spec = StrategySpec.from_dict(strategy_spec(dataset["dataset_id"], profile=profile)) + sessions.transition( + session_id, + "SPEC_DRAFT", + "spec-draft", + {"spec": spec.spec_hash}, + effect_references={"spec_hash": spec.spec_hash}, + ) + sessions.transition( + session_id, + "SPEC_APPROVED", + "spec-approve", + {"spec": spec.spec_hash}, + effect_references={"approved_spec_hash": spec.spec_hash}, + ) + sessions.transition(session_id, "SOURCES_SELECTED", "sources-select", {"catalog": "fixture"}) + artifact = ArtifactRenderer(state).render(session_id, spec, dataset) + sessions.transition( + session_id, + "DRAFT_READY", + "draft-render", + {"artifact": artifact["artifact_hash"]}, + effect_references={"artifact_hash": artifact["artifact_hash"]}, + ) + report = StrategyValidator(authority).validate_artifact( + artifact, + bindings={ + "dataset_hash": dataset["manifest_hash"], + "engine_hash": "e" * 64, + "environment_hash": "test-environment", + }, + approval="validator", + session_id=session_id, + ) + validation = report["validation_token"] + sessions.transition( + session_id, + "VALIDATED", + "strategy-validate", + {"validation": report["validation_hash"]}, + effect_references={ + "artifact_record_hash": validation["bindings"]["artifact_record_hash"], + "validation_hash": report["validation_hash"], + "validation_token_hash": hash_object(validation), + "validation_token_id": validation["token_id"], + }, + ) + return artifact, validation, roots, authority + + +def _advance_to_validated(store: SessionStore, session_id: str) -> None: + store.create(session_id) + transitions = ( + ("DATA_READY", "dataset-register"), + ("SPEC_DRAFT", "spec-draft"), + ("SPEC_APPROVED", "spec-approve"), + ("SOURCES_SELECTED", "sources-select"), + ("DRAFT_READY", "draft-render"), + ("VALIDATED", "strategy-validate"), + ) + for state, action in transitions: + store.transition(session_id, state, action, {action: hash_object(action)}) + + +def test_hash_bound_tokens_and_expected_hash_make_apply_idempotent(tmp_path: Path) -> None: + workspace = tmp_path / "workspace" + workspace.mkdir() + state = workspace / ".backtrader-agent" + artifact, validation, roots, authority = _validated_product_artifact( + workspace, + "session-1", + profile="single_test", + ) + manager = ChangeManager(roots, state, authority) + source = artifact["files"][0]["path"] + change = manager.prepare( + session_id="session-1", + draft_root=Path(artifact["_draft_path"]), + files=[ + { + "source": source, + "target": "strategies/generated/demo/test_strategy.py", + } + ], + target_root_id="workspace", + validation_token=validation, + ) + request = authority.prepare_approval( + "change", + change["manifest_hash"], + { + "artifact_hash": change["artifact_hash"], + "artifact_record_hash": change["artifact_record_hash"], + "change_manifest_hash": change["manifest_hash"], + "dataset_hash": change["dataset_manifest_hash"], + "dataset_id": change["dataset_id"], + "spec_hash": change["spec_hash"], + "validation_token_hash": change["validation_token_hash"], + "validation_token_id": validation["token_id"], + "session_id": "session-1", + }, + ) + grant = authority.grant_approval( + request["request_id"], + approver="local-user", + confirmed=True, + ) + change_token = grant["token"] + + first = manager.apply(change, change_token, idempotency_key="apply-1") + second = manager.apply(change, change_token, idempotency_key="apply-1") + assert first == second + target = workspace / "strategies/generated/demo/test_strategy.py" + assert sha256_bytes(target.read_bytes()) == change["changes"][0]["source_hash"] + approval_record = json.loads( + (state / "approvals" / f"{request['request_id']}.json").read_text(encoding="utf-8") + ) + assert approval_record["state"] == "CONSUMED" + assert approval_record["token"] == change_token + + action_path = manager._action_path("apply-1") + canonical_action = json.loads(action_path.read_text(encoding="utf-8")) + victim_store = SessionStore(state) + _advance_to_validated(victim_store, "cache-victim") + victim_store.transition( + "cache-victim", + "APPLY_PREPARED", + "changes-prepare", + {"change_manifest": "f" * 64}, + effect_references={"change_manifest_hash": "f" * 64}, + ) + cross_session_action = json.loads(json.dumps(canonical_action)) + cross_session_action["result"]["session_id"] = "cache-victim" + atomic_write_json(action_path, cross_session_action) + with pytest.raises(AgentError, match="BTAG-(PROVENANCE-SIGNATURE|IDEMPOTENCY-RECORD)"): + manager.apply(change, change_token, idempotency_key="apply-1") + assert victim_store.load("cache-victim")["state"] == "APPLY_PREPARED" + + resigned_payload = { + key: value for key, value in cross_session_action.items() if key != "signature" + } + resigned_payload["record_hash"] = hash_object( + {key: value for key, value in resigned_payload.items() if key != "record_hash"} + ) + resigned_cross_session_action = { + **resigned_payload, + "signature": authority.sign_product_record(resigned_payload), + } + atomic_write_json(action_path, resigned_cross_session_action) + with pytest.raises(AgentError, match="BTAG-IDEMPOTENCY-RESULT"): + manager.apply(change, change_token, idempotency_key="apply-1") + assert victim_store.load("cache-victim")["state"] == "APPLY_PREPARED" + + atomic_write_json(action_path, canonical_action) + applied_record_path = ( + state + / "sessions" + / "session-1" + / "records" + / "applied-artifact" + / f"{first['applied_artifact_hash']}.json" + ) + canonical_applied_record = json.loads(applied_record_path.read_text(encoding="utf-8")) + tampered_applied_record = json.loads(json.dumps(canonical_applied_record)) + tampered_applied_record["applied_artifact"]["spec_hash"] = "0" * 64 + atomic_write_json(applied_record_path, tampered_applied_record) + with pytest.raises(AgentError, match="BTAG-PROVENANCE-SIGNATURE"): + manager.apply(change, change_token, idempotency_key="apply-1") + atomic_write_json(applied_record_path, canonical_applied_record) + + with pytest.raises(AgentError, match="BTAG-TOKEN-CONSUMED"): + manager.apply(change, change_token, idempotency_key="apply-2") + + with pytest.raises(AgentError, match="BTAG-TOKEN-KIND"): + authority.verify( + change_token, + kind="run", + subject_hash=change["manifest_hash"], + ) + with pytest.raises(AgentError, match="BTAG-TOKEN-BINDING"): + authority.verify(validation, kind="validation", subject_hash="0" * 64) + + +def test_change_approval_and_apply_reject_forged_manifest_external_draft_and_cross_session( + tmp_path: Path, +) -> None: + workspace = tmp_path / "workspace" + workspace.mkdir() + state = workspace / ".backtrader-agent" + artifact, validation, roots, authority = _validated_product_artifact( + workspace, + "secure-change", + profile="single_test", + ) + manager = ChangeManager(roots, state, authority) + source = artifact["files"][0]["path"] + prepared = manager.prepare( + session_id="secure-change", + draft_root=Path(artifact["_draft_path"]), + files=[{"source": source, "target": "generated/test_secure.py"}], + target_root_id="workspace", + validation_token=validation, + ) + bindings = { + "artifact_hash": prepared["artifact_hash"], + "artifact_record_hash": prepared["artifact_record_hash"], + "change_manifest_hash": prepared["manifest_hash"], + "dataset_hash": prepared["dataset_manifest_hash"], + "dataset_id": prepared["dataset_id"], + "session_id": prepared["session_id"], + "spec_hash": prepared["spec_hash"], + "validation_token_hash": prepared["validation_token_hash"], + "validation_token_id": prepared["validation_token_id"], + } + + forged = { + key: value + for key, value in prepared.items() + if not key.startswith("_") and key != "manifest_hash" + } + external = tmp_path / "external-draft" + external.mkdir() + forged_source = external / source + forged_source.parent.mkdir(parents=True, exist_ok=True) + forged_source.write_text("UNVALIDATED = True\n", encoding="utf-8") + forged["changes"] = [ + { + **forged["changes"][0], + "source_hash": sha256_bytes(forged_source.read_bytes()), + "size_bytes": len(forged_source.read_bytes()), + } + ] + forged["manifest_hash"] = hash_object(forged) + forged["_draft_path"] = str(external) + forged_bindings = { + **bindings, + "change_manifest_hash": forged["manifest_hash"], + } + with pytest.raises(AgentError, match="BTAG-RECORD-MISSING"): + authority.prepare_approval("change", forged["manifest_hash"], forged_bindings) + + cross_session_bindings = {**bindings, "session_id": "another-session"} + with pytest.raises(AgentError, match="BTAG-(SESSION-UNKNOWN|RECORD-MISSING)"): + authority.prepare_approval("change", prepared["manifest_hash"], cross_session_bindings) + + request = authority.prepare_approval("change", prepared["manifest_hash"], bindings) + token = authority.grant_approval( + request["request_id"], + approver="local-user", + confirmed=True, + )["token"] + external_source = external / source + external_source.write_text("UNVALIDATED = 'different bytes'\n", encoding="utf-8") + result = manager.apply( + {**prepared, "_draft_path": str(external)}, + token, + idempotency_key="secure-apply", + ) + target = workspace / "generated/test_secure.py" + signed_source = Path(artifact["_draft_path"]) / source + assert target.read_bytes() == signed_source.read_bytes() + assert target.read_bytes() != external_source.read_bytes() + assert result["applied_record_hash"] + + +def test_multifile_apply_rolls_back_second_file_failure_and_can_resume_same_effect( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + workspace = tmp_path / "workspace" + workspace.mkdir() + first_target = workspace / "generated/first.py" + second_target = workspace / "generated/second.py" + first_target.parent.mkdir(parents=True) + first_target.write_text("OLD_FIRST = 1\n", encoding="utf-8") + second_target.write_text("OLD_SECOND = 1\n", encoding="utf-8") + artifact, validation, roots, authority = _validated_product_artifact( + workspace, + "session-txn", + profile="python_bundle", + ) + state = workspace / ".backtrader-agent" + manager = ChangeManager(roots, state, authority) + sources = [item["path"] for item in artifact["files"] if item["path"].endswith(".py")] + expected_first = (Path(artifact["_draft_path"]) / sources[0]).read_text(encoding="utf-8") + expected_second = (Path(artifact["_draft_path"]) / sources[1]).read_text(encoding="utf-8") + change = manager.prepare( + session_id="session-txn", + draft_root=Path(artifact["_draft_path"]), + files=[ + {"source": sources[0], "target": "generated/first.py"}, + {"source": sources[1], "target": "generated/second.py"}, + ], + target_root_id="workspace", + validation_token=validation, + ) + request = authority.prepare_approval( + "change", + change["manifest_hash"], + { + "artifact_hash": change["artifact_hash"], + "artifact_record_hash": change["artifact_record_hash"], + "change_manifest_hash": change["manifest_hash"], + "dataset_hash": change["dataset_manifest_hash"], + "dataset_id": change["dataset_id"], + "spec_hash": change["spec_hash"], + "validation_token_hash": change["validation_token_hash"], + "validation_token_id": validation["token_id"], + "session_id": "session-txn", + }, + ) + token = authority.grant_approval(request["request_id"], approver="local-user", confirmed=True)[ + "token" + ] + + original_replace = manager._replace_target + + def fail_second(index: int, target: Path, staged: Path, create_only: bool) -> None: + if index == 1: + raise OSError("injected second-file failure") + original_replace(index, target, staged, create_only) + + monkeypatch.setattr(manager, "_replace_target", fail_second) + with pytest.raises(AgentError, match="BTAG-CHANGE-TRANSACTION"): + manager.apply(change, token, idempotency_key="txn-apply") + assert first_target.read_text(encoding="utf-8") == "OLD_FIRST = 1\n" + assert second_target.read_text(encoding="utf-8") == "OLD_SECOND = 1\n" + transaction = json.loads( + (state / "transactions" / change["change_id"] / "transaction.json").read_text( + encoding="utf-8" + ) + ) + assert transaction["state"] == "ROLLED_BACK" + + monkeypatch.setattr(manager, "_replace_target", original_replace) + result = manager.apply(change, token, idempotency_key="txn-apply") + assert result["status"] == "applied" + assert first_target.read_text(encoding="utf-8") == expected_first + assert second_target.read_text(encoding="utf-8") == expected_second + + +def test_session_journal_hash_chain_recovers_valid_prefix_and_isolates_tail(tmp_path: Path) -> None: + store = SessionStore(tmp_path / "state") + session = store.create("session-1") + assert session["state"] == "NEW" + store.transition("session-1", "DATA_READY", "dataset-register", {"dataset": "d" * 64}) + store.transition("session-1", "SPEC_DRAFT", "spec-draft", {"spec": "s" * 64}) + + journal = tmp_path / "state" / "sessions" / "session-1" / "journal.jsonl" + with journal.open("ab") as handle: + handle.write(b'{"partial":') + + recovered = store.recover("session-1") + assert recovered["state"] == "SPEC_DRAFT" + assert recovered["last_sequence"] == 2 + assert list(journal.parent.glob("journal.corrupt.*.jsonl")) + + with pytest.raises(AgentError, match="BTAG-STATE-TRANSITION"): + store.transition("session-1", "RUNNING", "illegal", {}) + + +def test_interrupted_running_session_recovers_to_paused_with_effects(tmp_path: Path) -> None: + state = tmp_path / "state" + store = SessionStore(state) + _advance_to_validated(store, "session-crash") + store.transition( + "session-crash", + "APPLY_PREPARED", + "changes-prepare", + {"change": "c" * 64}, + effect_references={"change_manifest_hash": "c" * 64}, + ) + store.transition( + "session-crash", + "APPLIED", + "changes-apply", + {"applied": "a" * 64}, + approval_token_id="tok-change", + effect_references={"applied_artifact_hash": "a" * 64}, + ) + store.transition( + "session-crash", + "RUN_APPROVED", + "run-approve", + {"run": "r" * 64}, + approval_token_id="tok-run", + ) + store.transition( + "session-crash", + "RUNNING", + "controlled-run-start", + {"run": "r" * 64}, + ) + + journal = state / "sessions/session-crash/journal.jsonl" + with journal.open("ab") as handle: + handle.write(b'{"partial":') + recovered = store.recover("session-crash") + assert recovered["state"] == "PAUSED" + assert recovered["artifacts"]["change_manifest_hash"] == "c" * 64 + assert recovered["artifacts"]["applied_artifact_hash"] == "a" * 64 + assert recovered["approvals"] == {"apply": "tok-change", "execute": "tok-run"} From 6336fa51622d0da19855bf7fff2f07a01a3e6844 Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 18:06:18 +0800 Subject: [PATCH 2/6] chore: add CI workflow, examples, and governance documentation - .github/workflows/ci.yml: Python 3.9/3.11/3.12 matrix running unit tests, independence audit, doctor, manifest freshness, and the acceptance matrix. - examples/: offline CSV, DataSpec, StrategySpec, and an end-to-end walkthrough. - SECURITY.md: enforced properties and known sandbox limits. - CONTRIBUTING.md: dev setup, manifest-regeneration duty, independence rules. - CHANGELOG.md: P0 release and the hardening pass. - .gitignore: ignore the .backtrader-agent/ runtime state root. --- .github/workflows/ci.yml | 49 ++++++++++++++++++++++++ .gitignore | 5 +++ CHANGELOG.md | 55 +++++++++++++++++++++++++++ CONTRIBUTING.md | 76 +++++++++++++++++++++++++++++++++++++ SECURITY.md | 72 +++++++++++++++++++++++++++++++++++ examples/README.md | 54 ++++++++++++++++++++++++++ examples/data-spec.json | 32 ++++++++++++++++ examples/prices.csv | 13 +++++++ examples/strategy-spec.json | 58 ++++++++++++++++++++++++++++ 9 files changed, 414 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 SECURITY.md create mode 100644 examples/README.md create mode 100644 examples/data-spec.json create mode 100644 examples/prices.csv create mode 100644 examples/strategy-spec.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..cc3001b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +jobs: + test: + name: Test (Python ${{ matrix.python-version }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install backtrader jsonschema pytest + + - name: Resolve Backtrader engine root + run: | + echo "BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT=$(python -c 'import backtrader, pathlib; print(pathlib.Path(backtrader.__file__).resolve().parent.parent)')" >> "$GITHUB_ENV" + + - name: Unit tests + run: python -m pytest tests -q -p no:cacheprovider + + - name: Independence audit + run: python scripts/audit_independence.py + + - name: Doctor + run: python scripts/doctor.py + + - name: Distribution manifest freshness + run: | + python scripts/build_manifest.py + git diff --exit-code -- manifest.json src/backtrader_agent/resources/distribution-manifest.json + + - name: Acceptance matrix + run: python scripts/run_acceptance.py diff --git a/.gitignore b/.gitignore index 83972fa..965ce6b 100644 --- a/.gitignore +++ b/.gitignore @@ -216,3 +216,8 @@ __marimo__/ # Streamlit .streamlit/secrets.toml + +# backtrader-agent runtime state root (opaque registry, CAS, sessions, runs). +# Only this narrow directory should be added to a target repo's ignore file. +.backtrader-agent/ + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d95b677 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,55 @@ +# Changelog + +All notable changes to `backtrader-agent` are documented here. The product +follows the offline-first, deterministic, independence-strict contract +described in [README.md](README.md) and [SECURITY.md](SECURITY.md). + +## [Unreleased] + +### Fixed + +- Distribution manifests were stale: the root `manifest.json` omitted + `LICENSE` and `.gitignore`, and the package + `resources/distribution-manifest.json` drifted after source edits. Added + `scripts/build_manifest.py` as the single regeneration entrypoint and a CI + check that committed manifests match a fresh build. +- `test_source_distribution_manifest_covers_every_file` counted `.git/` + internals in a git checkout, failing `file_count`. The exclusion set now + includes `.git`. +- The acceptance engine root defaulted to the repository grandparent, which is + rarely a valid Backtrader source root, so all 14 end-to-end cells failed in a + fresh checkout. Engine roots are now resolved automatically (env var, sibling + `backtrader`/`back_trader` checkouts, then the installed `backtrader` + package) with actionable guidance when none is found. +- The end-to-end test hardcoded the engine version `1.3.0`, failing against any + other Backtrader. It now asserts the run manifest records the descriptor's + actual version, making the suite portable. + +### Added + +- Listing commands: `data list`, `session list`, `runs list`, and + `engine --list` enumerate registered datasets, sessions, run results, and + engine roots with validity status. +- `doctor` now reports registered engine roots and a hint when none is + registered. +- CI workflow (`.github/workflows/ci.yml`) running unit tests, the independence + audit, doctor, manifest freshness, and the acceptance matrix across Python + 3.9/3.11/3.12. +- `examples/` with an offline CSV, `DataSpec`, `StrategySpec`, and a walkthrough. +- `SECURITY.md`, `CONTRIBUTING.md`, and this changelog. +- `.gitignore` now ignores the `.backtrader-agent/` runtime state root. + +### Changed + +- Documented renderer scope: the P0 renderer maps a `StrategySpec` to one of + seven fixed archetype templates parameterized by `archetype`, + `output_profile`, and numeric defaults. The `entry`, `exit`, `sizing`, and + `risk` fields are validated and recorded in the spec hash but are not + translated into executable logic. See + [references/current-fork-rules.md](references/current-fork-rules.md). + +## [0.1.0] - 2026-07-31 + +Initial P0 release: independent, offline-first Backtrader strategy-authoring +agent runtime. See [IMPLEMENTATION_REPORT.md](IMPLEMENTATION_REPORT.md) for the +implemented scope, verification evidence, and deferred work. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b0b73ac --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,76 @@ +# Contributing + +Thanks for contributing to `backtrader-agent`. This project is offline-first, +deterministic, and independence-strict: changes must preserve the security +model, the content-addressed manifests, and the reproducible acceptance matrix. + +## Development setup + +```bash +python -m pip install jsonschema pytest backtrader +python -m pytest tests -q -p no:cacheprovider +python scripts/audit_independence.py +python scripts/doctor.py +python scripts/run_acceptance.py +``` + +The tests and acceptance matrix need a Backtrader engine root: a directory +containing `backtrader/__init__.py` and `backtrader/version.py`. It is resolved +automatically; set `BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT` explicitly if +auto-resolution fails (see [README.md](README.md#verification)). + +## Before opening a pull request + +1. **Keep manifests exact.** After any source, resource, or repository file + change, regenerate both distribution manifests and commit the result: + + ```bash + python scripts/build_manifest.py + ``` + + The independence audit (`scripts/audit_independence.py`) and the + `test_source_distribution_manifest_covers_every_file` test fail closed when a + manifest drifts. CI also checks that the regenerated manifests match the + committed files. + +2. **Keep tests green.** `python -m pytest tests` must pass, including the + 14-cell acceptance matrix (7 archetypes x `single_test`/`python_bundle`, + each run in both `runonce` and `runnext`). + +3. **Preserve independence.** Do not add imports of `backtrader_mcp`, + `backtrader_skills`, `fastmcp`, or `mcp`. Do not read `.agents/skills`, + `backtrader-mcp`, or `backtrader-skills` paths. The independence audit + enforces this statically. + +4. **Do not weaken the security model.** No candidate import in the host + process, no dynamic execution, no `shell=True`, no live broker/store APIs, + and distinct apply/run approvals. See [SECURITY.md](SECURITY.md). + +## Code style + +- Many small, focused files; high cohesion, low coupling. +- Immutable patterns: create new objects, do not mutate. +- Handle errors explicitly with stable `BTAG-*` codes; never swallow errors. +- Validate at boundaries; never trust external input. +- Type hints throughout; functions small. + +## Commit messages + +Follow conventional commits: + +``` +: + + +``` + +Types: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `perf`, `ci`. + +## Adding a new archetype or adapter + +New archetypes/adapter formats are product-scope changes: update +`src/backtrader_agent/contracts.py`, the renderer in `scaffold.py`, the +validator allowlists in `validator.py`, the acceptance matrix expectations in +`scripts/run_acceptance.py`, and the relevant schemas under +`src/backtrader_agent/resources/contracts/`. Then regenerate manifests and run +the full acceptance matrix. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..da22c63 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,72 @@ +# Security Policy + +`backtrader-agent` is an offline-first Backtrader strategy-authoring runtime. +It is **not** a trading system: it never connects to a live broker, never +places a real order, never downloads market data, and never promises investment +returns. This document describes the security properties the project enforces +and its known limits. + +## Reporting a vulnerability + +Report security issues privately by opening a private security advisory on the +repository, or contact the maintainers directly. Do not open a public issue for +security-sensitive defects. Please include: + +- a minimal description of the issue and its impact, +- the `BTAG-*` diagnostic code(s) if any are produced, +- the product version (`backtrader-agent doctor --json`) and Backtrader engine + version, and +- steps to reproduce with offline fixtures only. + +## Enforced properties + +- **No candidate import in the host process.** Strategy candidates are validated + by Python AST only. They are never imported into the agent process. +- **No dynamic execution.** `exec`, `eval`, `compile`, `__import__`, + reflection (`getattr`/dunder), filesystem access (`open`), and process/network + libraries are rejected by the validator. +- **Capability allowlists.** Imports, Backtrader APIs, local strategy symbols, + and environment keys use exact allowlists. Live broker/store APIs are + forbidden. +- **Confined paths.** External paths are an opaque root ID plus a relative + path. Resolution rejects absolute paths, `..`, symlink escape, devices, and + non-regular files. Dataset bytes are read with before/after stat checks and + stored in immutable SHA-256 content-addressed storage. +- **Distinct approvals.** Apply (change) and execute (run) capabilities are + separate hash-bound tokens. A change token cannot authorize a run, and vice + versa. Each follows a persisted request, explicit local grant, signed token, + and atomic consume. +- **Fixed child-process profile.** Runs execute only `run.py` or a generated + test through a fixed argv with `shell=False`, a minimal environment that does + not forward `HOME`, a timeout, and resource/output limits. Source and data are + re-hashed before execution. +- **Authenticated provenance.** Only candidates with a renderer-owned, locally + signed provenance record and matching session/spec/dataset/artifact approvals + may run. Forged manifests, cross-session token reuse, and tampered provenance + records fail closed. +- **Recoverable sessions.** Every state transition is recorded in an append-only + hash chain; recovery accepts only a verified prefix and never guesses past + damage. Terminal sessions never silently reactivate. + +## Known limits (defense in depth, not a sandbox) + +- The controlled child process is **not** an OS sandbox. POSIX resource limits + are applied where available, but this is not equivalent to a container or + OS-level isolation. +- **Network isolation is not OS-verified.** The runtime does not download data + or talk to brokers by design, but it does not prove network isolation at the + OS level. +- Pandas/custom-line workflows accept only already-materialized tabular text. + Pickle and arbitrary Python object deserialization are rejected by design. +- The validator is static. A candidate that passes validation is not guaranteed + safe in every conceivable runtime; the controlled child process and approval + model are the remaining layers. + +## Secret handling + +- Never log API keys, broker credentials, or secrets. +- API keys/secrets are out of scope for this offline runtime. If you integrate + it into a larger system, keep secrets in environment variables or a secret + manager and validate their presence at startup of that outer system. +- Diagnostics use stable `BTAG-*` codes and redact absolute paths and full + tracebacks before display. diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..8ef1151 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,54 @@ +# Examples + +This directory holds a minimal, self-contained end-to-end fixture: an offline +OHLCV CSV, the `DataSpec` that registers it, and a canonical `StrategySpec` +that turns it into a single-data SMA-crossover scaffold. Copy these into your +own workspace and adjust paths; do not register files inside this repository. + +## Files + +- `prices.csv` — 12 daily OHLCV bars in the `generic_csv` native shape. +- `data-spec.json` — a `DataSpec` naming `root_id: input` and + `relative_path: prices.csv`. +- `strategy-spec.json` — a `single_data_indicator` / `python_bundle` spec. + Its `dataset_id` is a placeholder (`ds_0000…`); replace it with the real id + returned by `data register` before approving the spec. + +## Walkthrough + +Assume a dedicated state root and a registered Backtrader engine root. The +engine root is a directory containing `backtrader/__init__.py` and +`backtrader/version.py` (a source checkout, or the installed `site-packages` +directory). `backtrader-agent doctor --json` reports registered engine roots. + +```bash +STATE=/path/to/workspace/.backtrader-agent +EXAMPLES=/path/to/backtrader-agent/examples + +# 1. Register the engine and the directory holding prices.csv as opaque roots. +backtrader-agent --state-root "$STATE" roots register \ + --id engine --kind engine --path /path/to/backtrader-source +backtrader-agent --state-root "$STATE" roots register \ + --id input --kind dataset --path "$EXAMPLES" + +# 2. Inspect and register the offline data; capture dataset_id. +backtrader-agent --state-root "$STATE" data inspect --spec "$EXAMPLES/data-spec.json" +backtrader-agent --state-root "$STATE" data register \ + --session-id session-001 --spec "$EXAMPLES/data-spec.json" + +# 3. Put the returned dataset_id into strategy-spec.json, then approve the spec. +backtrader-agent --state-root "$STATE" spec \ + --session-id session-001 --approve --file strategy-spec.json + +# 4. Render, validate, prepare, approve, apply, approve, run. +backtrader-agent --state-root "$STATE" draft \ + --session-id session-001 --spec strategy-spec.json \ + --dataset-manifest +# ...continue with validate / changes prepare / approval / changes apply / +# approval / run, each stopping for explicit approval as documented in the +# top-level README. +``` + +See the top-level [README.md](../README.md) for the full required workflow and +the two-stage approval model. See [references/current-fork-rules.md](../references/current-fork-rules.md) +for what the renderer does and does not translate from the spec. diff --git a/examples/data-spec.json b/examples/data-spec.json new file mode 100644 index 0000000..887274f --- /dev/null +++ b/examples/data-spec.json @@ -0,0 +1,32 @@ +{ + "schema_version": "dataset-manifest-v1", + "name": "example-prices", + "feeds": [ + { + "feed_id": "primary", + "name": "primary", + "role": "execution", + "root_id": "input", + "relative_path": "prices.csv", + "format": "generic_csv", + "datetime_format": "%Y-%m-%d", + "timeframe": "Days", + "compression": 1, + "timezone": "UTC", + "bar_semantics": "close", + "columns": { + "datetime": "date", + "open": "open", + "high": "high", + "low": "low", + "close": "close", + "volume": "volume", + "openinterest": "openinterest" + } + } + ], + "alignment": { + "mode": "intersection", + "minimum_overlap": 1 + } +} diff --git a/examples/prices.csv b/examples/prices.csv new file mode 100644 index 0000000..8a0689b --- /dev/null +++ b/examples/prices.csv @@ -0,0 +1,13 @@ +date,open,high,low,close,volume,openinterest +2024-01-02,100.50,101.20,99.80,100.90,12000,0 +2024-01-03,100.90,102.40,100.60,102.10,15000,0 +2024-01-04,102.10,103.00,101.70,102.80,11000,0 +2024-01-05,102.80,104.20,102.50,103.90,14000,0 +2024-01-08,103.90,105.10,103.60,104.70,13000,0 +2024-01-09,104.70,105.80,104.20,105.50,16000,0 +2024-01-10,105.50,106.20,104.90,105.10,12000,0 +2024-01-11,105.10,105.90,103.80,104.20,17000,0 +2024-01-12,104.20,105.00,103.10,103.50,15000,0 +2024-01-15,103.50,104.40,102.90,104.10,11000,0 +2024-01-16,104.10,105.60,103.90,105.40,14000,0 +2024-01-17,105.40,106.80,105.10,106.50,18000,0 diff --git a/examples/strategy-spec.json b/examples/strategy-spec.json new file mode 100644 index 0000000..a39dece --- /dev/null +++ b/examples/strategy-spec.json @@ -0,0 +1,58 @@ +{ + "spec_version": "strategy-spec-v1", + "name": "Example SMA Crossover", + "slug": "example-sma-crossover", + "category": "trend_following", + "archetype": "single_data_indicator", + "output_profile": "python_bundle", + "dataset_id": "ds_0000000000000000000000000000000000000000000000000000000000000000", + "feeds": [ + { + "name": "primary", + "role": "execution" + } + ], + "parameters": { + "fast_period": { + "type": "integer", + "default": 2, + "minimum": 1 + }, + "slow_period": { + "type": "integer", + "default": 5, + "minimum": 2 + } + }, + "entry": "long when the fast SMA is above the slow SMA", + "exit": "close when the fast SMA is below the slow SMA", + "sizing": { + "kind": "fixed", + "stake": 1 + }, + "risk": { + "max_position": 1 + }, + "cash": 100000.0, + "commission": 0.001, + "analyzers": [ + "TradeAnalyzer", + "DrawDown", + "SharpeRatio", + "SQN" + ], + "run_modes": [ + "runonce", + "runnext" + ], + "allowed_imports": [ + "backtrader", + "json", + "os", + "math" + ], + "non_goals": [ + "live trading" + ], + "open_questions": [] +} From e6d215300c7b53848a15902b28f82d8e39fae23c Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 18:12:08 +0800 Subject: [PATCH 3/6] docs: add README and P0 implementation report README documents the adapter/payload/runtime layering, the install and P0 workflow, sessions/recovery, reports/provenance, verification, and honest P0 limits. Includes the engine-root auto-resolution note and the renderer scope note (entry/exit/sizing/risk are validated but not translated to executable logic at P0). IMPLEMENTATION_REPORT records the P0 implemented scope, public contract migration, enforced security properties, deferred work, and acceptance evidence. --- IMPLEMENTATION_REPORT.md | 132 +++++++ README.md | 824 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 956 insertions(+) create mode 100644 IMPLEMENTATION_REPORT.md create mode 100644 README.md diff --git a/IMPLEMENTATION_REPORT.md b/IMPLEMENTATION_REPORT.md new file mode 100644 index 0000000..53a1db9 --- /dev/null +++ b/IMPLEMENTATION_REPORT.md @@ -0,0 +1,132 @@ +# P0 implementation report + +Date: 2026-07-31 +Product version: 0.1.0 +Scope root: `backtrader-agent/` + +## Implemented + +- Python `src/backtrader_agent` distribution and typed CLI/doctor/payload. +- Opaque controlled root registry with traversal and symlink confinement. +- Six offline adapter paths (`generic_csv`, `backtrader_csv`, `yahoo_csv`, + `mt5_csv`, `pandas`, and `pandas_custom_lines`), deterministic canonical + text materialization, immutable SHA-256 CAS, registration, preview, TOCTOU + check, quality diagnostics, typed resample/replay, and canonical + DatasetManifest. Pandas inputs are materialized text only; pickle/object + deserialization is rejected. +- Canonical StrategySpec with legacy input alias migration. +- Package-owned 1,155-record full metadata snapshot, deterministic search and + provenance, plus a separate 14-entry current-fork template catalog. +- Seven archetypes × `single_test`/`python_bundle` deterministic renderer. +- Import-free AST/current-fork/security validator. Direct `bt.Strategy` + subclasses do not receive a false missing-`super()` failure. +- Private renderer-owned signed artifact records plus locally signed, + short-lived validation/change/run tokens with distinct kinds and continuous + session/spec/dataset/artifact/provenance hash bindings. +- Two-phase expected-hash prepare/apply, atomic target writes, postimage check, + create/update conflict protection, and idempotency records. +- Fixed child-process runner with exact entrypoint, `shell=False`, minimal + environment, timeout, POSIX quota attempts, output limit, source/data + re-hashing, eleven metrics, immutable JSON/Markdown/HTML reports. A registered + read-only engine root is content-bound during validation; the child proves + that `backtrader.__file__` and version resolve from that root and records the + relative import path in `RunManifest`. +- AgentSessionManifest, strictly ordered append-only event hash chain, atomic + checkpoint, corrupt suffix isolation, legal transitions, cancel/archive, and + interrupted-run pause recovery. +- Independence audit for forbidden sibling imports/reads and dynamic execution. +- Create-only, idempotent, manifest-driven native adapter install/uninstall for + Claude Code, Codex, OpenCode, and an OpenClaw workspace. OpenClaw registration + remains an explicit user-run official CLI step and is not falsely represented + by a project-local `agent.json`. +- Seven named public JSON Schemas, AgentSessionManifest with `$defs/AgentEvent`, + ComparisonProfile, corpus manifest, agent payload, and wheel-content test. +- Structured 14-cell acceptance evidence. Every archetype/profile cell performs + separate real `runonce` and `runnext` executions and a normalized metric + comparison; six adapters and specialized multi-feed, multi-timeframe, and + custom-line data are required. The fixed acceptance builds and clean-installs + a wheel, runs outside the source checkout, and records wheel hash, installed + origin, clean import path, and source-absence evidence. Crash/resume and + failure/repair are separate gates against that same clean install. + +## Public contract migration impact + +The initial local draft used short internal names. Before P0 handoff it was +migrated to the cross-product canonical surface: + +- StrategySpec emits `spec_version`, `output_profile`, and `run_modes`. +- Archetypes emit `single_data_indicator`, `multi_indicator_system`, and + `multi_asset_allocation` instead of their earlier short names. +- Dataset IDs changed from a 20-character display prefix to + `ds_` plus the complete 64-hex semantic hash. +- ComparisonProfile and RunResult now use the shared six integer metrics +(`bar_num`, buy/sell/win/loss counts, `trade_num`) and five float metrics +(`final_value`, `sharpe_ratio`, `annual_return`, `max_drawdown`, + `return_rate`); Sharpe and annual return are nullable. +- DatasetManifest emits the canonical top-level core; Agent CAS/policy details + live in `extensions.backtrader_agent`. +- Corpus, Artifact, Validation, RunManifest, and RunResult schemas and runtime + output use their canonical core fields; product-specific evidence lives under + `extensions`. + +Legacy StrategySpec field/archetype aliases remain accepted on input only. +Previously emitted short dataset IDs cannot be migrated safely because they do +not contain the full semantic hash; re-register the original DataSpec. + +## Security properties actually enforced + +- No candidate import in the host process and no dynamic execution API. +- No raw command/shell/callable/pytest-target action. +- Separate apply and execute capability kinds. +- Authenticated product-generation evidence; external drafts, forged + manifests, cross-session reuse, and tampered provenance records fail closed. +- Session, spec, source, dataset, artifact, provenance record, validation, + environment, engine, preimage, and mode bindings. +- Confined relative target paths and immutable private CAS. +- Fixed child argv and cwd; no `shell=True`. +- Stable `BTAG-*` errors intended for redacted user display. + +## Known limits and deferred work + +- P0 child-process controls are not a full sandbox and do not prove network + isolation. +- Pandas/custom-line workflows must first materialize trusted tabular text; + pickle/object deserialization is absent. The controlled Pandas run paths use + the Pandas dependency installed with Backtrader. +- Snapshot search is lexical. Source-attached full-corpus rebuild is implemented + for explicitly registered read-only roots; embedding search is deferred. +- Automated fresh master/dev worktree orchestration, cancellation signals, and + container runner are deferred. The runtime can execute separately approved + engine profiles but does not create worktrees. +- Renderer repairs are new immutable draft revisions; an autonomous patch + synthesizer is not included. +- Report HTML is intentionally minimal and contains no plotting dependency. + +## Acceptance evidence + +The authoritative evidence is produced by: + +```bash +python -m pytest tests -q -p no:cacheprovider +python scripts/doctor.py +python scripts/audit_independence.py +python scripts/run_acceptance.py +``` + +Final observed results on 2026-07-31: + +- product tests: `59 passed`; +- Ruff: passed; +- Black check: passed; +- doctor: `ready`; +- independence audit: all six checks passed; +- acceptance: passed, with 7 archetypes × 2 output profiles = 14 real + source-bound backtest cells, two execution modes per cell, six data adapters, + clean-wheel execution, mandatory MCP/Skills absence, and independent + crash/resume and repair gates; +- repository contract/catalog/distribution audit: passed; +- repository `make test-fast`: `2,474 passed, 1 skipped`. + +The four adapter layouts are covered by installer tests. OpenClaw was not +installed on this machine, so its external registration command remains an +explicit user-side verification rather than a claimed live-host result. diff --git a/README.md b/README.md new file mode 100644 index 0000000..dac3d3b --- /dev/null +++ b/README.md @@ -0,0 +1,824 @@ +# backtrader-agent + +**English** | [**中文**](#-中文文档) + +`backtrader-agent` is an independently installable, offline-first Backtrader +strategy-authoring agent runtime. It registers local data into immutable +content-addressed storage, validates canonical strategy specifications, renders +14 current-fork scaffolds, statically reviews candidates without importing +them, gates writes and runs with separate hash-bound approvals, executes only a +fixed child-process profile, and records recoverable session provenance. Its +acceptance matrix executes every scaffold in both `runonce` and `runnext` mode +and compares the normalized metrics. + +It does not import, start, inspect, or depend on another Backtrader AI product. +It also does not embed a model SDK or require a model API key. + +## Adapter, payload, and runtime are different layers + +- A **native host adapter** is a tiny discovery/activation file in the host's + own format. It contains no validation, data, state, or runner implementation. +- The packaged **agent payload** (`backtrader-agent payload`) provides persona, + routing, lifecycle, and safety instructions. +- The installed **Python runtime** (`backtrader_agent`) implements typed actions, + contracts, CAS, validator, approvals, writer, child runner, reports, and + journal recovery. + +The installer never presents one generic `.agents/skills` directory as four +different hosts. Each host receives its own native adapter. + +## Install the Python distribution + +From this directory, using any supported Python 3.8+ virtual environment: + +```bash +python -m pip install . +backtrader-agent doctor --json +backtrader-agent payload +``` + +The runtime has no mandatory third-party dependency. A controlled backtest +requires Backtrader in the same Python environment; generated `single_test` +profiles also require pytest in the child environment. + +The examples below assume the environment containing `backtrader-agent` is +active. Conda, `venv`, and equivalent isolated Python environments are all +supported. + +## Install one native host adapter + +All installs are preview-first, create-only, hash recorded, and idempotent. +An existing modified adapter is never overwritten. Replace +`/path/to/project` with the host project/workspace root. + +### Claude Code + +```bash +backtrader-agent install --target /path/to/project --host claude --preview +backtrader-agent install --target /path/to/project --host claude --apply +``` + +Creates `.claude/agents/backtrader-agent.md`. + +Verify and invoke: + +```text +1. Start a new Claude Code session in /path/to/project and open /agents. +2. Confirm backtrader-agent is listed. +3. First request: + Use the backtrader-agent subagent to inspect my offline CSV, clarify a + StrategySpec, generate a strategy, and stop at each apply/run approval. +``` + +### Codex + +```bash +backtrader-agent install --target /path/to/project --host codex --preview +backtrader-agent install --target /path/to/project --host codex --apply +``` + +Creates `.codex/agents/backtrader-agent.toml`. + +Verify and invoke: + +```text +1. Start a new Codex task rooted at /path/to/project. +2. Ask Codex to list or spawn the project agent named backtrader-agent. +3. First request: + Spawn the backtrader-agent for my offline CSV, clarify a StrategySpec, + generate a strategy, and stop at each apply/run approval. +``` + +### OpenCode + +```bash +backtrader-agent install --target /path/to/project --host opencode --preview +backtrader-agent install --target /path/to/project --host opencode --apply +``` + +Creates `.opencode/agents/backtrader-agent.md`. + +Verify and invoke: + +```bash +cd /path/to/project +opencode agent list +opencode run --agent backtrader-agent \ + 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +### OpenClaw + +```bash +backtrader-agent install --target /path/to/project --host openclaw --preview +backtrader-agent install --target /path/to/project --host openclaw --apply +``` + +Creates an independent `.openclaw/workspaces/backtrader-agent/` workspace with +`AGENTS.md`, `IDENTITY.md`, a payload guide, and a registration manifest. It +does **not** claim that a project-local `agent.json` is discoverable and it does +not invoke the external OpenClaw CLI. + +After reviewing the generated absolute workspace path, the user must explicitly +register and verify it with the official native commands printed by the +installer: + +```bash +openclaw agents add backtrader-agent \ + --workspace '/absolute/path/to/openclaw-workspace' \ + --non-interactive +openclaw agents list +openclaw agent --agent backtrader-agent \ + --message 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +The generated registration manifest uses shell-safe quoting for the exact +workspace path; review and run its `registration_command` and +`invocation_command` instead of manually reconstructing them. + +Install this Python distribution into that workspace's Python environment; the +workspace adapter does not duplicate product logic. + +For exact manifest-driven removal, run: + +```bash +backtrader-agent install --target /path/to/project --host codex --uninstall +``` + +Removal stops if an installed adapter was modified. For OpenClaw, filesystem +uninstall does not claim to unregister an already registered external agent; +manage that registration explicitly with the installed OpenClaw version. + +## P0 workflow + +Use a dedicated state root, normally `/.backtrader-agent`, and add +only that narrow runtime directory to the target repository's ignore file. + +```bash +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id workspace --kind workspace --writable --path /path/to/workspace + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id prices --kind dataset --path /path/to/offline-data + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id engine --kind engine --path /path/to/backtrader-source + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + engine --root-id engine + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + session create --session-id session-001 + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + data inspect --spec data-spec.json + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + data register --session-id session-001 --spec data-spec.json +``` + +DataSpec names a registered `root_id` and a relative path. The resolver rejects +absolute paths, `..`, symlink escape, devices, unsupported formats, changing +files, invalid timestamps, non-finite numbers, invalid OHLC, and quota +violations. Registration writes a canonical UTF-8 CSV to +`data/sha256//.csv` and emits a canonical +`DatasetManifest` with: + +```text +schema_version, dataset_id=ds_<64 hex semantic hash>, spec_hash, +semantic_hash, manifest_hash, feeds, master_feed, alignment, status, +diagnostics, transforms, provenance, extensions +``` + +The six declared offline adapters are `generic_csv`, `backtrader_csv`, +`yahoo_csv`, `mt5_csv`, `pandas`, and `pandas_custom_lines`. Registration parses +each adapter's native offline text shape into the immutable canonical CAS. +Controlled execution then uses the corresponding `GenericCSVData`, +`BacktraderCSVData`, offline `YahooFinanceCSVData`, controlled MT5, +`PandasData`, or product-owned extended `PandasData` assembly path. The two +Pandas adapters accept only already materialized tabular text-not pickle or +arbitrary Python objects. `resample` and `replay` are typed transforms with an +explicit feed, target timeframe, and compression; the runner routes them only +through `Cerebro.resampledata` or `Cerebro.replaydata`. + +Validate a canonical StrategySpec, search the package-owned snapshot, and +render a private draft: + +```bash +backtrader-agent --state-root /path/to/state spec \ + --session-id session-001 --approve --file strategy-spec.json +backtrader-agent catalog search --query "multi timeframe clock" --top-k 3 +backtrader-agent --state-root /path/to/state draft \ + --session-id session-001 \ + --spec strategy-spec.json \ + --dataset-manifest dataset-manifest.json +``` + +The installed catalog owns two separate assets: + +- `corpus-v1.jsonl` contains 1,155 immutable metadata records covering the + verified 1,152 functional tests, 1,035 three-file packages, and 1,032 + mappings. These records contain hashes and relative provenance, not strategy + source; every bundled record therefore has `source_available=false`. +- `snapshot.jsonl` contains the 14 current-fork template entries: seven + archetypes by `single_test` and `python_bundle`. Template selection remains + available independently of corpus search. + +When the original two corpora are explicitly mounted read-only, the runtime +can rebuild a source-attached snapshot without importing, executing, or +modifying them: + +```bash +backtrader-agent --state-root /path/to/state roots register \ + --id functional --kind dataset \ + --path /absolute/backtrader/tests/functional/strategies +backtrader-agent --state-root /path/to/state roots register \ + --id packages --kind dataset \ + --path /absolute/back_trader/strategies +backtrader-agent --state-root /path/to/state catalog refresh \ + --functional-root-id functional --package-root-id packages +``` + +The default baseline gate requires exactly 1,152/1,035/1,032. Use +`--allow-count-drift` only for an intentionally different corpus. The generated +snapshot stays in private Agent state, outside both source roots; the +package-owned snapshot remains unchanged. + +Canonical StrategySpec output uses: + +```text +spec_version='strategy-spec-v1', name, slug, category, archetype, +output_profile, dataset_id, feeds, parameters, entry, exit, sizing, risk, +run_modes, allowed_imports +``` + +The seven archetypes are `single_data_indicator`, +`multi_indicator_system`, `multi_asset_allocation`, `multi_timeframe`, +`pairs_spread`, `order_risk`, and `precomputed_ml`; both `single_test` and +`python_bundle` profiles are renderable. Legacy input aliases +`single_indicator`, `multi_indicator`, `multi_asset`, `schema_version`, +`profile`, and `execution_modes` are accepted but never emitted. + +> **Renderer scope:** the P0 renderer is a deterministic scaffold selector. +> It maps a StrategySpec to one of the seven fixed archetype templates, +> parameterized only by `archetype`, `output_profile`, and numeric parameter +> defaults (e.g. `fast_period` / `slow_period`). The `entry`, `exit`, `sizing`, +> and `risk` fields are validated and recorded in the spec hash, but are **not** +> translated into executable logic — `next()` behavior comes entirely from the +> chosen archetype. To change trade logic, pick a different archetype or revise +> parameters. See [references/current-fork-rules.md](references/current-fork-rules.md). + +Validation uses Python AST only. It never imports a candidate into the host +process. Imports, `os` access, Backtrader APIs, local strategy symbols, and +environment keys use exact capability allowlists. It rejects dynamic execution, +reflection, filesystem access, process/network libraries, product-runtime +transduction, live stores, path traversal, and non-allowlisted dependencies. A +direct `bt.Strategy` subclass is intentionally **not** required to call +`super().__init__()` on this fork; a custom parent or cooperative mixin must +still satisfy its MRO. + +The write/run sequence is deliberately two-stage: + +1. Rendering creates a private, locally signed provenance record bound to the + exact session, approved spec, registered dataset manifest, draft directory, + artifact manifest, and generated bytes. `validate --engine-root-id engine` + accepts executable artifacts only when that renderer-owned record and the + session checkpoint agree, then emits a validation report and token bound to + the provenance record, artifact, dataset, environment, exact engine hash, + and engine root ID. +2. `changes prepare` records exact source/target bytes, diff, expected preimage + hash, renderer-owned draft path, artifact provenance, and the complete + validation-token hash in an immutable locally signed prepared-change record. + It does not write the target. +3. `approval request` persists a `PENDING` change request; a distinct local + `approval grant --confirm` re-authenticates that signed record and the current + session checkpoint before it persists and issues a one-time `change` token. + `changes apply` ignores caller-supplied draft paths, loads the signed draft, + consumes the token, checks every preimage, and uses a staged transaction + journal with verified rollback. +4. A successful apply creates an immutable locally signed applied-artifact + record. A separate request and local grant re-authenticates that record and + issues a one-time `run` token bound to the applied/artifact/change records, + full validation token, dataset, mode, environment, and engine. +5. `run` re-hashes all inputs and launches only `run.py` or the generated test + through a fixed argv with `shell=False`, a minimal environment with no + forwarded `HOME`, timeout, resource limits, and output quota. Before strategy + execution, the same child environment imports `backtrader` and proves its + resolved `__init__.py` and version belong to the approved engine root; the + relative import path is recorded in `RunManifest`. + +Reusing the same idempotency key returns its recorded result. A different key +is a different effect and cannot replay a consumed token. + +After a run, reports and comparisons are addressed only by private immutable +run IDs: + +```bash +backtrader-agent --state-root /path/to/state report \ + --run-id run-0123456789abcdef0123 --format markdown +backtrader-agent --state-root /path/to/state compare \ + --left-run-id run-0123456789abcdef0123 \ + --right-run-id run-fedcba9876543210fedc +``` + +The repair action never accepts a source patch. It requires a structured failed +ValidationReport/RunResult plus a revised StrategySpec, transitions the failed +session through `REPAIRING`, and deterministically re-renders a new owned draft. +The old artifact and action approvals cannot authorize the new bytes: + +```bash +backtrader-agent --state-root /path/to/state repair \ + --session-id session-001 \ + --spec revised-strategy-spec.json \ + --dataset-manifest dataset-manifest.json \ + --failure-report failed-run-result.json +``` + +Use `backtrader-agent --help` and each subcommand's `--help` for exact typed +arguments. There is no `--command`, `--shell`, arbitrary callable, arbitrary +pytest target, or arbitrary output action. + +## Sessions and recovery + +```bash +backtrader-agent --state-root /path/to/state session create --session-id session-001 +backtrader-agent --state-root /path/to/state session status --session-id session-001 +backtrader-agent --state-root /path/to/state session recover --session-id session-001 +``` + +Every transition has a strictly increasing sequence, previous-event hash, event +hash, normalized input hashes, action, state pair, token/effect references, and +timestamp. Data registration, spec approval, draft, validation, prepare/apply, +run approval, execution, reporting, and completion all advance this state +machine; they are not isolated from `session` commands. Checkpoints are atomic. +Recovery accepts only a verified journal +prefix, isolates a malformed suffix, and moves an interrupted `RUNNING` session +to `PAUSED`. Terminal sessions do not silently reactivate. + +## Reports and provenance + +Each successful bundle run writes immutable `RunManifest`, `RunResult`, +Markdown, and HTML artifacts under the private run root. Metrics are: + +`bar_num`, `buy_count`, `sell_count`, `win_count`, `loss_count`, `trade_num`, +`final_value`, `sharpe_ratio`, `annual_return`, `max_drawdown`, and +`return_rate`. + +`sharpe_ratio` and `annual_return` may be `null`; NaN, Infinity, and any other +missing metric fail. Comparison uses exact integer/status/hash semantics and +`rel_tol=1e-7`, `abs_tol=1e-9` for floats. + +## Verification + +```bash +python -m pytest tests -q -p no:cacheprovider + +python scripts/audit_independence.py + +python scripts/run_acceptance.py +``` + +The acceptance matrix and the end-to-end runner need a Backtrader engine +root: a directory containing `backtrader/__init__.py` and `backtrader/version.py` +(a source checkout, or the installed `site-packages` directory). It is resolved +automatically by checking, in order: the `BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT` +environment variable, sibling `backtrader` / `back_trader` source checkouts next +to this repo, and the installed `backtrader` package. If auto-resolution fails, +set it explicitly: + +```bash +export BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT=/path/to/backtrader-source +``` + +`backtrader-agent doctor --json` reports registered engine roots and a hint when +none is registered. + +The tests build a wheel in a temporary copy and prove that the seven public +schemas, AgentSessionManifest/AgentEvent schema, ComparisonProfile, snapshot, +corpus manifest, and agent payload are present in the wheel. They also verify +the exact full-snapshot SHA-256 and import/search it from a clean temporary +site outside this repository, without either sibling AI product. + +`run_acceptance.py` writes and checks structured evidence for all 14 +archetype/profile cells. Each cell contains separate `runonce` and `runnext` +result/manifest hashes, their normalized comparison, source provenance, and +the data shape used. Before running the fixed tests, it builds a wheel from a +temporary source copy, installs that wheel into a clean target, and executes +from a separate working directory whose import path excludes the source +checkout. The report records the wheel SHA-256, installed package origin, clean +`sys.path`, and `source_checkout_absent` attestation. The gate requires exact +coverage of all six adapters, multi-feed scenarios, typed multi-timeframe +transformation, and precomputed custom lines. Crash/resume and failure/repair +run against the same clean installation as independent gates rather than being +inferred from a successful matrix run. + +Sibling absence is mandatory in the default command: acceptance fails if either +`backtrader_mcp` or `backtrader_skills` is importable in the clean runtime. + +## Honest P0 limits + +- Offline local files only: no download, database, WebSocket, API key, live + broker/store, or real order. +- The controlled child process is defense in depth, not a container or OS + sandbox. Network isolation is not claimed as OS-verified. +- Only candidates with an authenticated renderer-owned provenance record and + matching session/spec/dataset/artifact approvals may run. Unknown third-party + strategies are static-review-only. +- Snapshot search is lexical and deterministic over all 1,155 packaged metadata + records. No embeddings, original corpus source, or hidden sibling checkout + is required. +- The renderer provides functional scaffolds, not automatic optimization or + profitability claims. +- Fresh master/dev orchestration is not automated in this compact P0; register + and run each engine as a separately approved profile before comparison. +- Pandas inputs must be materialized to canonical CSV outside this runtime; + arbitrary DataFrame objects and pickle are rejected by design. + +See [IMPLEMENTATION_REPORT.md](IMPLEMENTATION_REPORT.md) for implemented scope, +verification evidence, migration impact, and deferred items. + +--- + +# 📖 中文文档 + +[**English**](#backtrader-agent) | **中文** + +--- + +`backtrader-agent` 是一个可独立安装、离线优先的 Backtrader 策略编写 agent 运行时。 +它把本地数据登记进不可变的内容寻址存储,校验规范策略规格(StrategySpec),渲染 +当前 fork 的 14 个脚手架,静态审查候选项而不导入它,用各自独立的哈希绑定审批来把关 +写入与运行,只执行固定的子进程 profile,并记录可恢复的会话溯源。其验收矩阵会把每个 +脚手架在 `runonce` 和 `runnext` 两种模式下都执行一遍,并比较归一化指标。 + +它不会导入、启动、检查或依赖另一个 Backtrader AI 产品,也不嵌入 model SDK 或要求 +model API key。 + +## adapter、payload 和运行时是不同层次 + +- **原生宿主 adapter** 是宿主自身格式下的一个极小发现 / 激活文件。它不含任何校验、 + 数据、状态或 runner 实现。 +- 打包的 **agent payload**(`backtrader-agent payload`)提供 persona、路由、生命周期 + 和安全指令。 +- 已安装的 **Python 运行时**(`backtrader_agent`)实现 typed 动作、契约、CAS、 + validator、审批、writer、child runner、报告和日志恢复。 + +安装器绝不会把同一个通用 `.agents/skills` 目录冒充成四个不同宿主。每个宿主拿到的是 +各自的原生 adapter。 + +## 安装 Python 分发 + +在本目录下,使用任意受支持的 Python 3.8+ 虚拟环境: + +```bash +python -m pip install . +backtrader-agent doctor --json +backtrader-agent payload +``` + +运行时没有强制的第三方依赖。受控回测需要同一 Python 环境中存在 Backtrader;生成的 +`single_test` profile 还需要子环境中存在 pytest。 + +下方示例假设包含 `backtrader-agent` 的环境已激活。Conda、`venv` 及等价的隔离 +Python 环境都受支持。 + +## 安装一个原生宿主 adapter + +所有安装都是 preview-first、create-only、记录哈希且幂等的。既有的、被修改过的 +adapter 永不被覆盖。把 `/path/to/project` 替换为宿主项目 / 工作区根目录。 + +### Claude Code + +```bash +backtrader-agent install --target /path/to/project --host claude --preview +backtrader-agent install --target /path/to/project --host claude --apply +``` + +创建 `.claude/agents/backtrader-agent.md`。 + +验证并调用: + +```text +1. Start a new Claude Code session in /path/to/project and open /agents. +2. Confirm backtrader-agent is listed. +3. First request: + Use the backtrader-agent subagent to inspect my offline CSV, clarify a + StrategySpec, generate a strategy, and stop at each apply/run approval. +``` + +### Codex + +```bash +backtrader-agent install --target /path/to/project --host codex --preview +backtrader-agent install --target /path/to/project --host codex --apply +``` + +创建 `.codex/agents/backtrader-agent.toml`。 + +验证并调用: + +```text +1. Start a new Codex task rooted at /path/to/project. +2. Ask Codex to list or spawn the project agent named backtrader-agent. +3. First request: + Spawn the backtrader-agent for my offline CSV, clarify a StrategySpec, + generate a strategy, and stop at each apply/run approval. +``` + +### OpenCode + +```bash +backtrader-agent install --target /path/to/project --host opencode --preview +backtrader-agent install --target /path/to/project --host opencode --apply +``` + +创建 `.opencode/agents/backtrader-agent.md`。 + +验证并调用: + +```bash +cd /path/to/project +opencode agent list +opencode run --agent backtrader-agent \ + 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +### OpenClaw + +```bash +backtrader-agent install --target /path/to/project --host openclaw --preview +backtrader-agent install --target /path/to/project --host openclaw --apply +``` + +创建一个独立的 `.openclaw/workspaces/backtrader-agent/` 工作区,含 `AGENTS.md`、 +`IDENTITY.md`、payload 指南和注册清单。它**不**声称项目本地的 `agent.json` 可被发现, +也不调用外部 OpenClaw CLI。 + +审查生成的绝对工作区路径后,用户必须用安装器打印的官方原生命令显式注册并验证它: + +```bash +openclaw agents add backtrader-agent \ + --workspace '/absolute/path/to/openclaw-workspace' \ + --non-interactive +openclaw agents list +openclaw agent --agent backtrader-agent \ + --message 'Inspect my offline CSV, clarify a StrategySpec, generate a strategy, and stop at each apply/run approval.' +``` + +生成的注册清单对确切的工作区路径使用 shell 安全的引号;请审查并运行其中的 +`registration_command` 和 `invocation_command`,而不是手动重建。 + +请把本 Python 分发安装进该工作区的 Python 环境;工作区 adapter 不重复产品逻辑。 + +基于清单的精确卸载: + +```bash +backtrader-agent install --target /path/to/project --host codex --uninstall +``` + +若已安装的 adapter 被修改过,卸载会停止。对 OpenClaw,文件系统卸载不声称会取消注册 +已注册的外部 agent;请用已安装的 OpenClaw 版本显式管理该注册。 + +## P0 工作流 + +使用专用 state root,通常为 `/.backtrader-agent`,并只把这一个窄运行时目 +录加入目标仓库的忽略文件。 + +```bash +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id workspace --kind workspace --writable --path /path/to/workspace + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id prices --kind dataset --path /path/to/offline-data + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + roots register --id engine --kind engine --path /path/to/backtrader-source + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + engine --root-id engine + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + session create --session-id session-001 + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + data inspect --spec data-spec.json + +backtrader-agent --state-root /path/to/workspace/.backtrader-agent \ + data register --session-id session-001 --spec data-spec.json +``` + +DataSpec 命名一个已注册的 `root_id` 和一个相对路径。解析器会拒绝绝对路径、`..`、 +符号链接逃逸、设备、不支持的格式、变化中的文件、无效时间戳、非有限数字、无效 OHLC +和配额违规。注册把规范 UTF-8 CSV 写到 +`data/sha256//.csv`,并发出规范的 `DatasetManifest`: + +```text +schema_version, dataset_id=ds_<64 hex semantic hash>, spec_hash, +semantic_hash, manifest_hash, feeds, master_feed, alignment, status, +diagnostics, transforms, provenance, extensions +``` + +声明的六个离线 adapter 是 `generic_csv`、`backtrader_csv`、`yahoo_csv`、`mt5_csv`、 +`pandas` 和 `pandas_custom_lines`。注册把每个 adapter 的原生离线文本形态解析成不可变 +的规范 CAS。受控执行随后使用对应的 `GenericCSVData`、`BacktraderCSVData`、离线 +`YahooFinanceCSVData`、受控 MT5、`PandasData` 或产品自有的扩展 `PandasData` 装配路 +径。两个 Pandas adapter 只接受已物化的表格文本——不接受 pickle 或任意 Python 对象。 +`resample` 和 `replay` 是带显式 feed、目标 timeframe 和 compression 的 typed +transform;runner 只通过 `Cerebro.resampledata` 或 `Cerebro.replaydata` 路由它们。 + +校验规范 StrategySpec、搜索包内快照并渲染私有草稿: + +```bash +backtrader-agent --state-root /path/to/state spec \ + --session-id session-001 --approve --file strategy-spec.json +backtrader-agent catalog search --query "multi timeframe clock" --top-k 3 +backtrader-agent --state-root /path/to/state draft \ + --session-id session-001 \ + --spec strategy-spec.json \ + --dataset-manifest dataset-manifest.json +``` + +已安装的 catalog 拥有两份独立资产: + +- `corpus-v1.jsonl` 含 1,155 条不可变元数据记录,覆盖已验证的 1,152 个功能测试、 + 1,035 个三文件包和 1,032 个映射。这些记录只含哈希和相对溯源,不含策略源码;因此每 + 条内置记录的 `source_available=false`。 +- `snapshot.jsonl` 含当前 fork 的 14 条模板条目:七个 archetype × `single_test` 和 + `python_bundle`。模板选择独立于语料搜索可用。 + +当原始两个语料被显式以只读挂载时,运行时可在不导入、执行或修改它们的前提下重建带 +源码的快照: + +```bash +backtrader-agent --state-root /path/to/state roots register \ + --id functional --kind dataset \ + --path /absolute/backtrader/tests/functional/strategies +backtrader-agent --state-root /path/to/state roots register \ + --id packages --kind dataset \ + --path /absolute/back_trader/strategies +backtrader-agent --state-root /path/to/state catalog refresh \ + --functional-root-id functional --package-root-id packages +``` + +默认基线门禁要求恰好 1,152/1,035/1,032。只有针对刻意不同的语料时才用 +`--allow-count-drift`。生成的快照留在私有 Agent 状态内,位于两个 source root 之外; +包内快照保持不变。 + +规范 StrategySpec 输出使用: + +```text +spec_version='strategy-spec-v1', name, slug, category, archetype, +output_profile, dataset_id, feeds, parameters, entry, exit, sizing, risk, +run_modes, allowed_imports +``` + +七个 archetype 是 `single_data_indicator`、`multi_indicator_system`、 +`multi_asset_allocation`、`multi_timeframe`、`pairs_spread`、`order_risk` 和 +`precomputed_ml`;`single_test` 和 `python_bundle` 两种 profile 均可渲染。遗留输入 +别名 `single_indicator`、`multi_indicator`、`multi_asset`、`schema_version`、 +`profile` 和 `execution_modes` 被接受但从不输出。 + +> **Renderer 范围:**P0 renderer 是确定性的脚手架选择器。它把 StrategySpec 映射到 +> 七个固定 archetype 模板之一,仅由 `archetype`、`output_profile` 和数值参数默认值 +> (如 `fast_period` / `slow_period`)参数化。`entry`、`exit`、`sizing`、`risk` 字段 +> 会被校验并记入 spec 哈希,但**不会**被翻译成可执行逻辑——`next()` 的行为完全来自所选 +> archetype。要改变交易逻辑,请换一个 archetype 或调整参数。见 +> [references/current-fork-rules.md](references/current-fork-rules.md)。 + +校验仅用 Python AST,绝不把候选项导入宿主进程。import、`os` 访问、Backtrader API、 +本地策略符号和环境键使用精确的能力白名单。它拒绝动态执行、反射、文件系统访问、进程 +/网络库、产品运行时传导、实盘 store、路径穿越和非白名单依赖。本 fork 上直接的 +`bt.Strategy` 子类**不**要求调用 `super().__init__()`;自定义父类或协作式 mixin 仍 +须满足其 MRO。 + +写入 / 运行序列刻意分为两段: + +1. 渲染创建一个私有的、本地签名的溯源记录,绑定到确切的会话、已批准 spec、已注册数 + 据集 manifest、草稿目录、artifact manifest 和生成字节。`validate + --engine-root-id engine` 只有在该 renderer 拥有的记录与会话 checkpoint 一致时才接 + 受可执行 artifact,随后发出绑定到溯源记录、artifact、数据集、环境、确切 engine 哈 + 希和 engine root ID 的校验报告与令牌。 +2. `changes prepare` 把确切的源 / 目标字节、diff、预期原像哈希、renderer 拥有的草稿 + 路径、artifact 溯源和完整校验令牌哈希记录到一条不可变、本地签名的 prepared-change + 记录中。它不写入 target。 +3. `approval request` 持久化一条 `PENDING` change 请求;另一个独立的本地 + `approval grant --confirm` 在持久化并签发一次性 `change` token 之前,重新认证该签 + 名记录和当前会话 checkpoint。`changes apply` 忽略调用方提供的草稿路径,加载已签名 + 草稿,消费 token,检查每个原像,并使用带校验回滚的暂存事务日志。 +4. 成功的 apply 创建一条不可变、本地签名的 applied-artifact 记录。另一次单独的请求与 + 本地 grant 重新认证该记录,并签发一次性 `run` token,绑定到 applied/artifact/ + change 记录、完整校验令牌、数据集、mode、环境和 engine。 +5. `run` 重新哈希所有输入,并只通过固定 argv 启动 `run.py` 或生成的测试,使用 + `shell=False`、不转发 `HOME` 的最小环境、超时、资源限制和输出配额。在策略执行前, + 同一子环境导入 `backtrader` 并证明其解析到的 `__init__.py` 和版本属于已批准的 + engine root;相对导入路径记录在 `RunManifest` 中。 + +复用同一幂等键会返回其已记录结果。不同键是不同效果,不能重放已消费的 token。 + +运行后,报告和比较只能通过私有不可变 run ID 寻址: + +```bash +backtrader-agent --state-root /path/to/state report \ + --run-id run-0123456789abcdef0123 --format markdown +backtrader-agent --state-root /path/to/state compare \ + --left-run-id run-0123456789abcdef0123 \ + --right-run-id run-fedcba9876543210fedc +``` + +repair 动作绝不接受源码补丁。它要求结构化的失败 ValidationReport/RunResult 加上一 +份修订后的 StrategySpec,把失败会话转入 `REPAIRING`,并确定性地重新渲染一条新的自有 +草稿。旧 artifact 和动作审批无法授权新字节: + +```bash +backtrader-agent --state-root /path/to/state repair \ + --session-id session-001 \ + --spec revised-strategy-spec.json \ + --dataset-manifest dataset-manifest.json \ + --failure-report failed-run-result.json +``` + +用 `backtrader-agent --help` 和各子命令的 `--help` 查看确切的 typed 参数。没有 +`--command`、`--shell`、任意 callable、任意 pytest 目标或任意输出动作。 + +## 会话与恢复 + +```bash +backtrader-agent --state-root /path/to/state session create --session-id session-001 +backtrader-agent --state-root /path/to/state session status --session-id session-001 +backtrader-agent --state-root /path/to/state session recover --session-id session-001 +``` + +每次转换都有严格递增的序列号、前一事件哈希、事件哈希、归一化输入哈希、动作、状态 +对、token/effect 引用和时间戳。数据登记、spec 审批、草稿、校验、prepare/apply、 +run 审批、执行、报告和完成都会推进这个状态机;它们与 `session` 命令并不隔离。 +checkpoint 是原子的。恢复只接受已校验的日志前缀,隔离畸形后缀,并把中断的 +`RUNNING` 会话移到 `PAUSED`。终态会话不会静默重新激活。 + +## 报告与溯源 + +每次成功的 bundle 运行都会在私有 run root 下写入不可变的 `RunManifest`、 +`RunResult`、Markdown 和 HTML artifact。指标为: + +`bar_num`、`buy_count`、`sell_count`、`win_count`、`loss_count`、`trade_num`、 +`final_value`、`sharpe_ratio`、`annual_return`、`max_drawdown` 和 `return_rate`。 + +`sharpe_ratio` 和 `annual_return` 可为 `null`;NaN、Infinity 及任何其他缺失指标都会 +失败。比较使用精确的整数 / 状态 / 哈希语义,浮点数用 `rel_tol=1e-7`、 +`abs_tol=1e-9`。 + +## 验证 + +```bash +python -m pytest tests -q -p no:cacheprovider + +python scripts/audit_independence.py + +python scripts/run_acceptance.py +``` + +验收矩阵和端到端 runner 需要一个 Backtrader engine root:一个包含 +`backtrader/__init__.py` 和 `backtrader/version.py` 的目录(源码检出,或已安装的 +`site-packages` 目录)。它会按以下顺序自动解析:`BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT` +环境变量、与本仓库同级的 `backtrader` / `back_trader` 源码检出、以及已安装的 +`backtrader` 包。若自动解析失败,请显式设置: + +```bash +export BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT=/path/to/backtrader-source +``` + +`backtrader-agent doctor --json` 会报告已注册的 engine root,并在未注册时给出提示。 + +测试在临时副本中构建 wheel,并证明七个公共 schema、AgentSessionManifest/AgentEvent +schema、ComparisonProfile、快照、语料 manifest 和 agent payload 都在 wheel 中。它们 +还验证完整快照的确切 SHA-256,并从本仓库之外的干净临时 site 导入 / 搜索它,且没有任 +何 sibling AI 产品。 + +`run_acceptance.py` 为全部 14 个 archetype/profile 单元写入并检查结构化证据。每个单 +元含独立的 `runonce` 和 `runnext` 结果 / manifest 哈希、其归一化比较、源溯源和所用 +数据形态。在运行固定测试前,它从临时源副本构建 wheel,把该 wheel 装进干净目标,并从 +另一个工作目录执行,该目录的导入路径排除源码检出。报告记录 wheel SHA-256、已安装包 +来源、干净的 `sys.path` 和 `source_checkout_absent` 证明。门禁要求精确覆盖全部六个 +adapter、多 feed 场景、typed 多 timeframe 转换和 precomputed 自定义 line。 +crash/resume 和 failure/repair 针对同一干净安装作为独立门禁运行,而非从成功的矩阵运 +行推断。 + +sibling 缺失在默认命令中是强制的:若干净运行时可导入 `backtrader_mcp` 或 +`backtrader_skills` 中的任何一个,验收失败。 + +## 如实说明 P0 的限制 + +- 仅离线本地文件:无下载、数据库、WebSocket、API key、实盘 broker/store 或真实订 + 单。 +- 受控子进程是纵深防御,不是容器或 OS 沙箱。网络隔离不以 OS 验证自居。 +- 只有带已认证 renderer 拥有溯源记录且会话/spec/dataset/artifact 审批一致的候选项才 + 能运行。未知第三方策略仅做静态审查。 +- 快照搜索是对全部 1,155 条内置元数据记录的词法、确定性搜索。不需要 embedding、原 + 始语料源或隐藏 sibling 检出。 +- renderer 提供功能性脚手架,不提供自动优化或盈利保证。 +- 本紧凑 P0 不自动编排全新 master/dev;比较前请把每个 engine 作为单独已批准 profile + 注册并运行。 +- Pandas 输入必须在本运行时之外物化为规范 CSV;任意 DataFrame 对象和 pickle 按设计 + 被拒绝。 + +实现范围、验证证据、迁移影响和延后项见 +[IMPLEMENTATION_REPORT.md](IMPLEMENTATION_REPORT.md)。 From 629d286a8f2576e12a9fe925603cf0c89db7c72c Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 19:19:18 +0800 Subject: [PATCH 4/6] fix(ci): install pandas so the generated runner can import it CI failed on all 14 end-to-end cells with BTAG-RUN-FAILED: the generated runner imports pandas at module load (Pandas adapters + canonical feed assembly), but `pip install backtrader` does not always pull pandas, so the controlled child process died on import. Reproduced locally in a clean venv without pandas; adding pandas makes the cell pass. - pyproject [test] extras: add pandas>=1.0 - ci.yml: pip install backtrader pandas jsonschema pytest - CONTRIBUTING.md: dev install includes pandas, with a note - regenerate root distribution manifest --- .github/workflows/ci.yml | 2 +- CONTRIBUTING.md | 6 +++++- manifest.json | 6 +++--- pyproject.toml | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc3001b..3eadd11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install backtrader jsonschema pytest + pip install backtrader pandas jsonschema pytest - name: Resolve Backtrader engine root run: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b0b73ac..b782e00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,13 +7,17 @@ model, the content-addressed manifests, and the reproducible acceptance matrix. ## Development setup ```bash -python -m pip install jsonschema pytest backtrader +python -m pip install backtrader pandas jsonschema pytest python -m pytest tests -q -p no:cacheprovider python scripts/audit_independence.py python scripts/doctor.py python scripts/run_acceptance.py ``` +The generated runner imports `pandas` at module load (the Pandas adapters and +the canonical feed assembly path need it). `pip install backtrader` does not +always pull pandas, so install it explicitly. + The tests and acceptance matrix need a Backtrader engine root: a directory containing `backtrader/__init__.py` and `backtrader/version.py`. It is resolved automatically; set `BACKTRADER_AGENT_ACCEPTANCE_ENGINE_ROOT` explicitly if diff --git a/manifest.json b/manifest.json index da5c494..34807ce 100644 --- a/manifest.json +++ b/manifest.json @@ -11,10 +11,10 @@ }, "file_count": 83, "files": { - ".github/workflows/ci.yml": "6302fab404e75c328c498d3262fde2b30532604e65cfc9c8a6357765518cf63c", + ".github/workflows/ci.yml": "6cc6c60d4dfdc25a0a5556848d15d9907b17654c55f58201f0b9a46bb099cebd", ".gitignore": "98ac0ab908af609455bbb67746d9b94458f7b774efb527202326092563bf6bd9", "CHANGELOG.md": "30e3601b82b87d40f404512b047f042be568c86ddde1a1b03210cee0a0df69b9", - "CONTRIBUTING.md": "bc9a14321635f6e6c3640ffc8110bb19e2965e0ad13f7ade4db5d3928d2f6988", + "CONTRIBUTING.md": "4c347e92238e6dab1004f409e9d33211b566fcf094fd4ed0ecd1575278852516", "IMPLEMENTATION_REPORT.md": "9f11790327e659f2eeb21c4b7e850596a9202eb94643df680c29b4f8766df9ec", "LICENSE": "378db8314110649fdd9519398a5df044a29d16778507be92acfec025eaac00a2", "README.md": "fec024581eb6dc17216db5a66f1b42dbebf6054e87ce334af9235f7ae57f50b8", @@ -32,7 +32,7 @@ "examples/data-spec.json": "f4c17999064a8cee343c2787d198415df8e55bc70fa04868db98569410ff3f2a", "examples/prices.csv": "318139d3c007bab30b644a3b3401688115bdad96c6380242e1a7a0bb174a215d", "examples/strategy-spec.json": "8b1393d222317e1defffb979b82cc427c09e54a1dd28b702c9ff83ed28bb4376", - "pyproject.toml": "87c58c8a7db93577589aecd6a7f2ca1f0215df742d1b361a50b4057730323b81", + "pyproject.toml": "c3490971d379c677defbbd8ccd0fa7a31709f59ebc1a7721559e33357e037bcd", "references/current-fork-rules.md": "a9d16e34d24a64aedf3d0651e2a8de99518559a5a66d1795c52c7833c60404fe", "references/security-and-approval.md": "b0699049790471b75a96745f6d8d183e3ed62d51f9480cb91424870532722011", "references/workflow.md": "7acef775a6b424ac5009a5a05512b7a2963b55ef18eae2abe64615928ddbc78b", diff --git a/pyproject.toml b/pyproject.toml index e1a3b1d..6f61459 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ authors = [{ name = "cloudQuant" }] dependencies = [] [project.optional-dependencies] -test = ["jsonschema>=4", "pytest>=7"] +test = ["jsonschema>=4", "pytest>=7", "pandas>=1.0"] [project.scripts] backtrader-agent = "backtrader_agent.cli:main" From fc64664d5a2657e50ffb0a824efefe93bb6dbe2c Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 21:19:35 +0800 Subject: [PATCH 5/6] fix(runner): drop RLIMIT_AS so numpy/OpenBLAS imports survive on Linux CI failed on Linux with BTAG-RUN-FAILED while macOS passed. Root cause: RLIMIT_AS=2GB was applied on Linux (where setrlimit succeeds) but not on macOS (where setrlimit raises and is swallowed). Scientific-Python BLAS libraries (numpy/OpenBLAS) reserve large virtual regions on Linux that exceed a fixed address-space budget while resident memory stays small, so the controlled child was killed on import. Reproduced as OS-specific (macOS venv with the same PyPI backtrader+pandas passes). Drop RLIMIT_AS; keep RLIMIT_CPU and RLIMIT_FSIZE. The wall-clock timeout and RLIMIT_CPU remain the real runaway guards. This is defense in depth, not an OS sandbox (unchanged disclaimer). Regenerate distribution manifests. --- manifest.json | 4 ++-- .../resources/distribution-manifest.json | 2 +- src/backtrader_agent/runner.py | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index 34807ce..c098a5b 100644 --- a/manifest.json +++ b/manifest.json @@ -75,10 +75,10 @@ "src/backtrader_agent/resources/contracts/run-result-v1.schema.json": "369ab5a76a438b63ad4d5c1aa9f3159891fad2657e5bbbb4b873a53f0481d686", "src/backtrader_agent/resources/contracts/strategy-spec-v1.schema.json": "70b46aa52ec32d501571e792aa8035d34235ba51a902405de8c0312e590b0bc7", "src/backtrader_agent/resources/contracts/validation-report-v1.schema.json": "035ac9a04f6cff0abfcc9156614842332327bf7b861710a9753a3b31174b7366", - "src/backtrader_agent/resources/distribution-manifest.json": "a6650349b14aefd4135601643393d3cfa6126646ccc3fdfb058c0735d12596c4", + "src/backtrader_agent/resources/distribution-manifest.json": "1afb9bbb27cca2329a33fcd58b50fa822cc8dd7b5f28caea8ac5e8b02ab67e3c", "src/backtrader_agent/resources/policies/comparison-profile-v1.json": "877f3a768c695ee848c499defaea482373aba8e8d6d9e0107ad46943d528e970", "src/backtrader_agent/roots.py": "872a2cc895a798b2926ca41cab17be5863005240c673e61121b100d9444d68e1", - "src/backtrader_agent/runner.py": "ada365d1479f36d1d1fac0b065eee9d67d0a95fa6a023db375babe1fd636d4e8", + "src/backtrader_agent/runner.py": "c6865b24459bfe0656867560f4827d8bb7147b24ab0383e297b1551eaa2a14eb", "src/backtrader_agent/scaffold.py": "b3c07d02a9ff6a45776af46aa992deb6729a8851d332908a0a7b432ad0a815f7", "src/backtrader_agent/sessions.py": "7850a1134742f32f904a1608e67a77e504c3a001f4f81a29130ad8fa711d2539", "src/backtrader_agent/tokens.py": "331847558f8b0ae92ff92f6c9458d1aad16220176d552187f31395ae1d3bd37b", diff --git a/src/backtrader_agent/resources/distribution-manifest.json b/src/backtrader_agent/resources/distribution-manifest.json index 402a24a..d3b3dfe 100644 --- a/src/backtrader_agent/resources/distribution-manifest.json +++ b/src/backtrader_agent/resources/distribution-manifest.json @@ -41,7 +41,7 @@ "resources/contracts/validation-report-v1.schema.json": "035ac9a04f6cff0abfcc9156614842332327bf7b861710a9753a3b31174b7366", "resources/policies/comparison-profile-v1.json": "877f3a768c695ee848c499defaea482373aba8e8d6d9e0107ad46943d528e970", "roots.py": "872a2cc895a798b2926ca41cab17be5863005240c673e61121b100d9444d68e1", - "runner.py": "ada365d1479f36d1d1fac0b065eee9d67d0a95fa6a023db375babe1fd636d4e8", + "runner.py": "c6865b24459bfe0656867560f4827d8bb7147b24ab0383e297b1551eaa2a14eb", "scaffold.py": "b3c07d02a9ff6a45776af46aa992deb6729a8851d332908a0a7b432ad0a815f7", "sessions.py": "7850a1134742f32f904a1608e67a77e504c3a001f4f81a29130ad8fa711d2539", "tokens.py": "331847558f8b0ae92ff92f6c9458d1aad16220176d552187f31395ae1d3bd37b", diff --git a/src/backtrader_agent/runner.py b/src/backtrader_agent/runner.py index a69b309..c845d50 100644 --- a/src/backtrader_agent/runner.py +++ b/src/backtrader_agent/runner.py @@ -69,10 +69,15 @@ def set_limits() -> None: try: import resource + # CPU time and file-size limits are reliable POSIX guards. The + # address-space limit (RLIMIT_AS) is intentionally NOT applied: + # scientific-Python BLAS libraries (numpy/OpenBLAS) reserve large + # virtual regions on Linux that exceed any fixed AS budget while + # resident memory stays small, producing false BTAG-RUN-FAILED + # kills. The wall-clock timeout and RLIMIT_CPU remain the real + # runaway guards; this is defense in depth, not an OS sandbox. resource.setrlimit(resource.RLIMIT_CPU, (timeout_seconds + 2, timeout_seconds + 2)) resource.setrlimit(resource.RLIMIT_FSIZE, (16 * 1024 * 1024, 16 * 1024 * 1024)) - address_limit = 2 * 1024 * 1024 * 1024 - resource.setrlimit(resource.RLIMIT_AS, (address_limit, address_limit)) except (ImportError, OSError, ValueError): # The command remains allowlisted and timeout-bound where a specific # POSIX resource limit is unavailable. From 43f14255d9b889fe984b6409525f2248976f0ceb Mon Sep 17 00:00:00 2001 From: cloudQuant Date: Sat, 1 Aug 2026 21:58:04 +0800 Subject: [PATCH 6/6] fix(tests): oscillate fixture data and install wheel build deps for CI Two remaining CI failures on stock Backtrader 1.9.78 (the fork 1.3.0 hid both): - multi_indicator_system raised ZeroDivisionError in RSI's _once_op: the price fixture was strictly monotonic (close = 100 + index), so RSI's average loss was zero and stock Backtrader divided by zero in runonce. Oscillate the fixture (alternating up/down bars around the trend) so RSI has non-zero average loss; more realistic and version-agnostic. - test_built_wheel_* failed with "invalid command 'bdist_wheel'" on Python 3.12: the wheel test builds with --no-build-isolation, which needs setuptools+wheel in the env. setup-python bundles them on 3.9/3.11 but not 3.12. Install setuptools+wheel explicitly in CI and CONTRIBUTING. Validated: full suite (59 tests) passes on stock Backtrader 1.9.78 in a clean venv. Regenerate distribution manifest. --- .github/workflows/ci.yml | 2 +- CONTRIBUTING.md | 6 ++++-- manifest.json | 6 +++--- tests/helpers.py | 5 ++++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3eadd11..2631edc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install backtrader pandas jsonschema pytest + pip install backtrader pandas jsonschema pytest setuptools wheel - name: Resolve Backtrader engine root run: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b782e00..4a7f396 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,7 +7,7 @@ model, the content-addressed manifests, and the reproducible acceptance matrix. ## Development setup ```bash -python -m pip install backtrader pandas jsonschema pytest +python -m pip install backtrader pandas jsonschema pytest setuptools wheel python -m pytest tests -q -p no:cacheprovider python scripts/audit_independence.py python scripts/doctor.py @@ -16,7 +16,9 @@ python scripts/run_acceptance.py The generated runner imports `pandas` at module load (the Pandas adapters and the canonical feed assembly path need it). `pip install backtrader` does not -always pull pandas, so install it explicitly. +always pull pandas, so install it explicitly. The wheel-distribution test +builds with `--no-build-isolation`, so `setuptools` and `wheel` must be present +in the environment. The tests and acceptance matrix need a Backtrader engine root: a directory containing `backtrader/__init__.py` and `backtrader/version.py`. It is resolved diff --git a/manifest.json b/manifest.json index c098a5b..420ed59 100644 --- a/manifest.json +++ b/manifest.json @@ -11,10 +11,10 @@ }, "file_count": 83, "files": { - ".github/workflows/ci.yml": "6cc6c60d4dfdc25a0a5556848d15d9907b17654c55f58201f0b9a46bb099cebd", + ".github/workflows/ci.yml": "18d092f6bdd9f4e5ac9c13b4f56dbc28f5660922b6cdf206a19cdf1e5055c1d2", ".gitignore": "98ac0ab908af609455bbb67746d9b94458f7b774efb527202326092563bf6bd9", "CHANGELOG.md": "30e3601b82b87d40f404512b047f042be568c86ddde1a1b03210cee0a0df69b9", - "CONTRIBUTING.md": "4c347e92238e6dab1004f409e9d33211b566fcf094fd4ed0ecd1575278852516", + "CONTRIBUTING.md": "0a060c0c55995047c12c334004820b6ecbe06d6c70d018e28264acc632628908", "IMPLEMENTATION_REPORT.md": "9f11790327e659f2eeb21c4b7e850596a9202eb94643df680c29b4f8766df9ec", "LICENSE": "378db8314110649fdd9519398a5df044a29d16778507be92acfec025eaac00a2", "README.md": "fec024581eb6dc17216db5a66f1b42dbebf6054e87ce334af9235f7ae57f50b8", @@ -84,7 +84,7 @@ "src/backtrader_agent/tokens.py": "331847558f8b0ae92ff92f6c9458d1aad16220176d552187f31395ae1d3bd37b", "src/backtrader_agent/validator.py": "283269b50f73c227c14ef665c8414dce6f4526779d9970eae14e3d640a85add4", "tests/conftest.py": "e32f8751872738468bec8c6d54ccc0092505189569f40d85b13c1526d6b25f03", - "tests/helpers.py": "c021ce2086731e915a5399d752d886d7ebe8c6c12c127ebb0cc76e5c4c498e21", + "tests/helpers.py": "687fe05a0d1992693d5c2dc052f159ffeb55c28057c23269b6479d98c3c44d5b", "tests/test_catalog_snapshot.py": "84bf3491af63bbd224d33758ce46cd380412177f5da90f7566ac15709d95bdc6", "tests/test_cli_extended_actions.py": "25eac8bb4aac04ad0d7c3c3133e4733285660cf1e69a014381f393c078ed4b83", "tests/test_cli_workflow.py": "8ce3804a170e458d395a1f85c15fd6f3ee8c65997031751dabdb3c32039aa272", diff --git a/tests/helpers.py b/tests/helpers.py index 8516359..ad93c58 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -133,7 +133,10 @@ def write_adapter_price_csv( start = datetime(2024, 1, 1, tzinfo=timezone.utc) for index in range(rows): timestamp = start + timedelta(days=index) - close = 100.0 + price_offset + index + # Oscillate around an upward trend so both up and down bar-to-bar + # moves exist. Strictly monotonic data makes RSI's average loss zero + # and divides by zero on stock Backtrader (the fork tolerates it). + close = 100.0 + price_offset + index + (4.0 if index % 2 == 0 else -3.0) date_values = { "generic_csv": timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"), "backtrader_csv": timestamp.strftime("%Y-%m-%d"),