مواد پر جائیں
لائبریری کی تمام دستاویزات

ٹریڈنگ اسٹریٹیجیز میں LEAN برابری کا آڈٹ

کوڈ Machine Learning for Trading

خلاصہ

یہ نوٹ بک حقیقی اسٹریٹیجی کے محفوظ شدہ رنز کا مماثل ML4T بیک ٹیسٹ پروفائلز سے موازنہ کرنے والے آڈٹ میں سے LEAN انجن کے نتائج الگ کرتی ہے۔ یہ چار معاون کاموں کی نشاندہی کرتی ہے: ETF کی سرمایہ تقسیم، کرپٹو پرپیچوئلز فنڈنگ، USD میں قیمت شدہ FX کی سرمایہ تقسیم، اور US ایکویٹی پینل۔ منجمد CME فیوچرز بنڈل خارج ہے کیونکہ متعلقہ مقامی LEAN سبسکرپشن بنانے کے لیے اسے تاریخ وار کنٹریکٹ چین اور رول میپ درکار ہے، جو اس میں موجود نہیں۔ موازنہ فلز، قیمت بندی، ٹائم اسٹیمپ کی مطابقت، ایکویٹی اور آخری قدر کے فرق، اور منفی کنٹرول کی شناخت رپورٹ کرتا ہے۔

الگ ٹائمنگ حصہ صرف انجن کال ناپتا ہے؛ اس میں وارم اپ اور عمل سے الگ نمونے شامل ہیں، جبکہ ڈیٹا لوڈنگ، انفرنس، تیاری اور رپورٹنگ ناپے گئے وقفے سے باہر ہیں۔ نوٹ بک واضح کرتی ہے کہ ٹائمنگ کے نتائج صرف اس آڈٹ میں مقررہ ورژنز، ڈیٹا بنڈلز اور حدود تک ہیں۔ یہ مصنوعی دباؤ کے نتائج کو حقیقی اسٹریٹیجی کی برابری سے الگ بھی رکھتی ہے۔ فراہم کردہ متن معاون سطروں کے کامیاب اسٹیٹس چیکس دکھاتا ہے مگر آڈٹ کی اصل قدریں شامل نہیں کرتا، اس لیے یہ کارکردگی کا کوئی وسیع تر دعویٰ ثابت نہیں کرتا۔

اہم خیالات

  • برابری کا آڈٹ مشترک منجمد ان پٹس سے محفوظ شدہ LEAN نتائج کا مماثل بیک ٹیسٹ پروفائلز سے موازنہ کرتا ہے۔
  • فراہم کردہ بنڈل اس موازنے کے لیے ETF، کرپٹو پرپیچوئلز، USD میں قیمت شدہ FX اور US ایکویٹی کاموں کی تائید کرتا ہے۔
  • CME فیوچرز کا کام خارج ہے کیونکہ بنڈل میں تاریخ وار کنٹریکٹس اور رول میپ موجود نہیں۔
  • برابری کا جائزہ فلز، قیمت بندی اور ٹائم اسٹیمپس، ایکویٹی کے فرق، آخری قدر اور منفی کنٹرول کی شناخت سے لیا جاتا ہے۔
  • صرف انجن کی ٹائمنگ میں طریقۂ کار کے آس پاس کے مراحل شامل نہیں اور یہ مخصوص ورژنز اور بنڈلز تک محدود ہے۔

ٹیگز

مکمل متن
# 15_lean_engine_parity.py


```py
# ---
# jupyter:
#   jupytext:
#     cell_metadata_filter: tags,-all
#     text_representation:
#       extension: .py
#       format_name: percent
#       format_version: '1.3'
#       jupytext_version: 1.19.3
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# %% [markdown]
# # LEAN Parity on Current Case-Study Strategies
#
# This notebook isolates the LEAN rows from the current real-strategy audit. It uses retained results
# generated by the native LEAN engine and the matching ML4T Backtest profiles. The shared inputs are
# frozen before engine execution.
#
# **Learning objectives**
#
# - Identify which selected asset classes are valid LEAN comparisons
# - Read LEAN parity across fills, valuations, and terminal value
# - Interpret LEAN engine-only timing on the measured strategies
# - Keep synthetic stress evidence separate from real-strategy equivalence
#
# **Book reference**: Chapter 16, Section 16.3

# %% [markdown]
# ## Setup

# %%
"""Current LEAN parity evidence."""

import json

import polars as pl
from IPython.display import Markdown, display

from utils.paths import get_chapter_dir

# %% tags=["parameters"]
# Production defaults - Papermill injects overrides after this cell
ROUND_SECONDS = 3

# %% tags=["results"]
AUDIT_PATH = get_chapter_dir(16) / "resources" / "framework_parity_audit.json"
audit = json.loads(AUDIT_PATH.read_text(encoding="utf-8"))
lean = audit["frameworks"]["lean"]
LEAN_NAME = f"{lean['display_name']} {lean['version']}"
CASE_NAMES = {
    "etfs": "ETF allocation",
    "cme_futures": "CME futures",
    "crypto_perps_funding": "Crypto perpetual funding",
    "fx_pairs": "FX allocation (USD-quoted pairs)",
    "us_equities_panel": "US equity panel",
}

# %% tags=["results"]
display(Markdown(f"**Pinned engine:** {LEAN_NAME} with ML4T profile `{lean['profile']}`"))

# %% [markdown]
# ## 1. Supported real strategies
#
# LEAN is required for the ETF, crypto-perpetual, USD-quoted foreign-exchange, and US equity-panel
# workloads. The CME row is unsupported for this particular frozen bundle: it contains continuous
# root prices but lacks the dated contract chain and roll map needed to construct a native LEAN
# futures subscription.

# %% tags=["results"]
lean_results = (
    pl.DataFrame(audit["real_strategy_records"])
    .filter(pl.col("framework") == "lean")
    .with_columns(pl.col("case_study").replace_strict(CASE_NAMES).alias("strategy"))
    .select(
        "strategy",
        "status",
        "fills",
        "valuations",
        "valuation_timestamps_match",
        "equity_gap",
        "equity_raw_gap",
        "terminal_gap",
        "terminal_raw_gap",
        "negative_control_detected",
    )
)

assert lean_results.height == 4
assert lean_results["status"].to_list() == ["pass"] * 4
assert lean_results["valuation_timestamps_match"].all()
assert lean_results["negative_control_detected"].all()

display(lean_results)

# %% tags=["results"]
lean_unsupported = (
    pl.DataFrame(audit["unsupported_records"])
    .filter(pl.col("framework") == "lean")
    .with_columns(pl.col("case_study").replace_strict(CASE_NAMES).alias("strategy"))
    .select("strategy", "reason")
)
display(lean_unsupported)

# %% [markdown]
# The table reports the complete fill and valuation counts for each supported workload. LEAN uses
# native equity, crypto-future, and foreign-exchange securities. The audit does not convert the
# continuous CME roots into a different instrument merely to add a LEAN row.

# %% [markdown]
# ## 2. Engine-only timing
#
# The timer starts immediately before the engine call and stops when it returns. One warmup and ten
# process-isolated samples are used. Input loading, model inference, target construction, adapter
# preparation, result extraction, and reporting are outside the timed region.

# %% tags=["results"]
lean_timing = (
    pl.DataFrame(audit["performance_records"])
    .filter(pl.col("framework") == "lean")
    .with_columns(
        pl.col("case_study").replace_strict(CASE_NAMES).alias("strategy"),
        pl.col("framework_median_seconds").round(ROUND_SECONDS).alias("lean_seconds"),
        pl.col("ml4t_median_seconds").round(ROUND_SECONDS).alias("ml4t_seconds"),
        pl.col("framework_to_ml4t_ratio").round(2).alias("lean_div_ml4t"),
    )
    .select("strategy", "lean_seconds", "ml4t_seconds", "lean_div_ml4t")
)
display(lean_timing)

# %% [markdown]
# The timing result applies to these pinned versions, bundles, and engine boundaries. It is not a
# general LEAN performance claim.

# %% [markdown]
# ## 3. Synthetic stress remains diagnostic

# %% tags=["results"]
lean_stress = (
    pl.DataFrame(audit["synthetic_stress"]["records"])
    .filter(pl.col("framework") == "lean")
    .select("intents", "fills", "trades", "terminal_value", "status")
)
display(lean_stress)

# %% [markdown]
# The retained stress row tests scale and the calibrated LEAN profile on generated inputs. The
# supported rows above provide the real-data evidence.

```

ماخذ کا حوالہ دیتے ہوئے مکمل متن دکھایا گیا ہے، ماخذ کے لائسنس کے تحت۔ لائسنس: MIT

یہ خلاصہ اصل ماخذ سے Stratmill کے تحقیقی ایجنٹ نے لکھا ہے؛ یہ ماخذ کی نقل نہیں۔